/** * Initialize Basic Containment tests. */ @BeforeAll @DisplayName("Initialize Basic Containment tests") default void beforeAllTests() { // POST an LDP-BC try (final Response res = target().request() .header(SLUG, generateRandomValue(getClass().getSimpleName())) .header(LINK, fromUri(LDP.BasicContainer.getIRIString()).rel(TYPE).build()) .post(entity(getResourceAsString(BASIC_CONTAINER), TEXT_TURTLE))) { setContainerLocation(checkCreateResponseAssumptions(res, LDP.BasicContainer)); } }
/** * Test fetching a basic container. */ @Test @DisplayName("Test fetching a basic container") default void testGetContainer() { final RDF rdf = getInstance(); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check an LDP-BC response", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); assertAll("Check the RDF graph", checkRdfGraph(g, identifier)); assertTrue(res.getEntityTag().isWeak(), "Verify that the ETag is weak"); } }
/** * Test fetching a basic container. */ @Test @DisplayName("Test fetching a basic container") default void testGetContainer() { final RDF rdf = getInstance(); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check an LDP-BC response", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); assertAll("Check the RDF graph", checkRdfGraph(g, identifier)); assertTrue(res.getEntityTag().isWeak(), "Verify that the ETag is weak"); } }
/** * Initialize Basic Containment tests. */ @BeforeAll @DisplayName("Initialize Basic Containment tests") default void beforeAllTests() { // POST an LDP-BC try (final Response res = target().request() .header(SLUG, generateRandomValue(getClass().getSimpleName())) .header(LINK, fromUri(LDP.BasicContainer.getIRIString()).rel(TYPE).build()) .post(entity(getResourceAsString(BASIC_CONTAINER), TEXT_TURTLE))) { setContainerLocation(checkCreateResponseAssumptions(res, LDP.BasicContainer)); } }
/** * Test with ldp:PreferMinimalContainer Prefer header. */ @Test @DisplayName("Test with ldp:PreferMinimalContainer Prefer header") default void testGetEmptyContainer() { final RDF rdf = getInstance(); try (final Response res = target(getContainerLocation()).request().header(PREFER, "return=representation; include=\"" + LDP.PreferMinimalContainer.getIRIString() + "\"").get()) { assertAll("Check a container response", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final IRI identifier = rdf.createIRI(getContainerLocation()); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); assertAll("Check the graph for triples", checkRdfGraph(g, identifier)); assertFalse(g.contains(identifier, LDP.contains, null), "Verify that no ldp:contains triples are present"); } }
/** * Test with ldp:PreferMinimalContainer Prefer header. */ @Test @DisplayName("Test with ldp:PreferMinimalContainer Prefer header") default void testGetEmptyContainer() { final RDF rdf = getInstance(); try (final Response res = target(getContainerLocation()).request().header(PREFER, "return=representation; include=\"" + LDP.PreferMinimalContainer.getIRIString() + "\"").get()) { assertAll("Check a container response", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final IRI identifier = rdf.createIRI(getContainerLocation()); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); assertAll("Check the graph for triples", checkRdfGraph(g, identifier)); assertFalse(g.contains(identifier, LDP.contains, null), "Verify that no ldp:contains triples are present"); } }
final RDF rdf = getInstance(); final String containerContent = getResourceAsString(BASIC_CONTAINER); final String child5 = getContainerLocation() + "/child5"; final EntityTag initialETag = getETag(getContainerLocation()); try (final Response res = target(getContainerLocation()).request().header("Slug", "child5") .header(LINK, fromUri(LDP.BasicContainer.getIRIString()).rel(TYPE).build()) .post(entity(containerContent, TEXT_TURTLE))) { assertAll("Check POSTing an LDP-BC", checkRdfResponse(res, LDP.BasicContainer, null)); assertEquals(child5, res.getLocation().toString(), "Check the resource location"); await().until(() -> !initialETag.equals(getETag(getContainerLocation()))); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check GETting the new resource", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); final EntityTag etag = res.getEntityTag(); assertAll("Check the resulting Graph", checkRdfGraph(g, identifier)); assertTrue(g.contains(identifier, LDP.contains, rdf.createIRI(child5)), "Check for an ldp:contains triple"); assertTrue(etag.isWeak(), "Check for a weak ETag");
final EntityTag initialETag = getETag(getContainerLocation()); try (final Response res = target(getContainerLocation()).request() .header(LINK, fromUri(LDP.BasicContainer.getIRIString()).rel(TYPE).build()) .post(entity(containerContent, TEXT_TURTLE))) { assertAll("Check the LDP-BC response", checkRdfResponse(res, LDP.BasicContainer, null)); assertTrue(child3.startsWith(getContainerLocation()), "Check the Location header"); assertTrue(child3.length() > getContainerLocation().length(), "Check the Location header again"); await().until(() -> !initialETag.equals(getETag(getContainerLocation()))); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check the LDP-BC again", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); final EntityTag etag = res.getEntityTag(); assertAll("Check the LDP-BC graph", checkRdfGraph(g, identifier)); assertTrue(g.contains(identifier, LDP.contains, rdf.createIRI(child3))); assertTrue(etag.isWeak(), "Verify that the ETag is weak");
final EntityTag initialETag = getETag(getContainerLocation()); try (final Response res = target(getContainerLocation()).request() .header(LINK, fromUri(LDP.BasicContainer.getIRIString()).rel(TYPE).build()) .post(entity(containerContent, TEXT_TURTLE))) { assertAll("Check the LDP-BC response", checkRdfResponse(res, LDP.BasicContainer, null)); assertTrue(child3.startsWith(getContainerLocation()), "Check the Location header"); assertTrue(child3.length() > getContainerLocation().length(), "Check the Location header again"); await().until(() -> !initialETag.equals(getETag(getContainerLocation()))); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check the LDP-BC again", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); final EntityTag etag = res.getEntityTag(); assertAll("Check the LDP-BC graph", checkRdfGraph(g, identifier)); assertTrue(g.contains(identifier, LDP.contains, rdf.createIRI(child3))); assertTrue(etag.isWeak(), "Verify that the ETag is weak");
/** * Test creating a child resource via PUT. */ @Test @DisplayName("Test creating a child resource via PUT") default void testCreateContainerViaPut() { final RDF rdf = getInstance(); final String containerContent = getResourceAsString(BASIC_CONTAINER); final String child4 = getContainerLocation() + "/child4"; // First fetch the container headers to get the initial ETag final EntityTag initialETag = getETag(getContainerLocation()); try (final Response res = target(child4).request() .header(LINK, fromUri(LDP.BasicContainer.getIRIString()).rel(TYPE).build()) .put(entity(containerContent, TEXT_TURTLE))) { assertAll("Check PUTting an LDP-BC", checkRdfResponse(res, LDP.BasicContainer, null)); } // Now fetch the resource try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check an LDP-BC after PUT", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); final EntityTag etag = res.getEntityTag(); assertAll("Check the resulting graph", checkRdfGraph(g, identifier)); assertFalse(g.contains(identifier, LDP.contains, rdf.createIRI(child4)), "Check for an ldp:contains triple"); assertTrue(etag.isWeak(), "Check for a weak ETag"); assertEquals(initialETag, etag, "Check ETags"); } }
final EntityTag initialETag = getETag(getContainerLocation()); try (final Response res = target(getContainerLocation()).request().post(entity("", TEXT_TURTLE))) { assertAll("Check for an LDP-RS", checkRdfResponse(res, LDP.RDFSource, null)); childResource = res.getLocation().toString(); await().until(() -> !initialETag.equals(getETag(getContainerLocation()))); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check for an LDP-BC", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final IRI identifier = rdf.createIRI(getContainerLocation()); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); assertAll("Verify the resulting graph", checkRdfGraph(g, identifier)); assertTrue(g.contains(identifier, LDP.contains, rdf.createIRI(childResource)), "Check for the presence of an ldp:contains triple"); try (final Response res = target(childResource).request().delete()) { assertEquals(SUCCESSFUL, res.getStatusInfo().getFamily(), "Check the response type"); try (final Response res = target(childResource).request().get()) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Check for an expected error"); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check the parent container", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); assertFalse(g.contains(rdf.createIRI(getContainerLocation()), LDP.contains, rdf.createIRI(childResource)), "Check the graph doesn't contain the deleted resource"); assertTrue(res.getEntityTag().isWeak(), "Check that the ETag is weak");
/** * Test creating a child resource via PUT. */ @Test @DisplayName("Test creating a child resource via PUT") default void testCreateContainerViaPut() { final RDF rdf = getInstance(); final String containerContent = getResourceAsString(BASIC_CONTAINER); final String child4 = getContainerLocation() + "/child4"; // First fetch the container headers to get the initial ETag final EntityTag initialETag = getETag(getContainerLocation()); try (final Response res = target(child4).request() .header(LINK, fromUri(LDP.BasicContainer.getIRIString()).rel(TYPE).build()) .put(entity(containerContent, TEXT_TURTLE))) { assertAll("Check PUTting an LDP-BC", checkRdfResponse(res, LDP.BasicContainer, null)); } // Now fetch the resource try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check an LDP-BC after PUT", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); final EntityTag etag = res.getEntityTag(); assertAll("Check the resulting graph", checkRdfGraph(g, identifier)); assertFalse(g.contains(identifier, LDP.contains, rdf.createIRI(child4)), "Check for an ldp:contains triple"); assertTrue(etag.isWeak(), "Check for a weak ETag"); assertEquals(initialETag, etag, "Check ETags"); } }
final EntityTag initialETag = getETag(getContainerLocation()); try (final Response res = target(getContainerLocation()).request().post(entity("", TEXT_TURTLE))) { assertAll("Check for an LDP-RS", checkRdfResponse(res, LDP.RDFSource, null)); childResource = res.getLocation().toString(); await().until(() -> !initialETag.equals(getETag(getContainerLocation()))); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check for an LDP-BC", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final IRI identifier = rdf.createIRI(getContainerLocation()); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); assertAll("Verify the resulting graph", checkRdfGraph(g, identifier)); assertTrue(g.contains(identifier, LDP.contains, rdf.createIRI(childResource)), "Check for the presence of an ldp:contains triple"); try (final Response res = target(childResource).request().delete()) { assertEquals(SUCCESSFUL, res.getStatusInfo().getFamily(), "Check the response type"); try (final Response res = target(childResource).request().get()) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Check for an expected error"); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check the parent container", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); assertFalse(g.contains(rdf.createIRI(getContainerLocation()), LDP.contains, rdf.createIRI(childResource)), "Check the graph doesn't contain the deleted resource"); assertTrue(res.getEntityTag().isWeak(), "Check that the ETag is weak");
/** * Test with ldp:PreferMinimalContainer Prefer header. */ @Test @DisplayName("Test with ldp:PreferMinimalContainer Prefer header") default void testGetInverseEmptyContainer() { final RDF rdf = getInstance(); try (final Response res = target(getContainerLocation()).request().header(PREFER, "return=representation; omit=\"" + LDP.PreferMinimalContainer.getIRIString() + "\"").get()) { assertAll("Check a container response", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); assertFalse(g.contains(identifier, DC.description, null), "Check for no dc:description triple"); assertFalse(g.contains(identifier, SKOS.prefLabel, null), "Check for no skos:prefLabel triple"); assertTrue(g.contains(identifier, LDP.contains, null), "Check for an ldp:contains triple"); } }
final RDF rdf = getInstance(); final String containerContent = getResourceAsString(BASIC_CONTAINER); final String child5 = getContainerLocation() + "/child5"; final EntityTag initialETag = getETag(getContainerLocation()); try (final Response res = target(getContainerLocation()).request().header("Slug", "child5") .header(LINK, fromUri(LDP.BasicContainer.getIRIString()).rel(TYPE).build()) .post(entity(containerContent, TEXT_TURTLE))) { assertAll("Check POSTing an LDP-BC", checkRdfResponse(res, LDP.BasicContainer, null)); assertEquals(child5, res.getLocation().toString(), "Check the resource location"); await().until(() -> !initialETag.equals(getETag(getContainerLocation()))); try (final Response res = target(getContainerLocation()).request().get()) { assertAll("Check GETting the new resource", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); final EntityTag etag = res.getEntityTag(); assertAll("Check the resulting Graph", checkRdfGraph(g, identifier)); assertTrue(g.contains(identifier, LDP.contains, rdf.createIRI(child5)), "Check for an ldp:contains triple"); assertTrue(etag.isWeak(), "Check for a weak ETag");
/** * Test with ldp:PreferMinimalContainer Prefer header. */ @Test @DisplayName("Test with ldp:PreferMinimalContainer Prefer header") default void testGetInverseEmptyContainer() { final RDF rdf = getInstance(); try (final Response res = target(getContainerLocation()).request().header(PREFER, "return=representation; omit=\"" + LDP.PreferMinimalContainer.getIRIString() + "\"").get()) { assertAll("Check a container response", checkRdfResponse(res, LDP.BasicContainer, TEXT_TURTLE_TYPE)); final Graph g = readEntityAsGraph(res.getEntity(), getBaseURL(), TURTLE); final IRI identifier = rdf.createIRI(getContainerLocation()); assertFalse(g.contains(identifier, DC.description, null), "Check for no dc:description triple"); assertFalse(g.contains(identifier, SKOS.prefLabel, null), "Check for no skos:prefLabel triple"); assertTrue(g.contains(identifier, LDP.contains, null), "Check for an ldp:contains triple"); } }