Skip to content

Commit 13d7c0f

Browse files
authored
Handle cases where the site doesn't have ID_READER role (#331)
* Handle cases where the side doesn't have ID_READER role * Update test names
1 parent 385ea06 commit 13d7c0f

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

src/main/java/com/uid2/admin/vertx/service/SharingService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import com.uid2.admin.managers.KeysetManager;
1111
import com.uid2.admin.vertx.ResponseUtil;
1212
import com.uid2.shared.Const;
13-
import com.uid2.shared.auth.KeysetSnapshot;
1413
import com.uid2.shared.auth.Role;
1514
import com.uid2.shared.model.ClientType;
1615
import com.uid2.shared.model.SiteUtil;
@@ -180,7 +179,8 @@ private void handleListAllKeysetsRelated(RoutingContext rc) {
180179

181180
// Check if this site has any client key that has an ID_READER role
182181
boolean isIdReaderRole = false;
183-
for (LegacyClientKey c : this.clientKeyProvider.getAll()) {
182+
List<LegacyClientKey> clientKeysForThisSite = this.clientKeyProvider.getAll().stream().filter(legacyClientKey -> legacyClientKey.getSiteId() == siteId).collect(Collectors.toList());
183+
for (LegacyClientKey c : clientKeysForThisSite) {
184184
if (c.getRoles().contains(Role.ID_READER)) {
185185
isIdReaderRole = true;
186186
}

src/test/java/com/uid2/admin/vertx/SharingServiceTest.java

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1365,7 +1365,7 @@ void RelatedKeysetSetsWithSameSiteId(Vertx vertx, VertxTestContext testContext)
13651365
}
13661366

13671367
@Test
1368-
void RelatedKeysetSetsWithAllowSiteNull(Vertx vertx, VertxTestContext testContext) {
1368+
void RelatedKeysetSetsWithIdReader(Vertx vertx, VertxTestContext testContext) {
13691369
fakeAuth(Role.MAINTAINER);
13701370

13711371
AdminKeyset adminKeyset1 = new AdminKeyset(3, 1, "test", Set.of(4), Instant.now().getEpochSecond(),true, true, new HashSet<>());
@@ -1404,4 +1404,45 @@ void RelatedKeysetSetsWithAllowSiteNull(Vertx vertx, VertxTestContext testContex
14041404
testContext.completeNow();
14051405
});
14061406
}
1407+
1408+
@Test
1409+
void RelatedKeysetSetsWithoutIdReader(Vertx vertx, VertxTestContext testContext) {
1410+
fakeAuth(Role.MAINTAINER);
1411+
1412+
AdminKeyset adminKeyset1 = new AdminKeyset(3, 1, "test", Set.of(4), Instant.now().getEpochSecond(), true, true, new HashSet<>());
1413+
AdminKeyset adminKeyset2 = new AdminKeyset(4, 2, "test", Set.of(5), Instant.now().getEpochSecond(), true, true, new HashSet<>());
1414+
AdminKeyset adminKeyset3 = new AdminKeyset(5, 3, "test", null, Instant.now().getEpochSecond(), true, true, new HashSet<>());
1415+
1416+
Map<Integer, AdminKeyset> keysets = new HashMap<Integer, AdminKeyset>() {{
1417+
put(3, adminKeyset1);
1418+
put(4, adminKeyset2);
1419+
put(5, adminKeyset3);
1420+
}};
1421+
1422+
setAdminKeysets(keysets);
1423+
mockSiteExistence(1, 2, 3, 4, 5, 8);
1424+
doReturn(new Site(8, "test-name", true, null)).when(siteProvider).getSite(8);
1425+
setClientKeys(
1426+
new ClientKeyServiceTest.LegacyClientBuilder()
1427+
.withRoles(new HashSet<>(Arrays.asList(Role.ID_READER)))
1428+
.withSiteId(3)
1429+
.build());
1430+
1431+
1432+
get(vertx, testContext, "/api/sharing/keysets/related?site_id=8", response -> {
1433+
assertEquals(200, response.statusCode());
1434+
1435+
Set<Integer> expectedKeysetIds = new HashSet<>(Arrays.asList(adminKeyset3.getKeysetId()));
1436+
1437+
Set<Integer> actualKeysetIds = new HashSet<>();
1438+
JsonArray responseArray = response.bodyAsJsonArray();
1439+
for (int i = 0; i < responseArray.size(); i++) {
1440+
JsonObject item = responseArray.getJsonObject(i);
1441+
int keysetId = item.getInteger("keyset_id");
1442+
actualKeysetIds.add(keysetId);
1443+
}
1444+
assertEquals(false, actualKeysetIds.containsAll(expectedKeysetIds));
1445+
testContext.completeNow();
1446+
});
1447+
}
14071448
}

0 commit comments

Comments
 (0)