Skip to content

Commit 2a2491f

Browse files
committed
Additional test for #642
1 parent 99c4753 commit 2a2491f

1 file changed

Lines changed: 43 additions & 3 deletions

File tree

server/src/test/java/invite/api/RoleControllerTest.java

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -790,8 +790,6 @@ void createWithLegacyToken() throws Exception {
790790
@Test
791791
@SuppressWarnings("unchecked")
792792
void updateDisplayNameScimProvivisiong() throws Exception {
793-
//Because the user is changed and provisionings are queried
794-
stubForManageProvisioning(List.of("4"));
795793
AccessCookieFilter accessCookieFilter = openIDConnectFlow("/api/v1/users/login", SUPER_SUB);
796794

797795
super.stubForManagerProvidersByIdIn(EntityType.SAML20_SP, List.of("4"));
@@ -828,14 +826,56 @@ void updateDisplayNameScimProvivisiong() throws Exception {
828826
//GroupRequest can not be deserialized from String due to missing constructors and setters
829827
Map<String, Object> groupRequest = objectMapper.readValue(serveEvent.getRequest().getBodyAsString(), new TypeReference<>() {
830828
}) ;
831-
System.out.println(groupRequest);
832829
List<Map<String, String>> operations = (List<Map<String, String>>) groupRequest.get("Operations");
833830
Map<String, String> operation = operations.getFirst();
834831
assertEquals("replace", operation.get("op"));
835832
assertEquals("displayName", operation.get("path"));
836833
assertEquals("changed", operation.get("value"));
837834
}
838835

836+
@Test
837+
@SuppressWarnings("unchecked")
838+
void updateDisplayNameScimProvivisiongPut() throws Exception {
839+
AccessCookieFilter accessCookieFilter = openIDConnectFlow("/api/v1/users/login", SUPER_SUB);
840+
841+
super.stubForManagerProvidersByIdIn(EntityType.SAML20_SP, List.of("1"));
842+
super.stubForManageProvisioning(List.of("1"));
843+
844+
Role roleDB = roleRepository.search("wiki", 1).get(0);
845+
roleDB.setName("changed");
846+
847+
//Ensure update provisioning is done
848+
remoteProvisionedGroupRepository.save(new RemoteProvisionedGroup(roleDB, UUID.randomUUID().toString(), "7"));
849+
//Prevent new user POST provisionings
850+
List<UserRole> userRoles = userRoleRepository.findByRole(roleDB);
851+
userRoles.forEach(userRole -> {
852+
remoteProvisionedUserRepository.save(new RemoteProvisionedUser(userRole.getUser(), UUID.randomUUID().toString(), "7"));
853+
});
854+
855+
//There will be a PUT request, with the full member content and the changed displayName
856+
super.stubForUpdateScimRole();
857+
Role updated = given()
858+
.when()
859+
.filter(accessCookieFilter.cookieFilter())
860+
.accept(ContentType.JSON)
861+
.header(accessCookieFilter.csrfToken().getHeaderName(), accessCookieFilter.csrfToken().getToken())
862+
.contentType(ContentType.JSON)
863+
.body(roleDB)
864+
.put("/api/v1/roles")
865+
.as(Role.class);
866+
assertEquals("changed", updated.getName());
867+
868+
List<ServeEvent> serveEvents = getAllServeEvents();
869+
ServeEvent serveEvent = serveEvents.stream()
870+
.filter(event -> event.getRequest().getUrl().startsWith("/api/scim/v2/Groups"))
871+
.findFirst().orElseThrow(() -> new NotFoundException("No Group patch request found"));
872+
//GroupRequest can not be deserialized from String due to missing constructors and setters
873+
Map<String, Object> groupRequest = objectMapper.readValue(serveEvent.getRequest().getBodyAsString(), new TypeReference<>() {
874+
}) ;
875+
assertEquals("changed", groupRequest.get("displayName"));
876+
assertEquals(userRoles.size(), ((List<Map<String, String>>) groupRequest.get("members")).size());
877+
}
878+
839879
private Role roleByName(String name, List<Role> roles) {
840880
return roles.stream().filter(role -> role.getName().equalsIgnoreCase(name)).findFirst().orElseThrow(IllegalArgumentException::new);
841881
}

0 commit comments

Comments
 (0)