|
25 | 25 | import static org.junit.jupiter.api.Assertions.assertThrows; |
26 | 26 | import static org.junit.jupiter.api.Assertions.assertTrue; |
27 | 27 |
|
28 | | -import com.inrupt.client.Headers; |
29 | 28 | import com.inrupt.client.Request; |
30 | 29 | import com.inrupt.client.Response; |
31 | 30 | import com.inrupt.client.accessgrant.AccessGrant; |
32 | 31 | import com.inrupt.client.accessgrant.AccessGrantClient; |
33 | 32 | import com.inrupt.client.accessgrant.AccessGrantSession; |
| 33 | +import com.inrupt.client.accessgrant.AccessGrantUtils; |
34 | 34 | import com.inrupt.client.accessgrant.AccessRequest; |
35 | 35 | import com.inrupt.client.auth.Credential; |
36 | 36 | import com.inrupt.client.auth.Session; |
|
40 | 40 | import com.inrupt.client.spi.RDFFactory; |
41 | 41 | import com.inrupt.client.util.URIBuilder; |
42 | 42 | import com.inrupt.client.vocabulary.ACL; |
43 | | -import com.inrupt.client.vocabulary.ACP; |
44 | 43 | import com.inrupt.client.webid.WebIdProfile; |
45 | 44 |
|
46 | 45 | import java.io.ByteArrayInputStream; |
@@ -620,60 +619,15 @@ void accessGrantCreateNonRdfTest(final Session session) throws IOException { |
620 | 619 |
|
621 | 620 | private static void prepareACPofResource(final SolidSyncClient authClient, final URI resourceURI) { |
622 | 621 |
|
623 | | - final IRI acpAllOf = rdf.createIRI(ACP.allOf.toString()); |
624 | | - final IRI acpVc = rdf.createIRI(ACP.vc.toString()); |
625 | | - final IRI acpAllow = rdf.createIRI(ACP.allow.toString()); |
626 | | - final IRI acpApply = rdf.createIRI(ACP.apply.toString()); |
627 | | - final IRI acpAccessControl = rdf.createIRI(ACP.accessControl.toString()); |
628 | | - final IRI aclRead = rdf.createIRI(ACL.Read.toString()); |
629 | | - final IRI aclWrite = rdf.createIRI(ACL.Write.toString()); |
630 | | - |
631 | 622 | // find the acl Link in the header of the resource |
632 | | - final Request req = Request.newBuilder(resourceURI) |
633 | | - .HEAD() |
634 | | - .build(); |
635 | | - final Response<Void> res = authClient.send(req, Response.BodyHandlers.discarding()); |
636 | | - final Headers.Link acrLink = res.headers().allValues("Link").stream() |
637 | | - .flatMap(l -> Headers.Link.parse(l).stream()) |
638 | | - .filter(link -> link.getParameter("rel").contains("acl")) |
639 | | - .findAny() |
640 | | - .orElse(null); |
641 | | - |
642 | | - // add the triples needed for access grant |
643 | | - if (acrLink != null) { |
644 | | - final URI resourceACRurl = acrLink.getUri(); |
645 | | - final IRI resourceACRiri = rdf.createIRI(resourceACRurl.toString()); |
646 | | - |
647 | | - //read the existing triples and add them to the dataset |
648 | | - try (final SolidRDFSource resource = authClient.read(resourceACRurl, SolidRDFSource.class)) { |
649 | | - |
650 | | - //creating a new matcher |
651 | | - final URI newMatcherURI = URIBuilder.newBuilder(resourceACRurl).fragment("newMatcher").build(); |
652 | | - final IRI newMatcher = rdf.createIRI(newMatcherURI.toString()); |
653 | | - final IRI solidAccessGrant = rdf.createIRI("http://www.w3.org/ns/solid/vc#SolidAccessGrant"); |
654 | | - |
655 | | - resource.add(rdf.createQuad(resourceACRiri, newMatcher, acpVc, solidAccessGrant)); |
656 | | - |
657 | | - //create a new policy |
658 | | - final URI newPolicyURI = URIBuilder.newBuilder(resourceACRurl).fragment("newPolicy").build(); |
659 | | - final IRI newPolicy = rdf.createIRI(newPolicyURI.toString()); |
660 | | - |
661 | | - resource.add(rdf.createQuad(resourceACRiri, newPolicy, acpAllOf, newMatcher)); |
662 | | - resource.add(rdf.createQuad(resourceACRiri, newPolicy, acpAllow, aclRead)); |
663 | | - resource.add(rdf.createQuad(resourceACRiri, newPolicy, acpAllow, aclWrite)); |
664 | | - |
665 | | - //creating a new access control |
666 | | - final URI newAccessControlURI = |
667 | | - URIBuilder.newBuilder(resourceACRurl).fragment("newAccessControl").build(); |
668 | | - final IRI newAccessControl = rdf.createIRI(newAccessControlURI.toString()); |
669 | | - |
670 | | - resource.add(rdf.createQuad(resourceACRiri, newAccessControl, acpApply, newPolicy)); |
671 | | - |
672 | | - //adding the new access control to the ACP |
673 | | - resource.add(rdf.createQuad(resourceACRiri, resourceACRiri, acpAccessControl, newAccessControl)); |
674 | | - |
675 | | - authClient.update(resource); |
676 | | - } |
| 623 | + try (final SolidRDFSource resource = authClient.read(resourceURI, SolidRDFSource.class)) { |
| 624 | + resource.getMetadata().getAcl().ifPresent(acl -> { |
| 625 | + try (final SolidRDFSource acr = authClient.read(acl, SolidRDFSource.class)) { |
| 626 | + AccessGrantUtils.accessControlPolicyTriples(acl, ACL.Read, ACL.Write) |
| 627 | + .forEach(acr.getGraph()::add); |
| 628 | + authClient.update(acr); |
| 629 | + } |
| 630 | + }); |
677 | 631 | } |
678 | 632 | } |
679 | 633 |
|
|
0 commit comments