From 9e636e4f8fd13e19231b9b054877d601951e9cde Mon Sep 17 00:00:00 2001 From: Katherine Chen Date: Thu, 8 Aug 2024 13:58:28 +1000 Subject: [PATCH 1/2] Handle cases where the side doesn't have ID_READER role --- .../admin/vertx/service/SharingService.java | 4 +- .../uid2/admin/vertx/SharingServiceTest.java | 43 ++++++++++++++++++- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/uid2/admin/vertx/service/SharingService.java b/src/main/java/com/uid2/admin/vertx/service/SharingService.java index 6fd6466dc..62dc54990 100644 --- a/src/main/java/com/uid2/admin/vertx/service/SharingService.java +++ b/src/main/java/com/uid2/admin/vertx/service/SharingService.java @@ -10,7 +10,6 @@ import com.uid2.admin.managers.KeysetManager; import com.uid2.admin.vertx.ResponseUtil; import com.uid2.shared.Const; -import com.uid2.shared.auth.KeysetSnapshot; import com.uid2.shared.auth.Role; import com.uid2.shared.model.ClientType; import com.uid2.shared.model.SiteUtil; @@ -180,7 +179,8 @@ private void handleListAllKeysetsRelated(RoutingContext rc) { // Check if this site has any client key that has an ID_READER role boolean isIdReaderRole = false; - for (LegacyClientKey c : this.clientKeyProvider.getAll()) { + List clientKeysForThisSite = this.clientKeyProvider.getAll().stream().filter(legacyClientKey -> legacyClientKey.getSiteId() == siteId).collect(Collectors.toList()); + for (LegacyClientKey c : clientKeysForThisSite) { if (c.getRoles().contains(Role.ID_READER)) { isIdReaderRole = true; } diff --git a/src/test/java/com/uid2/admin/vertx/SharingServiceTest.java b/src/test/java/com/uid2/admin/vertx/SharingServiceTest.java index 3c3002de4..126a24f1e 100644 --- a/src/test/java/com/uid2/admin/vertx/SharingServiceTest.java +++ b/src/test/java/com/uid2/admin/vertx/SharingServiceTest.java @@ -1365,7 +1365,7 @@ void RelatedKeysetSetsWithSameSiteId(Vertx vertx, VertxTestContext testContext) } @Test - void RelatedKeysetSetsWithAllowSiteNull(Vertx vertx, VertxTestContext testContext) { + void RelatedKeysetSetsWithIdReaderWithAllowSiteNull(Vertx vertx, VertxTestContext testContext) { fakeAuth(Role.MAINTAINER); 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 testContext.completeNow(); }); } + + @Test + void RelatedKeysetSetsWithoutIdReaderAllowSiteNull(Vertx vertx, VertxTestContext testContext) { + fakeAuth(Role.MAINTAINER); + + AdminKeyset adminKeyset1 = new AdminKeyset(3, 1, "test", Set.of(4), Instant.now().getEpochSecond(), true, true, new HashSet<>()); + AdminKeyset adminKeyset2 = new AdminKeyset(4, 2, "test", Set.of(5), Instant.now().getEpochSecond(), true, true, new HashSet<>()); + AdminKeyset adminKeyset3 = new AdminKeyset(5, 3, "test", null, Instant.now().getEpochSecond(), true, true, new HashSet<>()); + + Map keysets = new HashMap() {{ + put(3, adminKeyset1); + put(4, adminKeyset2); + put(5, adminKeyset3); + }}; + + setAdminKeysets(keysets); + mockSiteExistence(1, 2, 3, 4, 5, 8); + doReturn(new Site(8, "test-name", true, null)).when(siteProvider).getSite(8); + setClientKeys( + new ClientKeyServiceTest.LegacyClientBuilder() + .withRoles(new HashSet<>(Arrays.asList(Role.ID_READER))) + .withSiteId(3) + .build()); + + + get(vertx, testContext, "/api/sharing/keysets/related?site_id=8", response -> { + assertEquals(200, response.statusCode()); + + Set expectedKeysetIds = new HashSet<>(Arrays.asList(adminKeyset3.getKeysetId())); + + Set actualKeysetIds = new HashSet<>(); + JsonArray responseArray = response.bodyAsJsonArray(); + for (int i = 0; i < responseArray.size(); i++) { + JsonObject item = responseArray.getJsonObject(i); + int keysetId = item.getInteger("keyset_id"); + actualKeysetIds.add(keysetId); + } + assertEquals(false, actualKeysetIds.containsAll(expectedKeysetIds)); + testContext.completeNow(); + }); + } } From cfb567b622c7360f539fb3291eaafd8c03236e6c Mon Sep 17 00:00:00 2001 From: Katherine Chen Date: Thu, 8 Aug 2024 14:40:08 +1000 Subject: [PATCH 2/2] Update test names --- src/test/java/com/uid2/admin/vertx/SharingServiceTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/uid2/admin/vertx/SharingServiceTest.java b/src/test/java/com/uid2/admin/vertx/SharingServiceTest.java index 126a24f1e..ed1aa126e 100644 --- a/src/test/java/com/uid2/admin/vertx/SharingServiceTest.java +++ b/src/test/java/com/uid2/admin/vertx/SharingServiceTest.java @@ -1365,7 +1365,7 @@ void RelatedKeysetSetsWithSameSiteId(Vertx vertx, VertxTestContext testContext) } @Test - void RelatedKeysetSetsWithIdReaderWithAllowSiteNull(Vertx vertx, VertxTestContext testContext) { + void RelatedKeysetSetsWithIdReader(Vertx vertx, VertxTestContext testContext) { fakeAuth(Role.MAINTAINER); AdminKeyset adminKeyset1 = new AdminKeyset(3, 1, "test", Set.of(4), Instant.now().getEpochSecond(),true, true, new HashSet<>()); @@ -1406,7 +1406,7 @@ void RelatedKeysetSetsWithIdReaderWithAllowSiteNull(Vertx vertx, VertxTestContex } @Test - void RelatedKeysetSetsWithoutIdReaderAllowSiteNull(Vertx vertx, VertxTestContext testContext) { + void RelatedKeysetSetsWithoutIdReader(Vertx vertx, VertxTestContext testContext) { fakeAuth(Role.MAINTAINER); AdminKeyset adminKeyset1 = new AdminKeyset(3, 1, "test", Set.of(4), Instant.now().getEpochSecond(), true, true, new HashSet<>());