http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredStatementTest.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredStatementTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredStatementTest.java new file mode 100644 index 0000000..b6a7737 --- /dev/null +++ b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredStatementTest.java @@ -0,0 +1,707 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.permissions.model; + +import java.util.Set; + +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.permissions.Factory; +import org.apache.jena.permissions.MockSecurityEvaluator; +import org.apache.jena.permissions.SecurityEvaluator; +import org.apache.jena.permissions.SecurityEvaluatorParameters; +import org.apache.jena.permissions.SecurityEvaluator.Action; +import org.apache.jena.permissions.model.SecuredModel; +import org.apache.jena.permissions.model.SecuredStatement; +import org.apache.jena.permissions.model.impl.SecuredStatementImpl; +import org.apache.jena.rdf.model.* ; +import org.apache.jena.shared.PropertyNotFoundException ; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith( value = SecurityEvaluatorParameters.class ) +public class SecuredStatementTest +{ + private final MockSecurityEvaluator securityEvaluator; + private Statement baseStatement; + private SecuredStatement securedStatement; + private Model baseModel; + private SecuredModel securedModel; + private Property property; + + public SecuredStatementTest( final MockSecurityEvaluator securityEvaluator ) + { + this.securityEvaluator = securityEvaluator; + } + + protected Model createModel() + { + return ModelFactory.createDefaultModel(); + } + + @Before + public void setup() + { + baseModel = createModel(); + property = ResourceFactory + .createProperty("http://example.com/property"); + baseModel.add(ResourceFactory.createResource(), property, + ResourceFactory.createResource()); + baseStatement = baseModel.listStatements().next(); + securedModel = Factory.getInstance(securityEvaluator, + "http://example.com/securedModel", baseModel); + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement); + } + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Test + public void testChangeLiteralObject() + { + final Set<Action> perms = SecurityEvaluator.Util + .asSet(new Action[] { Action.Update }); + try + { + securedStatement.changeLiteralObject(true); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeLiteralObject('c'); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeLiteralObject(3.14d); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeLiteralObject(3.14F); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeLiteralObject(2); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeLiteralObject(2L); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeObject(ResourceFactory.createResource()); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeObject("Waaa hooo"); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + final Literal l = ResourceFactory + .createTypedLiteral(Integer.MAX_VALUE); + securedStatement.changeObject(l.getLexicalForm(), true); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeObject("dos", "es"); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.changeObject("dos", "es", false); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + } + + @Test + public void testCreateReifiedStatement() + { + final Set<Action> perms = SecurityEvaluator.Util.asSet(new Action[] { + Action.Update, Action.Create }); + + try + { + securedStatement.createReifiedStatement(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + try + { + securedStatement.createReifiedStatement("http://example.com/rsURI"); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + } + + @Test + public void testGetProperty() + { + // get property of the object + baseModel.add(baseStatement.getObject().asResource(), property, + ResourceFactory.createResource()); + try + { + securedStatement.getProperty(property); + if (!securityEvaluator.evaluate(Action.Read)) + { + Assert.fail("Should have thrown PropertyNotFound Exception"); + } + } + catch (final PropertyNotFoundException e) + { + if (securityEvaluator.evaluate(Action.Read)) + { + Assert.fail(String + .format("Should not have thrown PropertyNotFound Exception: %s - %s", + e, securityEvaluator)); + } + } + } + + @Test + public void testGets() + { + final Set<Action> perms = SecurityEvaluator.Util + .asSet(new Action[] { Action.Read }); + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject(true)); + try + { + securedStatement.getBoolean(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject(Byte.MAX_VALUE)); + try + { + securedStatement.getByte(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject('c')); + try + { + securedStatement.getChar(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject(3.14d)); + try + { + securedStatement.getDouble(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject(3.14F)); + try + { + securedStatement.getFloat(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject(2)); + try + { + securedStatement.getInt(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeObject("dos", "es")); + try + { + securedStatement.getLanguage(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject(2L)); + try + { + securedStatement.getLong(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject(Short.MAX_VALUE)); + try + { + securedStatement.getShort(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeObject("who hoo")); + try + { + securedStatement.getString(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeObject("who hoo")); + try + { + securedStatement.hasWellFormedXML(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + } + + @Test + public void testGetStatementProperty() + { + // get property of the subject + final ReifiedStatement s = baseStatement.createReifiedStatement(); + s.addLiteral(property, "yee haw"); + securedStatement.getStatementProperty(property); + + } + + @Test + public void testIsReified() + { + final Set<Action> perms = SecurityEvaluator.Util + .asSet(new Action[] { Action.Read }); + + try + { + securedStatement.isReified(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + } + + @Test + public void testListReifiedStatements() + { + final Set<Action> perms = SecurityEvaluator.Util + .asSet(new Action[] { Action.Read }); + + try + { + securedStatement.listReifiedStatements(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + } + + @Test + public void testRemove() + { + final Set<Action> perms = SecurityEvaluator.Util.asSet(new Action[] { + Action.Update, Action.Delete }); + + try + { + securedStatement.remove(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + } + + @Test + public void testRemoveReification() + { + baseStatement.createReifiedStatement(); + final Set<Action> perms = SecurityEvaluator.Util.asSet(new Action[] { + Action.Update, Action.Delete }); + + try + { + securedStatement.removeReification(); + if (!securityEvaluator.evaluate(perms)) + { + Assert.fail("Should have thrown AccessDenied Exception"); + } + } + catch (final AccessDeniedException e) + { + if (securityEvaluator.evaluate(perms)) + { + Assert.fail(String + .format("Should not have thrown AccessDenied Exception: %s - %s", + e, e.getTriple())); + } + } + } + + @Test + public void testUnsecuredGets() + { + securedStatement.getAlt(); + securedStatement.getBag(); + securedStatement.getSeq(); + + securedStatement.getResource(); + // securedStatement.getResource( ResourceF f ); + securedStatement.getSubject(); + + securedStatement = SecuredStatementImpl.getInstance(securedModel, + baseStatement.changeLiteralObject(true)); + securedStatement.getLiteral(); + } + +}
http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java new file mode 100644 index 0000000..b179da4 --- /dev/null +++ b/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java @@ -0,0 +1,245 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.permissions.query; + +import org.apache.jena.permissions.Factory; +import org.apache.jena.permissions.MockSecurityEvaluator; +import org.apache.jena.permissions.SecurityEvaluator.SecNode.Type; +import org.apache.jena.permissions.model.SecuredModel; +import org.apache.jena.permissions.query.SecuredQueryEngineFactory; +import org.apache.jena.query.* ; +import org.apache.jena.rdf.model.Model ; +import org.apache.jena.sparql.core.DatasetGraph ; +import org.apache.jena.tdb.TDB ; +import org.apache.jena.tdb.TDBFactory ; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +public class DataSetTest { + private Dataset dataset; + private Model baseModel; + private MockSecurityEvaluator eval; + private SecuredModel dftModel; + + @BeforeClass + public static void setupFactory() + { + SecuredQueryEngineFactory.register(); + } + + @AfterClass + public static void teardownFactory() + { + SecuredQueryEngineFactory.unregister(); + } + + + public void setup() { + + DatasetGraph dsg = TDBFactory.createDatasetGraph() ; + + + dsg.getContext().set(TDB.symUnionDefaultGraph, true) ; + Dataset myDataset = DatasetFactory.create(dsg) ; + +// DatasetGraph dsg = DatasetGraphFactory.createMem() ; +// +// Dataset myDataset = TDBFactory.createDataset(); + baseModel = myDataset.getNamedModel( "http://example.com/baseModel"); + //baseModel = myDataset.getDefaultModel(); + baseModel = QueryEngineTest.populateModel( baseModel ); + + dftModel = Factory.getInstance(eval, + "http://example.com/securedModel", baseModel); + + dataset = DatasetFactory.createMem() ; + dataset.setDefaultModel(dftModel) ; + +// // dataset.addNamedModel( dftModel.getModelIRI(), dftModel); + + + + } + + @Test + public void testOpenQueryType() + { + eval = new MockSecurityEvaluator(true, true, + true, true, true, true); + + setup(); + + try + { + final String query = "prefix fn: <http://www.w3.org/2005/xpath-functions#> " + + " SELECT ?foo ?bar WHERE " + + " { ?foo a <http://example.com/class> ; " + + "?bar [] ." + + " } "; + final QueryExecution qexec = QueryExecutionFactory.create(query, + dataset); + try + { + final ResultSet results = qexec.execSelect(); + int count = 0; + for (; results.hasNext();) + { + count++; + final QuerySolution soln = results.nextSolution(); + } + Assert.assertEquals(8, count); + } + finally + { + qexec.close(); + } + } + finally + { + dataset.close(); + } + } + + @Test + public void testRestrictedQueryType() + { + eval = new MockSecurityEvaluator(true, true, + true, true, true, true) { + + @Override + public boolean evaluate( final Object principal, final Action action, + final SecNode graphIRI, final SecTriple triple ) + { + if (triple.getSubject().equals( + new SecNode(Type.URI, "http://example.com/resource/1"))) + { + return false; + } + return super.evaluate(principal, action, graphIRI, triple); + } + }; + + setup(); + + try + { + final String query = "prefix fn: <http://www.w3.org/2005/xpath-functions#> " + + " SELECT ?foo ?bar WHERE " + + " { ?foo a <http://example.com/class> ; " + + "?bar [] ." + + " } "; + final QueryExecution qexec = QueryExecutionFactory.create(query, + dataset); + try + { + final ResultSet results = qexec.execSelect(); + int count = 0; + for (; results.hasNext();) + { + count++; + results.nextSolution(); + } + Assert.assertEquals(4, count); + } + finally + { + qexec.close(); + } + } + finally + { + dataset.close(); + } + } + + @Test + public void testSelectAllType() + { + eval = new MockSecurityEvaluator(true, true, + true, true, true, true) { + + @Override + public boolean evaluate( final Object principal, final Action action, + final SecNode graphIRI, final SecTriple triple ) + { + if (triple.getSubject().equals( + new SecNode(Type.URI, "http://example.com/resource/1"))) + { + return false; + } + return super.evaluate(principal, action, graphIRI, triple); + } + }; + + setup(); + + try + { + String query = "SELECT ?s ?p ?o WHERE " + + " { ?s ?p ?o } "; + QueryExecution qexec = QueryExecutionFactory.create(query, + dataset); + try + { + final ResultSet results = qexec.execSelect(); + int count = 0; + for (; results.hasNext();) + { + count++; + final QuerySolution soln = results.nextSolution(); + //System.out.println( soln ); + } + // 2x 3 values + type triple + Assert.assertEquals(8, count); + } + finally + { + qexec.close(); + } + + query = "SELECT ?g ?s ?p ?o WHERE " + + " { GRAPH ?g {?s ?p ?o } }"; + qexec = QueryExecutionFactory.create(query, + dataset); + try + { + final ResultSet results = qexec.execSelect(); + int count = 0; + for (; results.hasNext();) + { + count++; + final QuerySolution soln = results.nextSolution(); + //System.out.println( soln ); + } + // 2x 3 values + type triple + // all are in the base graph so no named graphs + Assert.assertEquals(0, count); + } + finally + { + qexec.close(); + } + } + finally + { + dataset.close(); + } + } +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java new file mode 100644 index 0000000..11999a1 --- /dev/null +++ b/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java @@ -0,0 +1,260 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.permissions.query; + +import org.apache.jena.permissions.Factory; +import org.apache.jena.permissions.MockSecurityEvaluator; +import org.apache.jena.permissions.SecurityEvaluator; +import org.apache.jena.permissions.SecurityEvaluator.SecNode.Type; +import org.apache.jena.permissions.model.SecuredModel; +import org.apache.jena.permissions.query.SecuredQueryEngineFactory; +import org.apache.jena.query.QueryExecution ; +import org.apache.jena.query.QueryExecutionFactory ; +import org.apache.jena.query.QuerySolution ; +import org.apache.jena.query.ResultSet ; +import org.apache.jena.rdf.model.Model ; +import org.apache.jena.rdf.model.ModelFactory ; +import org.apache.jena.rdf.model.Resource ; +import org.apache.jena.rdf.model.ResourceFactory ; +import org.apache.jena.vocabulary.RDF ; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class QueryEngineTest { + + @BeforeClass + public static void setupFactory() { + SecuredQueryEngineFactory.register(); + } + + @AfterClass + public static void teardownFactory() { + SecuredQueryEngineFactory.unregister(); + } + + Model baseModel; + + public QueryEngineTest() { + + } + + + public static Model populateModel(Model baseModel) + { + + Resource r = ResourceFactory + .createResource("http://example.com/resource/1"); + final Resource o = ResourceFactory + .createResource("http://example.com/class"); + baseModel.add(r, RDF.type, o); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_1"), + ResourceFactory.createTypedLiteral(1)); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_2"), + ResourceFactory.createTypedLiteral("foo")); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_3"), + ResourceFactory.createTypedLiteral(3.14)); + r = ResourceFactory.createResource("http://example.com/resource/2"); + baseModel.add(r, RDF.type, o); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_1"), + ResourceFactory.createTypedLiteral(2)); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_2"), + ResourceFactory.createTypedLiteral("bar")); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_3"), + ResourceFactory.createTypedLiteral(6.28)); + + r = ResourceFactory.createResource("http://example.com/resource/3"); + baseModel.add(r, RDF.type, ResourceFactory + .createResource("http://example.com/anotherClass")); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_1"), + ResourceFactory.createTypedLiteral(3)); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_2"), + ResourceFactory.createTypedLiteral("baz")); + baseModel.add(r, ResourceFactory + .createProperty("http://example.com/property/_3"), + ResourceFactory.createTypedLiteral(9.42)); + return baseModel; + } + + @Before + public void setUp() + { + baseModel = populateModel( ModelFactory.createDefaultModel()); + } + + @After + public void tearDown() { + baseModel.close(); + } + + @Test + public void testOpenQueryType() { + final SecurityEvaluator eval = new MockSecurityEvaluator(true, true, + true, true, true, true); + final SecuredModel model = Factory.getInstance(eval, + "http://example.com/securedModel", baseModel); + try { + final String query = "prefix fn: <http://www.w3.org/2005/xpath-functions#> " + + " SELECT ?foo ?bar WHERE " + + " { ?foo a <http://example.com/class> ; " + + "?bar [] ." + + " } "; + final QueryExecution qexec = QueryExecutionFactory.create(query, + model); + try { + final ResultSet results = qexec.execSelect(); + int count = 0; + for (; results.hasNext();) { + count++; + final QuerySolution soln = results.nextSolution(); + } + Assert.assertEquals(8, count); + } finally { + qexec.close(); + } + } finally { + model.close(); + } + } + + @Test + public void testRestrictedQueryType() { + final SecurityEvaluator eval = new MockSecurityEvaluator(true, true, + true, true, true, true) { + + @Override + public boolean evaluate(final Object principal, + final Action action, final SecNode graphIRI, + final SecTriple triple) { + if (triple.getSubject().equals( + new SecNode(Type.URI, "http://example.com/resource/1"))) { + return false; + } + return super.evaluate(principal, action, graphIRI, triple); + } + }; + final SecuredModel model = Factory.getInstance(eval, + "http://example.com/securedModel", baseModel); + try { + final String query = "prefix fn: <http://www.w3.org/2005/xpath-functions#> " + + " SELECT ?foo ?bar WHERE " + + " { ?foo a <http://example.com/class> ; " + + "?bar [] ." + + " } "; + final QueryExecution qexec = QueryExecutionFactory.create(query, + model); + try { + final ResultSet results = qexec.execSelect(); + int count = 0; + for (; results.hasNext();) { + count++; + results.nextSolution(); + } + Assert.assertEquals(4, count); + } finally { + qexec.close(); + } + } finally { + model.close(); + } + } + + @Test + public void testSelectAllType() + { + final SecurityEvaluator eval = new MockSecurityEvaluator(true, true, + true, true, true, true) { + + @Override + public boolean evaluate(Object principal, final Action action, + final SecNode graphIRI, final SecTriple triple ) + { + if (triple.getSubject().equals( + new SecNode(Type.URI, "http://example.com/resource/1"))) + { + return false; + } + return super.evaluate(principal, action, graphIRI, triple); + } + }; + final SecuredModel model = Factory.getInstance(eval, + "http://example.com/securedModel", baseModel); + try + { + String query = "SELECT ?s ?p ?o WHERE " + + " { ?s ?p ?o } "; + QueryExecution qexec = QueryExecutionFactory.create(query, + model); + try + { + final ResultSet results = qexec.execSelect(); + int count = 0; + for (; results.hasNext();) + { + count++; + final QuerySolution soln = results.nextSolution(); + //System.out.println( soln ); + } + // 2x 3 values + type triple + Assert.assertEquals(8, count); + } + finally + { + qexec.close(); + } + + query = "SELECT ?s ?p ?o WHERE " + + " { GRAPH ?g {?s ?p ?o } }"; + qexec = QueryExecutionFactory.create(query, + model); + try + { + final ResultSet results = qexec.execSelect(); + int count = 0; + for (; results.hasNext();) + { + count++; + final QuerySolution soln = results.nextSolution(); + //System.out.println( soln ); + } + // 2x 3 values + type triple + // no named graphs so no results. + Assert.assertEquals(0, count); + } + finally + { + qexec.close(); + } + } + finally + { + model.close(); + } + } +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/permissions/query/rewriter/OpRewriterTest.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/query/rewriter/OpRewriterTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/query/rewriter/OpRewriterTest.java new file mode 100644 index 0000000..3e5d0d4 --- /dev/null +++ b/jena-permissions/src/test/java/org/apache/jena/permissions/query/rewriter/OpRewriterTest.java @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jena.permissions.query.rewriter; + +import java.util.Arrays; + +import org.apache.jena.graph.NodeFactory ; +import org.apache.jena.graph.Triple ; +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.permissions.MockSecurityEvaluator; +import org.apache.jena.permissions.SecurityEvaluator; +import org.apache.jena.permissions.query.rewriter.OpRewriter; +import org.apache.jena.permissions.query.rewriter.SecuredFunction; +import org.apache.jena.sparql.algebra.Op ; +import org.apache.jena.sparql.algebra.op.OpBGP ; +import org.apache.jena.sparql.algebra.op.OpFilter ; +import org.apache.jena.sparql.core.BasicPattern ; +import org.apache.jena.sparql.expr.ExprList ; +import org.apache.jena.vocabulary.RDF ; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class OpRewriterTest +{ + private OpRewriter rewriter; + private Triple[] triples; + + public OpRewriterTest() + { + } + + @Before + public void setup() + { + triples = new Triple[] { + new Triple( NodeFactory.createVariable("foo"), RDF.type.asNode(), NodeFactory.createURI( "http://example.com/class")), + new Triple( NodeFactory.createVariable("foo"), NodeFactory.createAnon(), NodeFactory.createVariable("bar")), + new Triple( NodeFactory.createVariable("bar"), NodeFactory.createAnon(), NodeFactory.createVariable("baz")), + }; + } + + @Test + public void testBGP() + { + SecurityEvaluator securityEvaluator = new MockSecurityEvaluator( true, true, true, true, true, true ); + rewriter = new OpRewriter( securityEvaluator, "http://example.com/dummy"); + + rewriter.visit( new OpBGP( BasicPattern.wrap(Arrays.asList(triples)))); + Op op = rewriter.getResult(); + Assert.assertTrue( "Should have been an OpFilter", op instanceof OpFilter ); + OpFilter filter = (OpFilter) op; + ExprList eLst = filter.getExprs(); + Assert.assertEquals( 1, eLst.size()); + Assert.assertTrue( "Should have been a SecuredFunction", eLst.get(0) instanceof SecuredFunction); + op = filter.getSubOp(); + Assert.assertTrue( "Should have been a OpBGP", op instanceof OpBGP); + BasicPattern basicPattern = ((OpBGP)op).getPattern(); + Assert.assertEquals( 3, basicPattern.size() ); + + Triple t = basicPattern.get(0); + Assert.assertEquals( NodeFactory.createVariable("foo"), t.getSubject()); + Assert.assertEquals( RDF.type.asNode(), t.getPredicate()); + Assert.assertEquals( NodeFactory.createURI( "http://example.com/class"), t.getObject()); + + t = basicPattern.get(1); + Assert.assertEquals( NodeFactory.createVariable("foo"), t.getSubject()); + Assert.assertTrue( "Should have been blank", t.getPredicate().isBlank()); + Assert.assertEquals( NodeFactory.createVariable("bar"), t.getObject()); + + t = basicPattern.get(2); + Assert.assertEquals( NodeFactory.createVariable("bar"), t.getSubject() ); + Assert.assertTrue( "Should have been blank", t.getPredicate().isBlank()); + Assert.assertEquals( NodeFactory.createVariable("baz"), t.getObject()); + } + + @Test + public void testBGPNoReadAccess() + { + SecurityEvaluator securityEvaluator = new MockSecurityEvaluator( true, true, false, true, true, true ); + rewriter = new OpRewriter( securityEvaluator, "http://example.com/dummy"); + Triple[] triples = { + new Triple( NodeFactory.createVariable("foo"), RDF.type.asNode(), NodeFactory.createURI( "http://example.com/class")), + new Triple( NodeFactory.createVariable("foo"), NodeFactory.createAnon(), NodeFactory.createVariable("bar")), + new Triple( NodeFactory.createVariable("bar"), NodeFactory.createAnon(), NodeFactory.createVariable("baz")), + }; + try { + rewriter.visit( new OpBGP( BasicPattern.wrap(Arrays.asList(triples)))); + Assert.fail( "Should have thrown AccessDeniedException"); + } + catch (AccessDeniedException e) + { + // expected + } + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/EqualityTester.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/EqualityTester.java b/jena-permissions/src/test/java/org/apache/jena/security/EqualityTester.java deleted file mode 100644 index 4b1d882..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/EqualityTester.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security; - -import org.junit.Assert; - -public class EqualityTester -{ - - public static void testEquality( final String label, final Object o1, - final Object o2 ) - { - Assert.assertEquals(label, o1, o2); - Assert.assertEquals(label + " inverse", o2, o1); - Assert.assertEquals(label + " hashCode", o1.hashCode(), o2.hashCode()); - } - - public static void testInequality( final String label, final Object o1, - final Object o2 ) - { - if ((o1 == null) && (o2 == null)) - { - Assert.fail(label + ": both arguments are null"); - } - if ((o1 == null) || (o2 == null)) - { - return; - } - Assert.assertFalse(label, o2.equals(o1)); - Assert.assertFalse(label, o1.equals(o2)); - - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/MockPrefixMapping.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/MockPrefixMapping.java b/jena-permissions/src/test/java/org/apache/jena/security/MockPrefixMapping.java deleted file mode 100644 index 5db2402..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/MockPrefixMapping.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security; - -import java.util.Collections; -import java.util.Map; - -import org.apache.jena.shared.PrefixMapping ; - -public class MockPrefixMapping implements PrefixMapping -{ - - @Override - public String expandPrefix( final String prefixed ) - { - return prefixed; - } - - @Override - public Map<String, String> getNsPrefixMap() - { - return Collections.emptyMap(); - } - - @Override - public String getNsPrefixURI( final String prefix ) - { - return null; - } - - @Override - public String getNsURIPrefix( final String uri ) - { - return null; - } - - @Override - public PrefixMapping lock() - { - return this; - } - - @Override - public String qnameFor( final String uri ) - { - return null; - } - - @Override - public PrefixMapping removeNsPrefix( final String prefix ) - { - return this; - } - - @Override - public boolean samePrefixMappingAs( final PrefixMapping other ) - { - return false; - } - - @Override - public PrefixMapping setNsPrefix( final String prefix, final String uri ) - { - throw new UnsupportedOperationException(); - } - - @Override - public PrefixMapping setNsPrefixes( final Map<String, String> map ) - { - throw new UnsupportedOperationException(); - } - - @Override - public PrefixMapping setNsPrefixes( final PrefixMapping other ) - { - throw new UnsupportedOperationException(); - } - - @Override - public String shortForm( final String uri ) - { - return uri; - } - - @Override - public PrefixMapping withDefaultMappings( final PrefixMapping map ) - { - throw new UnsupportedOperationException(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/MockSecurityEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/MockSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/security/MockSecurityEvaluator.java deleted file mode 100644 index 797bdf0..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/MockSecurityEvaluator.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security; - -import java.security.Principal; -import java.util.Collections; -import java.util.Set; - -import org.apache.jena.rdf.model.Resource ; -import org.apache.jena.security.SecurityEvaluator; - -public class MockSecurityEvaluator implements SecurityEvaluator -{ - - private final boolean loggedIn; - private final boolean create; - private final boolean read; - private final boolean update; - private final boolean delete; - private final boolean forceTripleChecks; - - public static MockSecurityEvaluator getInstance() - { - return new MockSecurityEvaluator( true, true, true, true, true, true ); - } - - - public MockSecurityEvaluator( final boolean loggedIn, final boolean create, - final boolean read, final boolean update, final boolean delete, - final boolean forceTripleChecks ) - { - this.loggedIn = loggedIn; - this.create = create; - this.read = read; - this.update = update; - this.delete = delete; - this.forceTripleChecks = forceTripleChecks; - } - - public boolean evaluate( final Action action ) - { - switch (action) - { - case Read: - return read; - case Create: - return create; - case Update: - return update; - case Delete: - return delete; - default: - throw new IllegalArgumentException(); - } - } - - /** - * Answers the question. can the logged in user perform action on the - * object. - * - * if there is no logged in user then anonymous access is assumed. - * - * @param action - * @param object - * @return boolean - */ - public boolean evaluate( final Action action, final Resource object ) - { - - return evaluate(action); - } - - @Override - public boolean evaluate( final Object principal, final Action action, final SecNode uri ) - { - return evaluate(action); - } - - @Override - public boolean evaluate( final Object principal, final Action action, final SecNode graphIRI, - final SecTriple triple ) - { - if (forceTripleChecks) - { - if (triple.getSubject().equals(SecNode.ANY) - || triple.getPredicate().equals(SecNode.ANY) - || triple.getObject().equals(SecNode.ANY)) - { - return false; - } - } - return evaluate(action); - } - - public boolean evaluate( final Action[] actions ) - { - for (final Action a : actions) - { - if (!evaluate(a)) - { - return false; - } - } - return true; - } - - public boolean evaluate( final Set<Action> action ) - { - boolean result = true; - for (final Action a : action) - { - result &= evaluate(a); - } - return result; - } - - public boolean evaluate( final Set<Action> action, final Resource object ) - { - boolean result = true; - for (final Action a : action) - { - result &= evaluate(a); - } - return result; - } - - @Override - public boolean evaluate( final Object principal, final Set<Action> action, final SecNode uri ) - { - return evaluate(action); - } - - @Override - public boolean evaluate( final Object principal, final Set<Action> action, final SecNode graphIRI, - final SecTriple triple ) - { - for (final Action a : action) - { - if (!evaluate(a)) - { - return false; - } - } - return true; - } - - @Override - public boolean evaluateAny( final Object principal, final Set<Action> action, final SecNode graphIRI ) - { - for (final Action a : action) - { - if (evaluate(a)) - { - return true; - } - } - return false; - } - - @Override - public boolean evaluateAny( final Object principal, final Set<Action> action, - final SecNode graphIRI, final SecTriple triple ) - { - return evaluateAny( principal, action, graphIRI); - } - - @Override - public boolean evaluateUpdate( final Object principal, final SecNode graphIRI, - final SecTriple from, final SecTriple to ) - { - return evaluate(Action.Update); - } - - public Set<Action> getPermissions( final Resource resourceID ) - { - return Collections.emptySet(); - } - - public Set<Action> getPermissions( final SecNode uri ) - { - return Collections.emptySet(); - } - - @Override - public Principal getPrincipal() - { - if (loggedIn) - { - return new Principal() { - - @Override - public String getName() - { - return "TestingPrincipal"; - } - }; - } - return null; - } - - public boolean isLoggedIn() - { - return loggedIn; - } - - @Override - public String toString() - { - return String.format("C:%s R:%s U:%s D:%s force:%s", create, read, - update, delete, forceTripleChecks); - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/ModelBasedSecurityEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/ModelBasedSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/security/ModelBasedSecurityEvaluator.java deleted file mode 100644 index 0efc9be..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/ModelBasedSecurityEvaluator.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security; - -import java.util.Set; - -import org.apache.jena.rdf.model.Model ; - -public class ModelBasedSecurityEvaluator implements SecurityEvaluator { - - //private Model model; - - public ModelBasedSecurityEvaluator( Model model) { - //this.model = model; - } - - - - @Override - public boolean evaluate(final Object principal, Action action, SecNode graphIRI) { - return true; - } - - @Override - public boolean evaluate(final Object principal, Action action, SecNode graphIRI, SecTriple triple) { - return true; - } - - @Override - public boolean evaluate(final Object principal, Set<Action> actions, SecNode graphIRI) { - return true; - } - - @Override - public boolean evaluate(final Object principal, Set<Action> actions, SecNode graphIRI, - SecTriple triple) { - return true; - } - - @Override - public boolean evaluateAny(final Object principal, Set<Action> actions, SecNode graphIRI) { - return true; - } - - @Override - public boolean evaluateAny(final Object principal, Set<Action> actions, SecNode graphIRI, - SecTriple triple) { - return true; - } - - @Override - public boolean evaluateUpdate(final Object principal, SecNode graphIRI, SecTriple from, SecTriple to) { - return true; - } - - @Override - public Object getPrincipal() { - return null; - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/SecuredAssemblerTest.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/SecuredAssemblerTest.java b/jena-permissions/src/test/java/org/apache/jena/security/SecuredAssemblerTest.java deleted file mode 100644 index 697c5f6..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/SecuredAssemblerTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security; - -import java.net.URL; - -import org.junit.Assert; -import org.apache.jena.assembler.Assembler ; -import org.apache.jena.rdf.model.Model ; -import org.apache.jena.rdf.model.ModelFactory ; -import org.apache.jena.rdf.model.Resource ; -import org.apache.jena.security.model.SecuredModel; -import org.junit.Before; -import org.junit.Test; - -public class SecuredAssemblerTest -{ - private Assembler assembler; - private Model model; - - public SecuredAssemblerTest() - { - assembler = Assembler.general; - } - - @Before - public void setUp() throws Exception { - model = ModelFactory.createDefaultModel(); - URL url = SecuredAssemblerTest.class.getClassLoader().getResource( SecuredAssemblerTest.class.getName().replace(".", "/")+".ttl"); - model.read( url.toURI().toString(), "TURTLE" ); - //model.write( System.out, "TURTLE" ); - } - - @Test - public void testCreation() throws Exception { - - Resource r = model.createResource( "http://apache.org/jena/security/test#secModel"); - Object o = assembler.open( r ); - Assert.assertTrue( o instanceof Model); - Assert.assertTrue( o instanceof SecuredModel ); - } - - @Test - public void testCreationWithArgs() throws Exception { - - Resource r = model.createResource( "http://apache.org/jena/security/test#secModel2"); - Object o = assembler.open( r ); - Assert.assertTrue( o instanceof Model); - Assert.assertTrue( o instanceof SecuredModel ); - } - - @Test - public void testSecurityEvaluatorWithStringArgs() throws Exception { - - Resource r = model.createResource( "http://apache.org/jena/security/test#secEvaluator"); - Object o = assembler.open( r ); - Assert.assertTrue( o instanceof SecurityEvaluator ); - Assert.assertTrue( o instanceof StaticSecurityEvaluator ); - } - - @Test - public void testSecurityEvaluatorWithModelArgs() throws Exception { - - Resource r = model.createResource( "http://apache.org/jena/security/test#secEvaluator2"); - Object o = assembler.open( r ); - Assert.assertTrue( o instanceof SecurityEvaluator ); - Assert.assertTrue( o instanceof ModelBasedSecurityEvaluator ); - } -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/SecurityEvaluatorParameters.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/SecurityEvaluatorParameters.java b/jena-permissions/src/test/java/org/apache/jena/security/SecurityEvaluatorParameters.java deleted file mode 100644 index d6de485..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/SecurityEvaluatorParameters.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security; - -import java.lang.annotation.Annotation; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.junit.runner.Runner; -import org.junit.runner.notification.RunNotifier; -import org.junit.runners.BlockJUnit4ClassRunner; -import org.junit.runners.Suite; -import org.junit.runners.model.FrameworkMethod; -import org.junit.runners.model.InitializationError; -import org.junit.runners.model.Statement; - -public class SecurityEvaluatorParameters extends Suite -{ - - private class TestClassRunnerForParameters extends BlockJUnit4ClassRunner - { - private final int fParameterSetNumber; - - private final List<Object[]> fParameterList; - - TestClassRunnerForParameters( final Class<?> type, - final List<Object[]> parameterList, final int i ) - throws InitializationError - { - super(type); - fParameterList = parameterList; - fParameterSetNumber = i; - } - - @Override - protected Statement classBlock( final RunNotifier notifier ) - { - return childrenInvoker(notifier); - } - - @Override - public Object createTest() throws Exception - { - return getTestClass().getOnlyConstructor().newInstance( - fParameterList.get(fParameterSetNumber)); - } - - @Override - protected String getName() - { - return String.format("[%s]", fParameterSetNumber); - } - - @Override - protected Annotation[] getRunnerAnnotations() - { - return new Annotation[0]; - } - - @Override - protected String testName( final FrameworkMethod method ) - { - return String.format("%s[%s]", method.getName(), - fParameterList.get(fParameterSetNumber)[0]); - } - - @Override - protected void validateConstructor( final List<Throwable> errors ) - { - validateOnlyOneConstructor(errors); - } - } - - private final ArrayList<Runner> runners = new ArrayList<Runner>(); - - /** - * Only called reflectively. Do not use programmatically. - */ - public SecurityEvaluatorParameters( final Class<?> klass ) throws Throwable - { - super(klass, Collections.<Runner> emptyList()); - final List<Object[]> parametersList = new ArrayList<Object[]>(); - - final boolean[] bSet = { true, false }; - - for (final boolean create : bSet) - { - for (final boolean read : bSet) - { - for (final boolean update : bSet) - { - for (final boolean delete : bSet) - { - for (final boolean forceTripleCheck : bSet) - { - parametersList - .add(new Object[] { new MockSecurityEvaluator( - true, create, read, update, delete, - forceTripleCheck) }); - } - } - } - } - } - - for (int i = 0; i < parametersList.size(); i++) - { - runners.add(new TestClassRunnerForParameters(getTestClass() - .getJavaClass(), parametersList, i)); - } - } - - @Override - protected List<Runner> getChildren() - { - return runners; - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/StaticSecurityEvaluator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/StaticSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/security/StaticSecurityEvaluator.java deleted file mode 100644 index d59b89c..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/StaticSecurityEvaluator.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security; - -import java.util.Set; - -public class StaticSecurityEvaluator implements SecurityEvaluator { - - private String user; - - public StaticSecurityEvaluator( String user) { - this.user = user; - } - - public void setUser( String user ) - { - this.user = user; - } - - @Override - public boolean evaluate(final Object principal, Action action, SecNode graphIRI) { - return true; - } - - @Override - public boolean evaluate(final Object principal, Action action, SecNode graphIRI, SecTriple triple) { - return triple.getSubject().getValue().equals( "urn:"+principal ); - } - - @Override - public boolean evaluate(final Object principal, Set<Action> actions, SecNode graphIRI) { - return true; - } - - @Override - public boolean evaluate(final Object principal, Set<Action> actions, SecNode graphIRI, - SecTriple triple) { - return triple.getSubject().getValue().equals( "urn:"+principal ); - } - - @Override - public boolean evaluateAny(final Object principal, Set<Action> actions, SecNode graphIRI) { - return true; - } - - @Override - public boolean evaluateAny(final Object principal, Set<Action> actions, SecNode graphIRI, - SecTriple triple) { - return triple.getSubject().getValue().equals( "urn:"+principal ); - } - - @Override - public boolean evaluateUpdate(final Object principal, SecNode graphIRI, SecTriple from, SecTriple to) { - return from.getSubject().getValue().equals( "urn:"+principal ) && - to.getSubject().getValue().equals( "urn:"+principal ); - } - - @Override - public Object getPrincipal() { - return user; - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/CachedSecurityEvaluatorTest.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/CachedSecurityEvaluatorTest.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/CachedSecurityEvaluatorTest.java deleted file mode 100644 index 6201b5c..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/CachedSecurityEvaluatorTest.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.jena.security.contract.graph; - -import org.apache.jena.security.SecurityEvaluator; -import org.apache.jena.security.StaticSecurityEvaluator; -import org.apache.jena.security.impl.CachedSecurityEvaluator; -import org.junit.Test; -import static org.junit.Assert.*; - -public class CachedSecurityEvaluatorTest { - - private StaticSecurityEvaluator securityEvaluator; - private SecurityEvaluator cachedEvaluator; - - public CachedSecurityEvaluatorTest() { - securityEvaluator = new StaticSecurityEvaluator( "bob" ); - cachedEvaluator = new CachedSecurityEvaluator( securityEvaluator, "ted" ); - - } - - @Test - public void testGetPrincipal() - { - assertEquals( "bob", securityEvaluator.getPrincipal()); - assertEquals( "ted", cachedEvaluator.getPrincipal()); - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredGraphContractTests.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredGraphContractTests.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredGraphContractTests.java deleted file mode 100644 index e903d75..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredGraphContractTests.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.contract.graph; - -import org.apache.jena.graph.Factory ; -import org.apache.jena.graph.Graph ; -import org.apache.jena.graph.test.MetaTestGraph ; -import org.apache.jena.security.MockSecurityEvaluator; -import org.apache.jena.security.SecurityEvaluator; - -public class SecuredGraphContractTests extends MetaTestGraph -{ - - private final SecurityEvaluator eval; - - public SecuredGraphContractTests( final Class<? extends Graph> graphClass, - final String name ) - { - super(graphClass, name); - eval = new MockSecurityEvaluator(true, true, true, true, true, true); - } - - public SecuredGraphContractTests( final String name ) - { - super(name); - eval = new MockSecurityEvaluator(true, true, true, true, true, true); - } - - @Override - public Graph getGraph() - { - return org.apache.jena.security.Factory.getInstance(eval, getName(), - Factory.createDefaultGraph()); - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredGraphListenerTest.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredGraphListenerTest.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredGraphListenerTest.java deleted file mode 100644 index fb7f805..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredGraphListenerTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.contract.graph; - -import org.apache.jena.graph.Factory ; -import org.apache.jena.graph.Graph ; -import org.apache.jena.graph.test.TestGraphListener ; -import org.apache.jena.security.MockSecurityEvaluator; -import org.apache.jena.security.SecurityEvaluator; - -public class SecuredGraphListenerTest extends TestGraphListener -{ - private final SecurityEvaluator eval; - - public SecuredGraphListenerTest( final Class<? extends Graph> graphClass, - final String name ) - { - super(graphClass, name); - eval = new MockSecurityEvaluator(true, true, true, true, true, true); - } - - public SecuredGraphListenerTest( final String name ) - { - super(name); - eval = new MockSecurityEvaluator(true, true, true, true, true, true); - } - - @Override - public Graph getGraph() - { - final Graph graph = org.apache.jena.security.Factory.getInstance(eval, - getName(), Factory.createDefaultGraph()); - graph.getEventManager().register(new CheckChanges("simple tracking", graph)); - return graph; - } -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredTDBGraphContractTests.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredTDBGraphContractTests.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredTDBGraphContractTests.java deleted file mode 100644 index 6991ea8..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/graph/SecuredTDBGraphContractTests.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.contract.graph; - -import org.apache.jena.graph.Graph ; -import org.apache.jena.graph.test.MetaTestGraph ; -import org.apache.jena.security.MockSecurityEvaluator; -import org.apache.jena.security.SecurityEvaluator; -import org.apache.jena.tdb.TDBFactory ; - -public class SecuredTDBGraphContractTests extends MetaTestGraph -{ - - private final SecurityEvaluator eval; - - public SecuredTDBGraphContractTests( final Class<? extends Graph> graphClass, - final String name ) - { - super(graphClass, name); - eval = new MockSecurityEvaluator(true, true, true, true, true, true); - } - - public SecuredTDBGraphContractTests( final String name ) - { - super(name); - eval = new MockSecurityEvaluator(true, true, true, true, true, true); - } - - @Override - public Graph getGraph() - { - return org.apache.jena.security.Factory.getInstance(eval, getName(), - TDBFactory.createDatasetGraph().getDefaultGraph()); - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/model/ModelTestSuite.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/ModelTestSuite.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/model/ModelTestSuite.java deleted file mode 100644 index e3d33e5..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/ModelTestSuite.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.contract.model; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -import junit.framework.Test; - - -import org.junit.runner.Description; -import org.junit.runner.notification.Failure; -import org.junit.runner.notification.RunNotifier; -import org.junit.runners.ParentRunner; - - -public class ModelTestSuite extends ParentRunner<Test> -{ - private SecTestPackage pkg; - - public ModelTestSuite( Class<?> testClass ) throws Exception - { - super( Test.class ); - pkg = new SecTestPackage(); - } - - @Override - protected List<Test> getChildren() - { - List<Test> lst = new ArrayList<Test>(); - Enumeration<Test> enm = pkg.tests(); - while (enm.hasMoreElements()) - { - lst.add( enm.nextElement() ); - } - return lst; - } - - @Override - protected Description describeChild( Test child ) - { - return Description.createTestDescription( child.getClass(), child.toString() ); - } - - @Override - protected void runChild( Test child, RunNotifier notifier ) - { - Method setUp = null; - try - { - setUp = child.getClass().getMethod("setUp" ); - } - catch (SecurityException e1) - { - // TODO Auto-generated catch block - e1.printStackTrace(); - throw new RuntimeException( e1 ); - } - catch (NoSuchMethodException e1) - { - } - Method tearDown = null; - try - { - tearDown = child.getClass().getMethod("tearDown" ); - } - catch (SecurityException e1) - { - // TODO Auto-generated catch block - e1.printStackTrace(); - throw new RuntimeException( e1 ); - } - catch (NoSuchMethodException e1) - { - } - for (Method m : child.getClass().getMethods()) - { - if (m.getName().startsWith( "test" ) && m.getParameterTypes().length == 0) - { - Description desc = Description.createTestDescription( child.getClass(), child.toString() ); - notifier.fireTestStarted( desc ); - try - { - if (setUp != null) - { - setUp.invoke(child); - } - m.invoke(child); - if (tearDown != null) - { - tearDown.invoke( child ); - } - notifier.fireTestFinished( desc ); - } - catch (IllegalArgumentException e) - { - notifier.fireTestFailure( new Failure(desc, e)); - } - catch (IllegalAccessException e) - { - notifier.fireTestFailure( new Failure(desc, e)); - } - catch (InvocationTargetException e) - { - notifier.fireTestFailure( new Failure(desc, e.getTargetException())); - } - catch (RuntimeException e) { - notifier.fireTestFailure( new Failure(desc, e)); - throw e; - } - } - } - } -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestLiterals.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestLiterals.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestLiterals.java deleted file mode 100644 index 6247c68..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestLiterals.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.contract.model; - -import org.apache.jena.rdf.model.test.TestLiterals ; -import org.apache.jena.rdf.model.test.TestPackage ; - -public class SecTestLiterals extends TestLiterals { - - public SecTestLiterals() { - super(new TestPackage.PlainModelFactory(), "SecTestLiterals"); - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestPackage.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestPackage.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestPackage.java deleted file mode 100644 index 4f0650d..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestPackage.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.contract.model; - -import java.lang.reflect.InvocationTargetException; - -import junit.framework.TestSuite; -import org.apache.jena.atlas.web.TypedInputStream; -import org.apache.jena.graph.Graph ; -import org.apache.jena.rdf.model.Model ; -import org.apache.jena.rdf.model.ModelFactory ; -import org.apache.jena.rdf.model.test.AbstractTestPackage ; -import org.apache.jena.rdf.model.test.helpers.TestingModelFactory ; -import org.apache.jena.riot.system.stream.Locator; -import org.apache.jena.riot.system.stream.StreamManager; -import org.apache.jena.riot.system.stream.LocatorZip; -import org.apache.jena.security.MockSecurityEvaluator; -import org.apache.jena.security.SecurityEvaluator; -import org.apache.jena.shared.PrefixMapping ; -import org.apache.jena.util.FileUtils ; - -/** - * Test package to test Model implementation. - */ -//@RunWith(ModelTestSuite.class) -public class SecTestPackage extends AbstractTestPackage -{ - static public TestSuite suite() throws SecurityException, IllegalArgumentException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException - { - return new SecTestPackage(); - } - - public SecTestPackage() throws SecurityException, IllegalArgumentException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException - { - super("SecuredModel", new PlainModelFactory() ); - // register a jar reader here - StreamManager sm =StreamManager.get(); - sm.addLocator( new LocatorJarURL() ); - } - - /* package private */static class PlainModelFactory implements TestingModelFactory - { - private final SecurityEvaluator eval; - - public PlainModelFactory() - { - eval = new MockSecurityEvaluator(true, true, true, true, true, true); - } - - @Override - public Model createModel() - { - // Graph graph = Factory.createDefaultGraph( style ); - final Model model = ModelFactory.createDefaultModel(); - return org.apache.jena.security.Factory.getInstance(eval, "testModel", - model); - } - - @Override - public PrefixMapping getPrefixMapping() - { - return createModel().getGraph().getPrefixMapping(); - } - - @Override - public Model createModel( Graph base ) - { - return ModelFactory.createModelForGraph(base); - } - } - - public static class LocatorJarURL implements Locator { - - @Override - public TypedInputStream open(String uri) { - String uriSchemeName = FileUtils.getScheme(uri) ; - if ( ! "jar".equalsIgnoreCase(uriSchemeName)) - { - return null; - } - - String[] parts = uri.substring( 4 ).split("!"); - if (parts.length != 2) - { - return null; - } - if (parts[0].toLowerCase().startsWith("file:")) - { - parts[0] = parts[0].substring( 5 ); - } - if (parts[1].startsWith( "/")) - { - parts[1] = parts[1].substring(1); - } - LocatorZip zl = new LocatorZip( parts[0] ); - return zl.open(parts[1] ); - } - - @Override - public String getName() { - return "JarURLLocator"; - } - - } -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestReaderEvents.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestReaderEvents.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestReaderEvents.java deleted file mode 100644 index 4a1d662..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestReaderEvents.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.contract.model; - -import org.apache.jena.rdf.model.test.TestPackage ; - -public class SecTestReaderEvents extends org.apache.jena.rdf.model.test.TestReaderEvents { - - public SecTestReaderEvents() { - super( new TestPackage.PlainModelFactory(), "SecTestReaderEvents" ); - } - -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestReaders.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestReaders.java b/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestReaders.java deleted file mode 100644 index 7ee29fe..0000000 --- a/jena-permissions/src/test/java/org/apache/jena/security/contract/model/SecTestReaders.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.contract.model; - -import org.apache.jena.rdf.model.test.TestPackage ; - -public class SecTestReaders extends org.apache.jena.rdf.model.test.TestReaders { - - public SecTestReaders() { - super( new TestPackage.PlainModelFactory(), "SecTestReaders" ); - } - -}
