@@ -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 , GRANT_MODE_READ , AccessRequest .class )
327+ sharedResource , 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 , GRANT_MODE_READ , AccessRequest .class )
336+ sharedResource , 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 , GRANT_MODE_READ , AccessRequest .class )
351+ sharedResource , GRANT_MODE_READ , AccessRequest .class )
343352 .toCompletableFuture ().join ();
344353 assertEquals (1 , requests .size ());
345354
@@ -360,13 +369,14 @@ void accessGrantQueryByPurposeTest(final Session session) {
360369
361370 //query for all grants of existent purposes
362371 final List <AccessRequest > requests = accessGrantClient .query (URI .create (webidUrl ),
363- sharedTextFileURI , GRANT_MODE_READ , AccessRequest .class )
372+ sharedResource , GRANT_MODE_READ , AccessRequest .class )
373+ //null, null, AccessRequest.class)
364374 .toCompletableFuture ().join ();
365375 assertEquals (1 , requests .size ());
366376
367377 //query for all grants of dedicated purpose combinations
368- final List <AccessRequest > randomGrants = accessGrantClient .query (URI .create (webidUrl ),
369- sharedTextFileURI , GRANT_MODE_WRITE , AccessRequest .class )
378+ final List <AccessGrant > randomGrants = accessGrantClient .query (URI .create (webidUrl ),
379+ sharedResource , GRANT_MODE_WRITE , AccessGrant .class )
370380 .toCompletableFuture ().join ();
371381 assertEquals (0 , randomGrants .size ()); //our grant is actually a Read
372382 }
@@ -447,7 +457,6 @@ void accessGrantSetRdfTest(final Session session) {
447457 authClient .delete (testRDFresourceURI );
448458
449459 assertDoesNotThrow (accessGrantClient .revoke (grant ).toCompletableFuture ()::join );
450- assertDoesNotThrow (accessGrantClient .delete (grant ).toCompletableFuture ()::join );
451460 }
452461 }
453462
@@ -526,7 +535,6 @@ void accessGrantGetNonRdfTest(final Session session) throws IOException {
526535
527536 authClient .delete (newTestFileURI );
528537 assertDoesNotThrow (accessGrantClient .revoke (grant ).toCompletableFuture ()::join );
529- assertDoesNotThrow (accessGrantClient .delete (grant ).toCompletableFuture ()::join );
530538 }
531539
532540 @ ParameterizedTest
@@ -580,7 +588,6 @@ void accessGrantSetNonRdfTest(final Session session) throws IOException {
580588
581589 authClient .delete (newTestFileURI );
582590 assertDoesNotThrow (accessGrantClient .revoke (grant ).toCompletableFuture ()::join );
583- assertDoesNotThrow (accessGrantClient .delete (grant ).toCompletableFuture ()::join );
584591 }
585592
586593 @ ParameterizedTest
@@ -619,7 +626,7 @@ void accessGrantCreateNonRdfTest(final Session session) throws IOException {
619626 private static void prepareACPofResource (final SolidSyncClient authClient , final URI resourceURI ) {
620627
621628 // find the acl Link in the header of the resource
622- try (final SolidRDFSource resource = authClient .read (resourceURI , SolidRDFSource .class )) {
629+ try (final SolidNonRDFSource resource = authClient .read (resourceURI , SolidNonRDFSource .class )) {
623630 resource .getMetadata ().getAcl ().ifPresent (acl -> {
624631 try (final SolidRDFSource acr = authClient .read (acl , SolidRDFSource .class )) {
625632 AccessGrantUtils .accessControlPolicyTriples (acl , ACL .Read , ACL .Write )
@@ -640,8 +647,8 @@ private static Stream<Arguments> provideSessions() throws SolidClientException {
640647 final var token = credential .map (Credential ::getToken )
641648 .orElseThrow (() -> new OpenIdException ("We could not get a token" ));
642649 return Stream .of (
643- Arguments .of (OpenIdSession .ofIdToken (token ), //OpenId token
650+ Arguments .of (OpenIdSession .ofIdToken (token )) , //OpenId token
644651 Arguments .of (session )
645- )) ;
652+ );
646653 }
647654}
0 commit comments