From fc0ec902675974de15995d74be2343a555018c33 Mon Sep 17 00:00:00 2001 From: Aaron Coburn Date: Fri, 5 May 2023 14:09:25 -0400 Subject: [PATCH 1/3] JCL-337: Serialize expiration date as an ISO 8601 string --- .../com/inrupt/client/accessgrant/AccessGrantClient.java | 9 +++++++-- .../inrupt/client/accessgrant/MockAccessGrantServer.java | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/access-grant/src/main/java/com/inrupt/client/accessgrant/AccessGrantClient.java b/access-grant/src/main/java/com/inrupt/client/accessgrant/AccessGrantClient.java index b44272fe8a9..77a4ff98825 100644 --- a/access-grant/src/main/java/com/inrupt/client/accessgrant/AccessGrantClient.java +++ b/access-grant/src/main/java/com/inrupt/client/accessgrant/AccessGrantClient.java @@ -53,6 +53,9 @@ import java.util.concurrent.CompletionStage; import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * A client for interacting with and managing Access Grant Resources. * @@ -77,6 +80,8 @@ */ public class AccessGrantClient { + private static final Logger LOGGER = LoggerFactory.getLogger(AccessGrantClient.class); + private static final String CONTEXT = "@context"; private static final String VC_CONTEXT_URI = "https://www.w3.org/2018/credentials/v1"; private static final String INRUPT_CONTEXT_URI = "https://schema.inrupt.com/credentials/v1.jsonld"; @@ -530,7 +535,7 @@ static Map buildAccessGrantv1(final URI agent, final Set re final Map credential = new HashMap<>(); credential.put(CONTEXT, Arrays.asList(VC_CONTEXT_URI, INRUPT_CONTEXT_URI)); - credential.put("expirationDate", expiration); + credential.put("expirationDate", expiration.toString()); credential.put(CREDENTIAL_SUBJECT, subject); final Map data = new HashMap<>(); @@ -554,7 +559,7 @@ static Map buildAccessRequestv1(final URI agent, final Set final Map credential = new HashMap<>(); credential.put(CONTEXT, Arrays.asList(VC_CONTEXT_URI, INRUPT_CONTEXT_URI)); - credential.put("expirationDate", expiration); + credential.put("expirationDate", expiration.toString()); credential.put(CREDENTIAL_SUBJECT, subject); final Map data = new HashMap<>(); diff --git a/access-grant/src/test/java/com/inrupt/client/accessgrant/MockAccessGrantServer.java b/access-grant/src/test/java/com/inrupt/client/accessgrant/MockAccessGrantServer.java index a37e4139e36..064efe4f802 100644 --- a/access-grant/src/test/java/com/inrupt/client/accessgrant/MockAccessGrantServer.java +++ b/access-grant/src/test/java/com/inrupt/client/accessgrant/MockAccessGrantServer.java @@ -155,6 +155,7 @@ private void setupMocks() { .atPriority(1) .withHeader("Authorization", containing("Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.")) .withRequestBody(containing("\"providedConsent\"")) + .withRequestBody(containing("\"2022-08-27")) .willReturn(aResponse() .withStatus(200) .withHeader("Content-Type", "application/json") @@ -164,6 +165,7 @@ private void setupMocks() { .atPriority(1) .withHeader("Authorization", containing("Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.")) .withRequestBody(containing("\"hasConsent\"")) + .withRequestBody(containing("\"2022-08-27")) .willReturn(aResponse() .withStatus(200) .withHeader("Content-Type", "application/json") From 55edf7e41ef0910cdfc24eab789e71dc5352e04a Mon Sep 17 00:00:00 2001 From: Aaron Coburn Date: Fri, 5 May 2023 15:54:06 -0400 Subject: [PATCH 2/3] Use correct identifier for access grant revocation --- .../java/com/inrupt/client/accessgrant/AccessGrantClient.java | 2 +- .../com/inrupt/client/accessgrant/MockAccessGrantServer.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/access-grant/src/main/java/com/inrupt/client/accessgrant/AccessGrantClient.java b/access-grant/src/main/java/com/inrupt/client/accessgrant/AccessGrantClient.java index 77a4ff98825..1dd211c2e9e 100644 --- a/access-grant/src/main/java/com/inrupt/client/accessgrant/AccessGrantClient.java +++ b/access-grant/src/main/java/com/inrupt/client/accessgrant/AccessGrantClient.java @@ -298,7 +298,7 @@ public CompletionStage revoke(final AccessGrant accessGrant) { credentialStatus.put("status", Integer.toString(status.getIndex())); final Map data = new HashMap<>(); - data.put("credentialId", status.getIdentifier()); + data.put("credentialId", accessGrant.getIdentifier()); data.put("credentialStatus", Arrays.asList(credentialStatus)); final Request req = Request.newBuilder(metadata.statusEndpoint) diff --git a/access-grant/src/test/java/com/inrupt/client/accessgrant/MockAccessGrantServer.java b/access-grant/src/test/java/com/inrupt/client/accessgrant/MockAccessGrantServer.java index 064efe4f802..d48ac30d425 100644 --- a/access-grant/src/test/java/com/inrupt/client/accessgrant/MockAccessGrantServer.java +++ b/access-grant/src/test/java/com/inrupt/client/accessgrant/MockAccessGrantServer.java @@ -180,14 +180,14 @@ private void setupMocks() { wireMockServer.stubFor(post(urlEqualTo("/status")) .atPriority(1) .withHeader("Authorization", containing("Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.")) - .withRequestBody(containing("\"https://accessgrant.example/status/CVAM#2832\"")) + .withRequestBody(containing("\"" + wireMockServer.baseUrl() + "/access-grant-1\"")) .willReturn(aResponse() .withStatus(204))); wireMockServer.stubFor(post(urlEqualTo("/status")) .atPriority(1) .withHeader("Authorization", containing("Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.")) - .withRequestBody(containing("\"https://accessgrant.example/status/CVAM#2833\"")) + .withRequestBody(containing("\"" + wireMockServer.baseUrl() + "/access-grant-2\"")) .willReturn(aResponse() .withStatus(403))); From abe7aa81996ae557070c5584cb8379ca0b03180b Mon Sep 17 00:00:00 2001 From: Timea Turdean <4144203+timea-solid@users.noreply.github.com> Date: Mon, 8 May 2023 11:31:06 +0200 Subject: [PATCH 3/3] fixed status access grant intergration tests --- .../client/integration/base/MockAccessGrantServer.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/integration/base/src/main/java/com/inrupt/client/integration/base/MockAccessGrantServer.java b/integration/base/src/main/java/com/inrupt/client/integration/base/MockAccessGrantServer.java index 9801b82a984..c6449537364 100644 --- a/integration/base/src/main/java/com/inrupt/client/integration/base/MockAccessGrantServer.java +++ b/integration/base/src/main/java/com/inrupt/client/integration/base/MockAccessGrantServer.java @@ -24,6 +24,7 @@ import static java.nio.charset.StandardCharsets.UTF_8; import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.common.ConsoleNotifier; import com.github.tomakehurst.wiremock.core.WireMockConfiguration; import java.io.IOException; @@ -42,7 +43,9 @@ class MockAccessGrantServer { public MockAccessGrantServer(final String webId, final String sharedFile) { this.webId = webId; this.sharedFile = sharedFile; - wireMockServer = new WireMockServer(WireMockConfiguration.options().dynamicPort()); + wireMockServer = new WireMockServer(WireMockConfiguration.options() + .notifier(new ConsoleNotifier(true)) + .dynamicPort()); } private void setupMocks() { @@ -71,7 +74,7 @@ private void setupMocks() { this.webId, this.sharedFile)))); wireMockServer.stubFor(post(urlEqualTo("/status")) - .withRequestBody(containing("\"https://accessgrant.example/status/CVAM#2832\"")) + .withRequestBody(containing("\"RevocationList2020Status\"")) .willReturn(aResponse() .withStatus(Utils.NO_CONTENT)));