Skip to content

Commit c396c0e

Browse files
committed
Add tests
1 parent e4dc9a7 commit c396c0e

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed

access-grant/src/main/java/com/inrupt/client/accessgrant/AccessRequest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,15 @@ public Instant getIssuedAt() {
221221
return issuedAt;
222222
}
223223

224+
/**
225+
* Create a new {@link RequestParameters} builder.
226+
*
227+
* @return the new builder
228+
*/
229+
public static Builder newBuilder() {
230+
return new Builder();
231+
}
232+
224233
/**
225234
* A class for building access request parameters.
226235
*/

access-grant/src/test/java/com/inrupt/client/accessgrant/AccessGrantClientTest.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,40 @@ void testIssueRequest() {
340340
assertEquals(resources, request.getResources());
341341
}
342342

343+
@Test
344+
void testIssueRequestBuilder() {
345+
final Map<String, Object> claims = new HashMap<>();
346+
claims.put("webid", WEBID);
347+
claims.put("sub", SUB);
348+
claims.put("iss", ISS);
349+
claims.put("azp", AZP);
350+
final String token = generateIdToken(claims);
351+
final AccessGrantClient client = agClient.session(OpenIdSession.ofIdToken(token));
352+
353+
final URI recipient = URI.create("https://id.test/agent");
354+
final Instant expiration = Instant.parse("2022-08-27T12:00:00Z");
355+
final Set<String> modes = new HashSet<>(Arrays.asList("Read", "Append"));
356+
final Set<URI> purposes = Collections.singleton(URI.create("https://purpose.test/Purpose1"));
357+
358+
final Set<URI> resources = Collections.singleton(URI.create("https://storage.test/data/"));
359+
final AccessRequest.RequestParameters params = AccessRequest.RequestParameters.newBuilder()
360+
.recipient(recipient)
361+
.resources(resources)
362+
.modes(modes)
363+
.purposes(purposes)
364+
.expiration(expiration)
365+
.issuedAt(Instant.now()).build();
366+
final AccessRequest request = client.requestAccess(params).toCompletableFuture().join();
367+
368+
assertTrue(request.getTypes().contains("SolidAccessRequest"));
369+
assertEquals(Optional.of(recipient), request.getRecipient());
370+
assertEquals(modes, request.getModes());
371+
assertEquals(expiration, request.getExpiration());
372+
assertEquals(baseUri, request.getIssuer());
373+
assertEquals(purposes, request.getPurposes());
374+
assertEquals(resources, request.getResources());
375+
}
376+
343377
@Test
344378
void testRequestAccessNoAuth() {
345379
final URI recipient = URI.create("https://id.test/agent");

access-grant/src/test/java/com/inrupt/client/accessgrant/AccessRequestTest.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,65 @@ class AccessRequestTest {
4242

4343
private static final JsonService jsonService = ServiceProvider.getJsonService();
4444

45+
@Test
46+
void testBuilderWithNulls() {
47+
final URI uri1 = URI.create("https://example.com/resource1");
48+
final URI uri2 = URI.create("https://example.com/resource2");
49+
final URI uri3 = URI.create("https://example.com/resource3");
50+
final URI uri4 = URI.create("https://example.com/resource4");
51+
final AccessRequest.RequestParameters params = AccessRequest.RequestParameters.newBuilder()
52+
.resource(uri1).resource(uri2)
53+
.mode("Read").mode("Append")
54+
.purpose(uri3).purpose(uri4)
55+
.recipient(null)
56+
.modes(null)
57+
.resources(null)
58+
.purposes(null).build();
59+
60+
assertTrue(params.getPurposes().isEmpty());
61+
assertTrue(params.getResources().isEmpty());
62+
assertTrue(params.getModes().isEmpty());
63+
assertNull(params.getRecipient());
64+
assertNull(params.getExpiration());
65+
assertNull(params.getIssuedAt());
66+
}
67+
68+
@Test
69+
void testBuilderWithCollections() {
70+
final URI uri1 = URI.create("https://example.com/resource1");
71+
final URI uri2 = URI.create("https://example.com/resource2");
72+
final URI uri3 = URI.create("https://example.com/resource3");
73+
final URI uri4 = URI.create("https://example.com/resource4");
74+
final AccessRequest.RequestParameters params = AccessRequest.RequestParameters.newBuilder()
75+
.resource(uri1)
76+
.mode("Read")
77+
.purpose(uri3)
78+
.recipient(uri2)
79+
.modes(Collections.singleton("Append"))
80+
.resources(Collections.singleton(uri2))
81+
.purposes(Collections.singleton(uri4)).build();
82+
83+
final Set<URI> expectedPurposes = new HashSet<>();
84+
expectedPurposes.add(uri3);
85+
expectedPurposes.add(uri4);
86+
assertEquals(expectedPurposes, params.getPurposes());
87+
88+
final Set<URI> expectedResources = new HashSet<>();
89+
expectedResources.add(uri1);
90+
expectedResources.add(uri2);
91+
assertEquals(expectedResources, params.getResources());
92+
93+
final Set<String> expectedModes = new HashSet<>();
94+
expectedModes.add("Read");
95+
expectedModes.add("Append");
96+
assertEquals(expectedModes, params.getModes());
97+
98+
assertEquals(uri2, params.getRecipient());
99+
assertNull(params.getExpiration());
100+
assertNull(params.getIssuedAt());
101+
}
102+
103+
45104
@Test
46105
void testReadAccessRequest() throws IOException {
47106
try (final InputStream resource = AccessRequestTest.class.getResourceAsStream("/access_request1.json")) {

0 commit comments

Comments
 (0)