Skip to content

Commit

Permalink
Add invalid literal/XML tests
Browse files Browse the repository at this point in the history
Signed-off-by: Andrew Berezovskyi <[email protected]>
  • Loading branch information
berezovskyi committed Jun 30, 2023
1 parent 2906c58 commit c074c6d
Show file tree
Hide file tree
Showing 9 changed files with 158 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@
import org.apache.jena.riot.RDFDataMgr;
import org.apache.jena.riot.RDFFormat;
import org.apache.jena.riot.RDFLanguages;
import org.apache.jena.riot.RiotException;
import org.apache.jena.sparql.vocabulary.FOAF;
import org.eclipse.lyo.oslc4j.core.exception.OslcCoreApplicationException;
import org.eclipse.lyo.oslc4j.core.model.XMLLiteral;
import org.eclipse.lyo.oslc4j.provider.jena.AbstractOslcRdfXmlProvider;
import org.eclipse.lyo.oslc4j.provider.jena.JenaModelHelper;
import org.eclipse.lyo.oslc4j.provider.jena.test.resources.TestResource;
import org.eclipse.lyo.oslc4j.provider.jena.test.resources.TestResourceWithLiterals;
import org.junit.After;
import org.junit.Before;
Expand Down Expand Up @@ -53,6 +53,7 @@ public void after() {
System.getProperties().remove(AbstractOslcRdfXmlProvider.OSLC4J_STRICT_DATATYPES);
}


/* ROUND-TRIPPING TESTS */

@Test
Expand Down Expand Up @@ -84,9 +85,9 @@ public void roundtripTestXmlParsetypeWithAnnotatedLiteralProperty() throws Datat
}

private String showModels(Model expected, Model resulting) {
return String.format("EXPECTED model:\n\n%s\n"+
return String.format("EXPECTED model:\n\n%s\n" +
"=======================================================\n\n"
+ "RESULTING model:\n\n%s\n", prettyPrintModel(expected), prettyPrintModel(resulting));
+ "RESULTING model:\n\n%s\n", prettyPrintModel(expected), prettyPrintModel(resulting));
}

private String prettyPrintModel(Model model) {
Expand All @@ -109,6 +110,62 @@ public void roundtripTestXmlParsetypeWithAnnotatedStringProperty() throws Dataty
assertTrue(diskModel.isIsomorphicWith(lyoModel));
}

/* INVALID LITERAL TESTS */

/**
* We only expect warnings here
*/
@Test
public void invalidLiteralTest_NoRoot() throws DatatypeConfigurationException,
OslcCoreApplicationException, InvocationTargetException, IllegalAccessException {
// final Model diskModel = readModel("/xml_literals/invalid_noroot_parsetype.rdf", RDFLanguages.strLangRDFXML);
final Model diskModel = readModel("/xml_literals/invalid_noroot.ttl", RDFLanguages.strLangTurtle);

final TestResourceWithLiterals[] testResources = JenaModelHelper.unmarshal(diskModel, TestResourceWithLiterals.class);
assertEquals("Expected only one TestResource resource", 1, testResources.length);
final TestResourceWithLiterals resource = testResources[0];

Model lyoModel = JenaModelHelper.createJenaModel(new Object[]{resource});

assertTrue(diskModel.isIsomorphicWith(lyoModel));
}

/**
* We only expect warnings here
*/
@Test
public void invalidLiteralTest_NoEscape() throws DatatypeConfigurationException,
OslcCoreApplicationException, InvocationTargetException, IllegalAccessException {
// final Model diskModel = readModel("/xml_literals/invalid_noroot_parsetype.rdf", RDFLanguages.strLangRDFXML);
final Model diskModel = readModel("/xml_literals/invalid_noescape.ttl", RDFLanguages.strLangTurtle);

final TestResourceWithLiterals[] testResources = JenaModelHelper.unmarshal(diskModel, TestResourceWithLiterals.class);
assertEquals("Expected only one TestResource resource", 1, testResources.length);
final TestResourceWithLiterals resource = testResources[0];

Model lyoModel = JenaModelHelper.createJenaModel(new Object[]{resource});

assertTrue(diskModel.isIsomorphicWith(lyoModel));
}

/**
* Not escaping & turns XML invalid. NB! Unescaped & in Turtle will get escaped when you use libs to convert to RDF/XML.
*/
@Test(expected = RiotException.class)
public void invalidLiteralTest_BadXml() throws DatatypeConfigurationException,
OslcCoreApplicationException, InvocationTargetException, IllegalAccessException {
// final Model diskModel = readModel("/xml_literals/invalid_noroot_parsetype.rdf", RDFLanguages.strLangRDFXML);
final Model diskModel = readModel("/xml_literals/invalid_badxml.rdf", RDFLanguages.strLangTurtle);

final TestResourceWithLiterals[] testResources = JenaModelHelper.unmarshal(diskModel, TestResourceWithLiterals.class);
assertEquals("Expected only one TestResource resource", 1, testResources.length);
final TestResourceWithLiterals resource = testResources[0];

Model lyoModel = JenaModelHelper.createJenaModel(new Object[]{resource});

assertTrue(diskModel.isIsomorphicWith(lyoModel));
}


/* BASE TYPE TESTS */

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# https://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html
org.slf4j.simpleLogger.logFile = System.out
# Must be one of ("trace", "debug", "info", "warn", "error" or "off").
# If not specified, defaults to "info".
org.slf4j.simpleLogger.defaultLogLevel = DEBUG

org.slf4j.simpleLogger.showLogName = true
org.slf4j.simpleLogger.showDateTime = true
org.slf4j.simpleLogger.levelInBrackets = true
org.slf4j.simpleLogger.showThreadName = false
org.slf4j.simpleLogger.dateTimeFormat = HH:mm:ss.SSS
org.slf4j.simpleLogger.showShortLogName = true



org.slf4j.simpleLogger.log.org.eclipse.lyo = TRACE

# Suppress chatty logs
org.slf4j.simpleLogger.log.org.glassfish = INFO
org.slf4j.simpleLogger.log.org.apache.jena = INFO
org.slf4j.simpleLogger.log.Jena = INFO
org.slf4j.simpleLogger.log.org.eclipse.jetty = INFO
# use DEBUG to see HTTP wire contents
org.slf4j.simpleLogger.log.org.apache.http = INFO
org.slf4j.simpleLogger.log.org.apache.wink = ERROR
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:dcterms="http://purl.org/dc/terms/" >
<rdf:Description rdf:about="">
<rdf:type rdf:resource="http://example.com/ns#TestResourceWithLiterals"/>
<foaf:firstName rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral">David & Mary</foaf:firstName>
<dcterms:description rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral">David & Mary</dcterms:description>
<dcterms:title rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral">David & Mary</dcterms:title>
</rdf:Description>
</rdf:RDF>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dcterms: <http://purl.org/dc/terms/>.

<> a <http://example.com/ns#TestResourceWithLiterals> ;
foaf:firstName "<span>David &amp; Mary</span>"^^rdf:XMLLiteral ;
dcterms:title "<span>David &amp; Mary</span>"^^rdf:XMLLiteral ;
dcterms:description "<span>David &amp; Mary</span>"^^rdf:XMLLiteral .
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dcterms: <http://purl.org/dc/terms/>.

<> a <http://example.com/ns#TestResourceWithLiterals> ;
foaf:firstName "<span>David &amp; Mary</span>"^^rdf:XMLLiteral ;
dcterms:title "<span>David &amp; Mary</span>"^^rdf:XMLLiteral ;
dcterms:description "<span>David &amp; Mary</span>"^^rdf:XMLLiteral .
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:dcterms="http://purl.org/dc/terms/" >
<rdf:Description rdf:about="">
<rdf:type rdf:resource="http://example.com/ns#TestResourceWithLiterals"/>
<foaf:firstName rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral">David &amp; Mary</foaf:firstName>
<dcterms:description rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral">David &amp; Mary</dcterms:description>
<dcterms:title rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral">David &amp; Mary</dcterms:title>
</rdf:Description>
</rdf:RDF>
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dcterms: <http://purl.org/dc/terms/>.


<> a <http://example.com/ns#TestResourceWithLiterals> ;
foaf:firstName "<span>David &amp; Mary</span>"^^xsd:XMLLiteral .
Expand Down
21 changes: 12 additions & 9 deletions trs/client/trs-client/src/test/resources/simplelogger.properties
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
# https://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html
org.slf4j.simpleLogger.logFile = System.out
org.slf4j.simpleLogger.defaultLogLevel = INFO
org.slf4j.simpleLogger.levelInBrackets = true
org.slf4j.simpleLogger.showLogName = true
org.slf4j.simpleLogger.showShortLogName = false
org.slf4j.simpleLogger.showDateTime = false
org.slf4j.simpleLogger.dateTimeFormat = HH:mm:ss.SSS
org.slf4j.simpleLogger.showThreadName = false
org.slf4j.simpleLogger.logFile = System.out
# Must be one of ("trace", "debug", "info", "warn", "error" or "off").
# If not specified, defaults to "info".
org.slf4j.simpleLogger.defaultLogLevel = DEBUG

org.slf4j.simpleLogger.log.org.eclipse.lyo = DEBUG
org.slf4j.simpleLogger.showLogName = true
org.slf4j.simpleLogger.showDateTime = true
org.slf4j.simpleLogger.levelInBrackets = true
org.slf4j.simpleLogger.showThreadName = false
org.slf4j.simpleLogger.dateTimeFormat = HH:mm:ss.SSS
org.slf4j.simpleLogger.showShortLogName = true

org.slf4j.simpleLogger.log.org.eclipse.lyo = TRACE
org.slf4j.simpleLogger.log.org.eclipse.lyo.oslc4j.provider.jena.ordfm.ResourcePackages = INFO
org.slf4j.simpleLogger.log.org.eclipse.lyo.oslc4j.provider.jena.JenaModelHelper = INFO
#org.slf4j.simpleLogger.log.org.eclipse.lyo.trs = TRACE

# Suppress chatty logs
org.slf4j.simpleLogger.log.org.glassfish = INFO
org.slf4j.simpleLogger.log.org.jboss.weld = TRACE
org.slf4j.simpleLogger.log.org.apache.jena = INFO
Expand Down
31 changes: 17 additions & 14 deletions trs/server/src/test/resources/simplelogger.properties
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
# https://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html
org.slf4j.simpleLogger.logFile = System.out
org.slf4j.simpleLogger.defaultLogLevel = INFO
org.slf4j.simpleLogger.levelInBrackets = true
org.slf4j.simpleLogger.showLogName = true
org.slf4j.simpleLogger.showShortLogName = false
org.slf4j.simpleLogger.showDateTime = false
org.slf4j.simpleLogger.dateTimeFormat = HH:mm:ss.SSS
org.slf4j.simpleLogger.showThreadName = false

org.slf4j.simpleLogger.log.org.eclipse.lyo = DEBUG
org.slf4j.simpleLogger.logFile = System.out
# Must be one of ("trace", "debug", "info", "warn", "error" or "off").
org.slf4j.simpleLogger.defaultLogLevel = DEBUG
org.slf4j.simpleLogger.levelInBrackets = true
org.slf4j.simpleLogger.showLogName = true
org.slf4j.simpleLogger.showShortLogName = true
org.slf4j.simpleLogger.showDateTime = true
org.slf4j.simpleLogger.dateTimeFormat = HH:mm:ss.SSS
org.slf4j.simpleLogger.showThreadName = false

org.slf4j.simpleLogger.log.org.eclipse.lyo = TRACE
org.slf4j.simpleLogger.log.org.eclipse.lyo.oslc4j.provider.jena.ordfm.ResourcePackages = INFO
org.slf4j.simpleLogger.log.org.eclipse.lyo.oslc4j.provider.jena.JenaModelHelper = INFO
#org.slf4j.simpleLogger.log.org.eclipse.lyo.trs = TRACE

org.slf4j.simpleLogger.log.org.glassfish = INFO
# Suppress chatty logs
# use DEBUG to see HTTP wire contents
org.slf4j.simpleLogger.log.org.apache.http = INFO
org.slf4j.simpleLogger.log.org.apache.jena = INFO
org.slf4j.simpleLogger.log.org.glassfish = INFO
org.slf4j.simpleLogger.log.org.jboss.weld = TRACE
org.slf4j.simpleLogger.log.org.apache.jena = INFO
org.slf4j.simpleLogger.log.org.apache.http = INFO
org.slf4j.simpleLogger.log.Jena = INFO
org.slf4j.simpleLogger.log.Jena = INFO
org.slf4j.simpleLogger.log.org.eclipse.jetty = INFO

0 comments on commit c074c6d

Please sign in to comment.