/** * Test creating resource with invalid RDF. */ @Test @DisplayName("Test creating resource with invalid RDF") default void testWeirdRDF() { final String rdf = getResourceAsString(SIMPLE_RESOURCE) + "<> a \"skos concept\" ."; // POST an LDP-RS try (final Response res = target().request().header(SLUG, generateRandomValue(getClass().getSimpleName())) .post(entity(rdf, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Semantically invalid RDF should throw a 4xx error"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidRange)), "Check for an InvalidRange constraint for weird rdf:type constructs"); } }
/** * Test creating resource with invalid RDF. */ @Test @DisplayName("Test creating resource with invalid RDF") default void testWeirdRDF() { final String rdf = getResourceAsString(SIMPLE_RESOURCE) + "<> a \"skos concept\" ."; // POST an LDP-RS try (final Response res = target().request().header(SLUG, generateRandomValue(getClass().getSimpleName())) .post(entity(rdf, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Semantically invalid RDF should throw a 4xx error"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidRange)), "Check for an InvalidRange constraint for weird rdf:type constructs"); } }
/** * Test updating an indirect container with no member resource. */ @Test @DisplayName("Test updating an indirect container with no member resource") default void testUpdateIndirectContainerMissingMemberResource() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(INDIRECT_CONTAINER); // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "no membershipResource results in 4xx"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "A missing membershipResource property results in an InvalidCardinality constraint"); } }
/** * Test updating a direct container with no member resource. */ @Test @DisplayName("Test updating a direct container with no member resource") default void testUpdateDirectContainerMissingMemberResource() { final String dcLocation = createSimpleDirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString("/directContainer.ttl"); // PUT an LDP-DC try (final Response res = target(dcLocation).request() .header(LINK, fromUri(LDP.DirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Verify that a 4xx status is returned"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Make sure that an InvalidCardinality constraint is referenced"); } }
/** * Test updating an indirect container with no member resource. */ @Test @DisplayName("Test updating an indirect container with no member resource") default void testUpdateIndirectContainerMissingMemberResource() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(INDIRECT_CONTAINER); // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "no membershipResource results in 4xx"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "A missing membershipResource property results in an InvalidCardinality constraint"); } }
/** * Test updating a direct container with no member resource. */ @Test @DisplayName("Test updating a direct container with no member resource") default void testUpdateDirectContainerMissingMemberResource() { final String dcLocation = createSimpleDirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString("/directContainer.ttl"); // PUT an LDP-DC try (final Response res = target(dcLocation).request() .header(LINK, fromUri(LDP.DirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Verify that a 4xx status is returned"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Make sure that an InvalidCardinality constraint is referenced"); } }
/** * Test updating an indirect container with no member relation property. */ @Test @DisplayName("Test updating an indirect container with no member relation property") default void testUpdateIndirectContainerMissingMemberRelation() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> \n" + "PREFIX ldp: <http://www.w3.org/ns/ldp#> \n" + "PREFIX foaf: <http://xmlns.com/foaf/0.1/> \n" + "PREFIX dc: <http://purl.org/dc/terms/> \n\n" + "<> skos:prefLabel \"Indirect Container\"@eng ; " + " ldp:membershipResource <" + getContainerLocation() + MEMBER_RESOURCE2 + "> ; " + " ldp:insertedContentRelation foaf:primaryTopic ; " + " dc:description \"This is an Indirect Container for testing.\"@eng ."; // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Missing member property results in 4xx"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Check that a missing memberRelation results in an InvalidCardinality constraint"); } }
/** * Test updating an indirect container with too many member-related properties. */ @Test @DisplayName("Test updating an indirect container with too many member-related properties") default void testUpdateIndirectContainerTooManyMemberProps() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(INDIRECT_CONTAINER) + membershipResource(getContainerLocation() + MEMBER_RESOURCE2) + "<> ldp:isMemberOfRelation dc:isPartOf ."; // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Check for a 4xx response"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Check for an InvalidCardinality constraint IRI"); } }
/** * Test updating a direct container with no member relation property. */ @Test @DisplayName("Test updating a direct container with no member relation property") default void testUpdateDirectContainerMissingMemberRelation() { final String dcLocation = createSimpleDirectContainer(MEMBER_RESOURCE2); final String content = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> \n" + "PREFIX ldp: <http://www.w3.org/ns/ldp#> \n" + "PREFIX dc: <http://purl.org/dc/terms/> \n\n" + "<> skos:prefLabel \"Direct Container\"@eng ; " + " ldp:membershipResource <" + getContainerLocation() + MEMBER_RESOURCE2 + "> ; " + " dc:description \"This is a Direct Container for testing.\"@eng ."; // PUT an LDP-DC try (final Response res = target(dcLocation).request() .header(LINK, fromUri(LDP.DirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Confirm that a 4xx error is returned"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Confirm that the trellis:InvalidCardinality constraint IRI is referenced"); } }
/** * Test updating a direct container with no member relation property. */ @Test @DisplayName("Test updating a direct container with no member relation property") default void testUpdateDirectContainerMissingMemberRelation() { final String dcLocation = createSimpleDirectContainer(MEMBER_RESOURCE2); final String content = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> \n" + "PREFIX ldp: <http://www.w3.org/ns/ldp#> \n" + "PREFIX dc: <http://purl.org/dc/terms/> \n\n" + "<> skos:prefLabel \"Direct Container\"@eng ; " + " ldp:membershipResource <" + getContainerLocation() + MEMBER_RESOURCE2 + "> ; " + " dc:description \"This is a Direct Container for testing.\"@eng ."; // PUT an LDP-DC try (final Response res = target(dcLocation).request() .header(LINK, fromUri(LDP.DirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Confirm that a 4xx error is returned"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Confirm that the trellis:InvalidCardinality constraint IRI is referenced"); } }
/** * Test updating a direct container with too many member-related properties. */ @Test @DisplayName("Test updating a direct container with too many member-related properties") default void testUpdateDirectContainerTooManyMemberProps() { final String dcLocation = createSimpleDirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(DIRECT_CONTAINER) + membershipResource(getContainerLocation() + MEMBER_RESOURCE2) + "<> ldp:isMemberOfRelation dc:isPartOf ."; // PUT an LDP-DC try (final Response res = target(dcLocation).request() .header(LINK, fromUri(LDP.DirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Confirm that a 4xx error is thrown"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Confirm the correct constraint IRI is referenced"); } }
/** * Test updating an indirect container with no ldp:insertedContentRelation property. */ @Test @DisplayName("Test updating an indirect container with no ldp:insertedContentRelation property") default void testUpdateIndirectContainerNoICRProp() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(DIRECT_CONTAINER) + membershipResource(getContainerLocation() + MEMBER_RESOURCE2); // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Check for a 4xx response"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Check for an InvalidCardinality constraint IRI"); } }
/** * Test updating an indirect container with too many member-related properties. */ @Test @DisplayName("Test updating an indirect container with too many member-related properties") default void testUpdateIndirectContainerTooManyMemberProps() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(INDIRECT_CONTAINER) + membershipResource(getContainerLocation() + MEMBER_RESOURCE2) + "<> ldp:isMemberOfRelation dc:isPartOf ."; // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Check for a 4xx response"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Check for an InvalidCardinality constraint IRI"); } }
/** * Test updating a direct container with too many member-related properties. */ @Test @DisplayName("Test updating a direct container with too many member-related properties") default void testUpdateDirectContainerTooManyMemberProps() { final String dcLocation = createSimpleDirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(DIRECT_CONTAINER) + membershipResource(getContainerLocation() + MEMBER_RESOURCE2) + "<> ldp:isMemberOfRelation dc:isPartOf ."; // PUT an LDP-DC try (final Response res = target(dcLocation).request() .header(LINK, fromUri(LDP.DirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Confirm that a 4xx error is thrown"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Confirm the correct constraint IRI is referenced"); } }
/** * Test updating an indirect container with no ldp:insertedContentRelation property. */ @Test @DisplayName("Test updating an indirect container with no ldp:insertedContentRelation property") default void testUpdateIndirectContainerNoICRProp() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(DIRECT_CONTAINER) + membershipResource(getContainerLocation() + MEMBER_RESOURCE2); // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Check for a 4xx response"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Check for an InvalidCardinality constraint IRI"); } }
/** * Test updating an indirect container with no member relation property. */ @Test @DisplayName("Test updating an indirect container with no member relation property") default void testUpdateIndirectContainerMissingMemberRelation() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> \n" + "PREFIX ldp: <http://www.w3.org/ns/ldp#> \n" + "PREFIX foaf: <http://xmlns.com/foaf/0.1/> \n" + "PREFIX dc: <http://purl.org/dc/terms/> \n\n" + "<> skos:prefLabel \"Indirect Container\"@eng ; " + " ldp:membershipResource <" + getContainerLocation() + MEMBER_RESOURCE2 + "> ; " + " ldp:insertedContentRelation foaf:primaryTopic ; " + " dc:description \"This is an Indirect Container for testing.\"@eng ."; // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Missing member property results in 4xx"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Check that a missing memberRelation results in an InvalidCardinality constraint"); } }
/** * Test updating an indirect container with too many membership resources. */ @Test @DisplayName("Test updating an indirect container with too many membership resources") default void testUpdateIndirectContainerMultipleMemberResources() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(INDIRECT_CONTAINER) + membershipResource(getContainerLocation() + MEMBER_RESOURCE2) + membershipResource(getContainerLocation() + "/member3"); // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Check for a 4xx response"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Check for an InvalidCardinality contraint IRI"); } }
/** * Test updating a direct container with too many membership resources. */ @Test @DisplayName("Test updating a direct container with too many membership resources") default void testUpdateDirectContainerMultipleMemberResources() { final String dcLocation = createSimpleDirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString("/directContainer.ttl") + membershipResource(getContainerLocation() + MEMBER_RESOURCE2) + membershipResource(getContainerLocation() + "/member3"); // PUT an LDP-DC try (final Response res = target(dcLocation).request() .header(LINK, fromUri(LDP.DirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Confirm that a 4xx error is thrown"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Confirm the correct constraint IRI is referenced"); } }
/** * Test updating an indirect container with too many membership resources. */ @Test @DisplayName("Test updating an indirect container with too many membership resources") default void testUpdateIndirectContainerMultipleMemberResources() { final String location = createSimpleIndirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString(INDIRECT_CONTAINER) + membershipResource(getContainerLocation() + MEMBER_RESOURCE2) + membershipResource(getContainerLocation() + "/member3"); // PUT an LDP-DC try (final Response res = target(location).request() .header(LINK, fromUri(LDP.IndirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Check for a 4xx response"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Check for an InvalidCardinality contraint IRI"); } }
/** * Test updating a direct container with too many membership resources. */ @Test @DisplayName("Test updating a direct container with too many membership resources") default void testUpdateDirectContainerMultipleMemberResources() { final String dcLocation = createSimpleDirectContainer(MEMBER_RESOURCE2); final String content = getResourceAsString("/directContainer.ttl") + membershipResource(getContainerLocation() + MEMBER_RESOURCE2) + membershipResource(getContainerLocation() + "/member3"); // PUT an LDP-DC try (final Response res = target(dcLocation).request() .header(LINK, fromUri(LDP.DirectContainer.getIRIString()).rel(TYPE).build()) .put(entity(content, TEXT_TURTLE))) { assertEquals(CLIENT_ERROR, res.getStatusInfo().getFamily(), "Confirm that a 4xx error is thrown"); assertTrue(getLinks(res).stream().anyMatch(hasConstrainedBy(Trellis.InvalidCardinality)), "Confirm the correct constraint IRI is referenced"); } }