@@ -112,7 +112,9 @@ public class AccessGrantScenarios {
112112 private static String testRDFresourceName = "resource.ttl" ;
113113 private static URI testRDFresourceURI ;
114114 private static String sharedTextFileName = "sharedFile.txt" ;
115+ private static String sharedResourceName = "sharedResource" ;
115116 private static URI sharedTextFileURI ;
117+ private static URI sharedResource ;
116118 private static Session session ;
117119
118120 @ BeforeAll
@@ -158,32 +160,45 @@ static void setup() throws IOException {
158160 sharedTextFileURI = URIBuilder .newBuilder (URI .create (testContainerURI .toString ()))
159161 .path (sharedTextFileName )
160162 .build ();
163+ sharedResource = URIBuilder .newBuilder (URI .create (testContainerURI .toString ()))
164+ .path (sharedResourceName ).build ();
161165
162166 testRDFresourceURI = URIBuilder .newBuilder (testContainerURI )
163167 .path (testRDFresourceName )
164168 .build ();
165169
170+ session = OpenIdSession .ofClientCredentials (
171+ URI .create (issuer ), //Client credentials
172+ CLIENT_ID ,
173+ CLIENT_SECRET ,
174+ AUTH_METHOD );
175+
166176 //create test file in test container
167177 try (final InputStream is = new ByteArrayInputStream (StandardCharsets .UTF_8 .encode ("Test text" ).array ())) {
168178 final SolidNonRDFSource testResource = new SolidNonRDFSource (sharedTextFileURI , Utils .PLAIN_TEXT , is , null );
169- session = OpenIdSession .ofClientCredentials (
170- URI .create (issuer ), //Client credentials
171- CLIENT_ID ,
172- CLIENT_SECRET ,
173- AUTH_METHOD );
174179 final SolidSyncClient authClient = client .session (session );
175180 assertDoesNotThrow (() -> authClient .create (testResource ));
176181
177182 prepareACPofResource (authClient , sharedTextFileURI );
178183 }
179184
180- accessGrantServer = new MockAccessGrantServer (State .WEBID . toString () , sharedTextFileURI . toString () );
185+ accessGrantServer = new MockAccessGrantServer (State .WEBID , sharedTextFileURI , sharedResource );
181186 accessGrantServer .start ();
182187
183188 VC_PROVIDER = config
184189 .getOptionalValue ("inrupt.test.vc.provider" , String .class )
185190 .orElse (accessGrantServer .getMockServerUrl ());
186191
192+ final AccessGrantClient accessGrantClient = new AccessGrantClient (URI .create (VC_PROVIDER )).session (session );
193+ final Set <String > modes = new HashSet <>(Arrays .asList (GRANT_MODE_READ , GRANT_MODE_APPEND ));
194+ final Instant expiration = Instant .parse (GRANT_EXPIRATION );
195+
196+ final AccessRequest request = accessGrantClient .requestAccess (URI .create (webidUrl ),
197+ new HashSet <>(Arrays .asList (sharedResource )), modes , PURPOSES , expiration )
198+ .toCompletableFuture ().join ();
199+ final AccessGrant grant = accessGrantClient .grantAccess (request )
200+ .toCompletableFuture ().join ();
201+
187202 LOGGER .info ("Integration Test Issuer: [{}]" , issuer );
188203 LOGGER .info ("Integration Test Pod Host: [{}]" , podUrl );
189204 LOGGER .info ("Integration Test Access Grant server: [{}]" , VC_PROVIDER );
@@ -229,8 +244,7 @@ void accessGrantIssuanceLifecycleTest(final Session session) {
229244
230245 //2. call verify endpoint to verify grant
231246
232- final URI uri = URIBuilder .newBuilder (URI .create (VC_PROVIDER )).path (grant .getIdentifier ().toString ()).build ();
233- final AccessGrant grantFromVcProvider = accessGrantClient .fetch (uri , AccessGrant .class )
247+ final AccessGrant grantFromVcProvider = accessGrantClient .fetch (grant .getIdentifier (), AccessGrant .class )
234248 .toCompletableFuture ().join ();
235249 assertEquals (grant .getPurposes (), grantFromVcProvider .getPurposes ());
236250
@@ -259,7 +273,6 @@ void accessGrantIssuanceLifecycleTest(final Session session) {
259273 assertDoesNotThrow (accessGrantClient .revoke (grant ).toCompletableFuture ()::join );
260274
261275 //6. call verify endpoint to check the grant is not valid
262-
263276 }
264277
265278 @ ParameterizedTest
@@ -279,8 +292,6 @@ void accessGrantWithRequestOverridesTest(final Session session) {
279292 .toCompletableFuture ().join ();
280293
281294 //2. call verify endpoint to verify grant
282-
283- assertDoesNotThrow (accessGrantClient .delete (grant ).toCompletableFuture ()::join );
284295 }
285296
286297 @ ParameterizedTest
@@ -300,8 +311,6 @@ void accessGrantNonRecursiveTest(final Session session) {
300311 .toCompletableFuture ().join ();
301312 //Steps
302313 //1. call verify endpoint to verify grant
303-
304- assertDoesNotThrow (accessGrantClient .delete (grant ).toCompletableFuture ()::join );
305314 }
306315
307316 // Query access grant related tests
@@ -315,7 +324,7 @@ void accessGrantQueryByRequestorTest(final Session session) {
315324
316325 //query for all grants issued by the user
317326 final List <AccessRequest > grants = accessGrantClient .query (URI .create (webidUrl ),
318- sharedTextFileURI , PURPOSE1 , GRANT_MODE_READ , AccessRequest .class )
327+ sharedResource , PURPOSE1 , GRANT_MODE_READ , AccessRequest .class )
319328 .toCompletableFuture ().join ();
320329 // result is 4 because we retrieve the grants for each path
321330 // sharedTextFileURI =
@@ -324,7 +333,7 @@ void accessGrantQueryByRequestorTest(final Session session) {
324333
325334 //query for all grants issued by a random user
326335 final List <AccessRequest > randomGrants = accessGrantClient .query (URI .create ("https://someuser.test" ),
327- sharedTextFileURI , PURPOSE1 , GRANT_MODE_READ , AccessRequest .class )
336+ sharedResource , PURPOSE1 , GRANT_MODE_READ , AccessRequest .class )
328337 .toCompletableFuture ().join ();
329338 assertEquals (0 , randomGrants .size ());
330339 }
@@ -339,7 +348,7 @@ void accessGrantQueryByResourceTest(final Session session) {
339348
340349 //query for all grants of a dedicated resource
341350 final List <AccessRequest > requests = accessGrantClient .query (URI .create (webidUrl ),
342- sharedTextFileURI , PURPOSE1 , GRANT_MODE_READ , AccessRequest .class )
351+ sharedResource , PURPOSE1 , GRANT_MODE_READ , AccessRequest .class )
343352 .toCompletableFuture ().join ();
344353 assertEquals (1 , requests .size ());
345354
@@ -360,14 +369,13 @@ void accessGrantQueryByPurposeTest(final Session session) {
360369
361370 //query for all grants with a dedicated purpose
362371 final List <AccessRequest > requests = accessGrantClient .query (URI .create (webidUrl ),
363- sharedTextFileURI , PURPOSE1 , GRANT_MODE_READ , AccessRequest .class )
372+ sharedResource , PURPOSE1 , GRANT_MODE_READ , AccessRequest .class )
364373 .toCompletableFuture ().join ();
365374 assertEquals (1 , requests .size ());
366375
367- //query for all grants of an unsupported purpose
368- final URI purpose = URI .create ("https://example.com/12" );
369- final List <AccessRequest > randomGrants = accessGrantClient .query (URI .create (webidUrl ),
370- sharedTextFileURI , purpose , GRANT_MODE_READ , AccessRequest .class )
376+ //query for all grants of dedicated purpose combinations
377+ final List <AccessGrant > randomGrants = accessGrantClient .query (URI .create (webidUrl ),
378+ sharedResource , PURPOSE1 , GRANT_MODE_WRITE , AccessGrant .class )
371379 .toCompletableFuture ().join ();
372380 assertEquals (0 , randomGrants .size ()); //our grant is actually a Read
373381 }
@@ -448,7 +456,6 @@ void accessGrantSetRdfTest(final Session session) {
448456 authClient .delete (testRDFresourceURI );
449457
450458 assertDoesNotThrow (accessGrantClient .revoke (grant ).toCompletableFuture ()::join );
451- assertDoesNotThrow (accessGrantClient .delete (grant ).toCompletableFuture ()::join );
452459 }
453460 }
454461
@@ -527,7 +534,6 @@ void accessGrantGetNonRdfTest(final Session session) throws IOException {
527534
528535 authClient .delete (newTestFileURI );
529536 assertDoesNotThrow (accessGrantClient .revoke (grant ).toCompletableFuture ()::join );
530- assertDoesNotThrow (accessGrantClient .delete (grant ).toCompletableFuture ()::join );
531537 }
532538
533539 @ ParameterizedTest
@@ -581,7 +587,6 @@ void accessGrantSetNonRdfTest(final Session session) throws IOException {
581587
582588 authClient .delete (newTestFileURI );
583589 assertDoesNotThrow (accessGrantClient .revoke (grant ).toCompletableFuture ()::join );
584- assertDoesNotThrow (accessGrantClient .delete (grant ).toCompletableFuture ()::join );
585590 }
586591
587592 @ ParameterizedTest
@@ -620,7 +625,7 @@ void accessGrantCreateNonRdfTest(final Session session) throws IOException {
620625 private static void prepareACPofResource (final SolidSyncClient authClient , final URI resourceURI ) {
621626
622627 // find the acl Link in the header of the resource
623- try (final SolidRDFSource resource = authClient .read (resourceURI , SolidRDFSource .class )) {
628+ try (final SolidNonRDFSource resource = authClient .read (resourceURI , SolidNonRDFSource .class )) {
624629 resource .getMetadata ().getAcl ().ifPresent (acl -> {
625630 try (final SolidRDFSource acr = authClient .read (acl , SolidRDFSource .class )) {
626631 AccessGrantUtils .accessControlPolicyTriples (acl , ACL .Read , ACL .Write )
@@ -641,8 +646,8 @@ private static Stream<Arguments> provideSessions() throws SolidClientException {
641646 final var token = credential .map (Credential ::getToken )
642647 .orElseThrow (() -> new OpenIdException ("We could not get a token" ));
643648 return Stream .of (
644- Arguments .of (OpenIdSession .ofIdToken (token ), //OpenId token
649+ Arguments .of (OpenIdSession .ofIdToken (token )) , //OpenId token
645650 Arguments .of (session )
646- )) ;
651+ );
647652 }
648653}
0 commit comments