@Test public void testIdentifierService() { final ResourceService svc = new TriplestoreResourceService(); assertNotEquals(svc.generateIdentifier(), svc.generateIdentifier(), "Not unique identifiers!"); assertNotEquals(svc.generateIdentifier(), svc.generateIdentifier(), "Not unique identifiers!"); }
/** * Test an LDP:RDFSource. * @throws Exception if the create operation fails */ @Test @DisplayName("Test LDP-RS") default void testLdpRs() throws Exception { final Instant time = now(); final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Create LDP-RS Test", SUBJECT1); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-RS"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check the creation of an LDP-RS"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the LDP-RS resource", checkResource(res, identifier, LDP.RDFSource, time, dataset)); assertEquals(3L, res.stream(Trellis.PreferUserManaged).count(), "Check the user triple count"); }
/** * Test creating a resource. * @throws Exception if the operation failed */ @Test @DisplayName("Test creating resource") default void testCreateResource() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Creation Test", SUBJECT1); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-RS"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check that the resource was successfully created"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check resource stream", res.stream(Trellis.PreferUserManaged).map(toQuad(Trellis.PreferUserManaged)) .map(q -> () -> assertTrue(dataset.contains(q), "Verify that the quad is from the dataset: " + q))); }
/** * Test an LDP:RDFSource. * @throws Exception if the create operation fails */ @Test @DisplayName("Test LDP-RS") default void testLdpRs() throws Exception { final Instant time = now(); final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Create LDP-RS Test", SUBJECT1); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-RS"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check the creation of an LDP-RS"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the LDP-RS resource", checkResource(res, identifier, LDP.RDFSource, time, dataset)); assertEquals(3L, res.stream(Trellis.PreferUserManaged).count(), "Check the user triple count"); }
/** * Test creating a resource. * @throws Exception if the operation failed */ @Test @DisplayName("Test creating resource") default void testCreateResource() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Creation Test", SUBJECT1); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-RS"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check that the resource was successfully created"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check resource stream", res.stream(Trellis.PreferUserManaged).map(toQuad(Trellis.PreferUserManaged)) .map(q -> () -> assertTrue(dataset.contains(q), "Verify that the quad is from the dataset: " + q))); }
when(mockResourceService.get(eq(deletedIdentifier))).thenAnswer(inv -> completedFuture(DELETED_RESOURCE)); when(mockResourceService.get(eq(userDeletedIdentifier))).thenAnswer(inv -> completedFuture(DELETED_RESOURCE)); when(mockResourceService.generateIdentifier()).thenReturn(RANDOM_VALUE); when(mockResourceService.unskolemize(any(IRI.class))).thenCallRealMethod(); when(mockResourceService.toInternal(any(RDFTerm.class), any())).thenCallRealMethod();
/** * Test an LDP:NonRDFSource. * @throws Exception if the create operation fails */ @Test @DisplayName("Test LDP-NR") default void testLdpNr() throws Exception { final Instant time = now(); final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Create LDP-NR Test", SUBJECT2); final IRI binaryLocation = rdf.createIRI("binary:location/" + getResourceService().generateIdentifier()); final BinaryMetadata binary = BinaryMetadata.builder(binaryLocation).mimeType("text/plain").build(); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-NR"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.NonRDFSource).container(ROOT_CONTAINER).binary(binary).build(), dataset) .toCompletableFuture().join(), "Check the creation of an LDP-NR"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the LDP-NR resource", checkResource(res, identifier, LDP.NonRDFSource, time, dataset)); assertEquals(3L, res.stream(Trellis.PreferUserManaged).count(), "Check the user-managed count of the LDP-NR"); res.getBinaryMetadata().ifPresent(b -> { assertEquals(binaryLocation, b.getIdentifier(), "Check the binary identifier"); assertEquals(of("text/plain"), b.getMimeType(), "Check the binary mimeType"); }); }
/** * Test an LDP:NonRDFSource. * @throws Exception if the create operation fails */ @Test @DisplayName("Test LDP-NR") default void testLdpNr() throws Exception { final Instant time = now(); final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Create LDP-NR Test", SUBJECT2); final IRI binaryLocation = rdf.createIRI("binary:location/" + getResourceService().generateIdentifier()); final BinaryMetadata binary = BinaryMetadata.builder(binaryLocation).mimeType("text/plain").build(); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-NR"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.NonRDFSource).container(ROOT_CONTAINER).binary(binary).build(), dataset) .toCompletableFuture().join(), "Check the creation of an LDP-NR"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the LDP-NR resource", checkResource(res, identifier, LDP.NonRDFSource, time, dataset)); assertEquals(3L, res.stream(Trellis.PreferUserManaged).count(), "Check the user-managed count of the LDP-NR"); res.getBinaryMetadata().ifPresent(b -> { assertEquals(binaryLocation, b.getIdentifier(), "Check the binary identifier"); assertEquals(of("text/plain"), b.getMimeType(), "Check the binary mimeType"); }); }
default void testAddImmutableData() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset0 = buildDataset(identifier, "Immutable Resource Test", SUBJECT2); .toCompletableFuture().join(), "Check the successful creation of an LDP-RS"); final IRI audit1 = rdf.createIRI(TRELLIS_BNODE_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset1 = rdf.createDataset(); dataset1.add(Trellis.PreferAudit, identifier, PROV.wasGeneratedBy, audit1); assertEquals(4L, res.stream(Trellis.PreferAudit).count(), "Check the audit triple count"); final IRI audit2 = rdf.createIRI(TRELLIS_BNODE_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset2 = rdf.createDataset(); dataset2.add(Trellis.PreferAudit, identifier, PROV.wasGeneratedBy, audit2);
default void testAddImmutableData() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset0 = buildDataset(identifier, "Immutable Resource Test", SUBJECT2); .toCompletableFuture().join(), "Check the successful creation of an LDP-RS"); final IRI audit1 = rdf.createIRI(TRELLIS_BNODE_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset1 = rdf.createDataset(); dataset1.add(Trellis.PreferAudit, identifier, PROV.wasGeneratedBy, audit1); assertEquals(4L, res.stream(Trellis.PreferAudit).count(), "Check the audit triple count"); final IRI audit2 = rdf.createIRI(TRELLIS_BNODE_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset2 = rdf.createDataset(); dataset2.add(Trellis.PreferAudit, identifier, PROV.wasGeneratedBy, audit2);
/** * Test deleting a resource. * @throws Exception if the operation failed */ @Test @DisplayName("Test deleting resource") default void testDeleteResource() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Deletion Test", SUBJECT1); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check that the resource doesn't exist"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check that the resource was successfully created"); assertNotEquals(DELETED_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check that the resource isn't currently 'deleted'"); assertDoesNotThrow(() -> getResourceService().delete(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build()).toCompletableFuture().join(), "Check that the delete operation succeeded"); final Resource resource = getResourceService().get(identifier).toCompletableFuture().join(); assertTrue(DELETED_RESOURCE.equals(resource) || MISSING_RESOURCE.equals(resource), "Verify that the resource is marked as deleted or missing"); }
/** * Test deleting a resource. * @throws Exception if the operation failed */ @Test @DisplayName("Test deleting resource") default void testDeleteResource() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Deletion Test", SUBJECT1); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check that the resource doesn't exist"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check that the resource was successfully created"); assertNotEquals(DELETED_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check that the resource isn't currently 'deleted'"); assertDoesNotThrow(() -> getResourceService().delete(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build()).toCompletableFuture().join(), "Check that the delete operation succeeded"); final Resource resource = getResourceService().get(identifier).toCompletableFuture().join(); assertTrue(DELETED_RESOURCE.equals(resource) || MISSING_RESOURCE.equals(resource), "Verify that the resource is marked as deleted or missing"); }
final Instant time = now(); final RDF rdf = getInstance(); final String base = TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier(); final IRI identifier = rdf.createIRI(base); final Dataset dataset0 = buildDataset(identifier, "Basic Container Test", SUBJECT0);
/** * Test replacing a resource. * @throws Exception if the operation failed */ @Test @DisplayName("Test replacing resource") default void testReplaceResource() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Replacement Test", SUBJECT2); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-RS"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check that the LDP-RS was successfully created"); dataset.clear(); dataset.add(Trellis.PreferUserManaged, identifier, SKOS.prefLabel, rdf.createLiteral("preferred label")); dataset.add(Trellis.PreferUserManaged, identifier, SKOS.altLabel, rdf.createLiteral("alternate label")); dataset.add(Trellis.PreferUserManaged, identifier, type, SKOS.Concept); assertDoesNotThrow(() -> getResourceService().replace(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check that the LDP-RS was successfully replaced"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the replaced LDP-RS stream", res.stream(Trellis.PreferUserManaged) .map(toQuad(Trellis.PreferUserManaged)) .map(q -> () -> assertTrue(dataset.contains(q), "Check that the quad comes from the dataset: " + q))); assertEquals(3L, res.stream(Trellis.PreferUserManaged).count(), "Check the total user-managed triple count"); }
/** * Test replacing a resource. * @throws Exception if the operation failed */ @Test @DisplayName("Test replacing resource") default void testReplaceResource() throws Exception { final RDF rdf = getInstance(); final IRI identifier = rdf.createIRI(TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier()); final Dataset dataset = buildDataset(identifier, "Replacement Test", SUBJECT2); assertEquals(MISSING_RESOURCE, getResourceService().get(identifier).toCompletableFuture().join(), "Check for no pre-existing LDP-RS"); assertDoesNotThrow(() -> getResourceService().create(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check that the LDP-RS was successfully created"); dataset.clear(); dataset.add(Trellis.PreferUserManaged, identifier, SKOS.prefLabel, rdf.createLiteral("preferred label")); dataset.add(Trellis.PreferUserManaged, identifier, SKOS.altLabel, rdf.createLiteral("alternate label")); dataset.add(Trellis.PreferUserManaged, identifier, type, SKOS.Concept); assertDoesNotThrow(() -> getResourceService().replace(Metadata.builder(identifier) .interactionModel(LDP.RDFSource).container(ROOT_CONTAINER).build(), dataset) .toCompletableFuture().join(), "Check that the LDP-RS was successfully replaced"); final Resource res = getResourceService().get(identifier).toCompletableFuture().join(); assertAll("Check the replaced LDP-RS stream", res.stream(Trellis.PreferUserManaged) .map(toQuad(Trellis.PreferUserManaged)) .map(q -> () -> assertTrue(dataset.contains(q), "Check that the quad comes from the dataset: " + q))); assertEquals(3L, res.stream(Trellis.PreferUserManaged).count(), "Check the total user-managed triple count"); }
final Instant time = now(); final RDF rdf = getInstance(); final String base = TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier(); final IRI identifier = rdf.createIRI(base); final Dataset dataset0 = buildDataset(identifier, "Basic Container Test", SUBJECT0);
final Instant time = now(); final RDF rdf = getInstance(); final String base = TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier(); final IRI identifier = rdf.createIRI(base); final Dataset dataset0 = buildDataset(identifier, "Container Test", SUBJECT0);
final String base = TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier(); final IRI identifier = rdf.createIRI(base); final IRI member = rdf.createIRI(base + "/member");
final Instant time = now(); final RDF rdf = getInstance(); final String base = TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier(); final IRI identifier = rdf.createIRI(base); final Dataset dataset0 = buildDataset(identifier, "Container Test", SUBJECT0);
final String base = TRELLIS_DATA_PREFIX + getResourceService().generateIdentifier(); final IRI identifier = rdf.createIRI(base); final IRI member = rdf.createIRI(base + "/member");