Skip to content

Commit

Permalink
Coverage for rewrite queries in paginated aggregated search
Browse files Browse the repository at this point in the history
  • Loading branch information
oharsta committed Nov 27, 2024
1 parent 02dde58 commit 630c856
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 4 deletions.
4 changes: 1 addition & 3 deletions server/src/main/java/access/api/RoleController.java
Original file line number Diff line number Diff line change
Expand Up @@ -248,9 +248,7 @@ private List<Role> roleFromQuery(Page<Map<String, Object>> rolesPage, List<Map<S
null))
.collect(Collectors.toSet());
role.setApplicationUsages(applicationUsages);
} else {
System.out.println("error");
}
}
});
return roles;
}
Expand Down
1 change: 0 additions & 1 deletion server/src/main/java/access/repository/UserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,5 +105,4 @@ default String rewrite(String query, Sort sort) {
return query;
}


}
27 changes: 27 additions & 0 deletions server/src/test/java/access/api/RoleControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,33 @@ void rolesByApplicationSuperUserPagination() throws Exception {
assertEquals(List.of("Calendar","Mail"), roles.stream().map(Role::getName).sorted().toList());
}

@Test
void rolesByApplicationSuperUserPaginationSortUserRoleCount() throws Exception {
//Because the user is changed and provisionings are queried
stubForManagerProvidersByIdIn(EntityType.OIDC10_RP, List.of("5"));
stubForManagerProvidersByIdIn(EntityType.SAML20_SP, List.of("1", "2"));

AccessCookieFilter accessCookieFilter = openIDConnectFlow("/api/v1/users/login", SUPER_SUB);

DefaultPage<Role> page = given()
.when()
.filter(accessCookieFilter.cookieFilter())
.accept(ContentType.JSON)
.header(accessCookieFilter.csrfToken().getHeaderName(), accessCookieFilter.csrfToken().getToken())
.queryParam("force", false)
.queryParam("pageNumber", 2)
.queryParam("pageSize", 2)
.queryParam("sort", "userRoleCount")
.queryParam("sortDirection", Sort.Direction.DESC.name())
.contentType(ContentType.JSON)
.get("/api/v1/roles")
.as(new TypeRef<>() {
});
assertEquals(roleRepository.count(), page.getTotalElements());
List<Role> roles = page.getContent();
assertEquals(1L, roles.getFirst().getUserRoleCount());
}

@Test
void rolesByApplicationSuperUserPaginationMultipleApplications() throws Exception {
//Because the user is changed and provisionings are queried
Expand Down
44 changes: 44 additions & 0 deletions server/src/test/java/access/api/UserControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,27 @@ void searchPaginated() throws Exception {
assertEquals(6, page.getTotalElements());
}

@Test
void searchPaginatedSortedAuthority() throws Exception {
AccessCookieFilter accessCookieFilter = openIDConnectFlow("/api/v1/users/login", SUPER_SUB);

DefaultPage<Map<String, Object>> page = given()
.when()
.filter(accessCookieFilter.cookieFilter())
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.queryParam("query", "exam")
.queryParam("pageNumber", 1)
.queryParam("pageSize", 2)
.queryParam("sort", "authority")
.queryParam("sortDirection", Sort.Direction.DESC.name())
.get("/api/v1/users/search")
.as(new TypeRef<>() {
});
assertEquals(2, page.getContent().size());
assertEquals(6, page.getTotalElements());
}

@Test
void searchByApplication() throws Exception {
//Institution admin is enriched with Manage information
Expand Down Expand Up @@ -374,6 +395,29 @@ void searchAllUsersByApplication() throws Exception {
assertEquals(1, usersPage.getContent().size());
}

@Test
void searchUsersByApplicationSortEndDate() throws Exception {
//Institution admin is enriched with Manage information
super.stubForManageProvidersAllowedByIdP(ORGANISATION_GUID);
AccessCookieFilter accessCookieFilter = openIDConnectFlow("/api/v1/users/login", INSTITUTION_ADMIN_SUB);

DefaultPage<Map<String, Object>> usersPage = given()
.when()
.filter(accessCookieFilter.cookieFilter())
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.queryParam("query", "exam")
.queryParam("pageNumber", 1)
.queryParam("pageSize", 2)
.queryParam("sort", "endDate")
.queryParam("sortDirection", Sort.Direction.DESC.name())
.get("/api/v1/users/search-by-application")
.as(new TypeRef<>() {
});
assertEquals(4, usersPage.getTotalElements());
assertEquals(2, usersPage.getContent().size());
}

@Test
void otherByInstitutionAdmin() throws Exception {
//Institution admin is enriched with Manage information
Expand Down
52 changes: 52 additions & 0 deletions server/src/test/java/access/api/UserRoleControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,58 @@ void searchNonGuestsByPageWithKeyword() throws Exception {
assertEquals(1, ((List<?>) userRoles.get("content")).size());
}

@Test
void searchNonGuestsByPageWithKeywordSortName() throws Exception {
AccessCookieFilter accessCookieFilter = openIDConnectFlow("/api/v1/users/login", INVITER_WIKI_SUB);

Role role = roleRepository.findByName("Wiki").get();
Map<String, Object> userRoles = given()
.when()
.filter(accessCookieFilter.cookieFilter())
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.queryParams(Map.of(
"query", "doe",
"pageNumber", 0,
"pageSize", 1,
"sort", "name",
"sortDirection", Sort.Direction.DESC
))
.pathParams("roleId", role.getId())
.pathParams("guests", false)
.get("/api/v1/user_roles/search/{roleId}/{guests}")
.as(new TypeRef<>() {
});
assertEquals(2, userRoles.get("totalElements"));
assertEquals(1, ((List<?>) userRoles.get("content")).size());
}

@Test
void searchNonGuestsByPageWithKeywordSortSchacHomeOrganization() throws Exception {
AccessCookieFilter accessCookieFilter = openIDConnectFlow("/api/v1/users/login", INVITER_WIKI_SUB);

Role role = roleRepository.findByName("Wiki").get();
Map<String, Object> userRoles = given()
.when()
.filter(accessCookieFilter.cookieFilter())
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.queryParams(Map.of(
"query", "doe",
"pageNumber", 0,
"pageSize", 1,
"sort", "schac_home_organization",
"sortDirection", Sort.Direction.ASC
))
.pathParams("roleId", role.getId())
.pathParams("guests", false)
.get("/api/v1/user_roles/search/{roleId}/{guests}")
.as(new TypeRef<>() {
});
assertEquals(2, userRoles.get("totalElements"));
assertEquals(1, ((List<?>) userRoles.get("content")).size());
}

@Test
void byRoleNotFound() throws Exception {
AccessCookieFilter accessCookieFilter = openIDConnectFlow("/api/v1/users/login", MANAGE_SUB);
Expand Down

0 comments on commit 630c856

Please sign in to comment.