You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2013/08/01 23:53:44 UTC
svn commit: r1509448 [5/5] - in /jena/Experimental/jena-security/src:
main/java/org/apache/jena/security/graph/
main/java/org/apache/jena/security/query/
main/java/org/apache/jena/security/utils/
test/java/org/apache/jena/security/graph/ test/java/org/...
Added: jena/Experimental/jena-security/src/test/java/org/apache/jena/security/model/SecuredStatementTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-security/src/test/java/org/apache/jena/security/model/SecuredStatementTest.java?rev=1509448&view=auto
==============================================================================
--- jena/Experimental/jena-security/src/test/java/org/apache/jena/security/model/SecuredStatementTest.java (added)
+++ jena/Experimental/jena-security/src/test/java/org/apache/jena/security/model/SecuredStatementTest.java Thu Aug 1 21:53:43 2013
@@ -0,0 +1,714 @@
+/*
+ * 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.model;
+
+import com.hp.hpl.jena.rdf.model.Literal;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.Property;
+import com.hp.hpl.jena.rdf.model.ReifiedStatement;
+import com.hp.hpl.jena.rdf.model.ResourceFactory;
+import com.hp.hpl.jena.rdf.model.Statement;
+import com.hp.hpl.jena.shared.PropertyNotFoundException;
+
+import java.util.Set;
+
+import org.apache.jena.security.AccessDeniedException;
+import org.apache.jena.security.Factory;
+import org.apache.jena.security.MockSecurityEvaluator;
+import org.apache.jena.security.SecurityEvaluator;
+import org.apache.jena.security.SecurityEvaluatorParameters;
+import org.apache.jena.security.SecurityEvaluator.Action;
+import org.apache.jena.security.model.SecuredModel;
+import org.apache.jena.security.model.SecuredStatement;
+import org.apache.jena.security.model.impl.SecuredStatementImpl;
+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();
+ }
+
+}
Propchange: jena/Experimental/jena-security/src/test/java/org/apache/jena/security/model/SecuredStatementTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jena/Experimental/jena-security/src/test/java/org/apache/jena/security/query/QueryEngineTest.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-security/src/test/java/org/apache/jena/security/query/QueryEngineTest.java?rev=1509448&view=auto
==============================================================================
--- jena/Experimental/jena-security/src/test/java/org/apache/jena/security/query/QueryEngineTest.java (added)
+++ jena/Experimental/jena-security/src/test/java/org/apache/jena/security/query/QueryEngineTest.java Thu Aug 1 21:53:43 2013
@@ -0,0 +1,206 @@
+/*
+ * 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.query;
+
+import com.hp.hpl.jena.query.QueryExecution;
+import com.hp.hpl.jena.query.QueryExecutionFactory;
+import com.hp.hpl.jena.query.QuerySolution;
+import com.hp.hpl.jena.query.ResultSet;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.rdf.model.ResourceFactory;
+import com.hp.hpl.jena.vocabulary.RDF;
+
+import org.junit.Assert;
+
+import org.apache.jena.security.Factory;
+import org.apache.jena.security.MockSecurityEvaluator;
+import org.apache.jena.security.SecurityEvaluator;
+import org.apache.jena.security.SecurityEvaluator.SecNode.Type;
+import org.apache.jena.security.model.SecuredModel;
+import org.apache.jena.security.query.SecuredQueryEngineFactory;
+import org.junit.After;
+import org.junit.AfterClass;
+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()
+ {
+
+ }
+
+ @Before
+ public void setUp()
+ {
+ baseModel = ModelFactory.createDefaultModel();
+ 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));
+ }
+
+ @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();
+ System.out.println(soln);
+ }
+ 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 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(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();
+ }
+ }
+
+}
Propchange: jena/Experimental/jena-security/src/test/java/org/apache/jena/security/query/QueryEngineTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jena/Experimental/jena-security/src/test/resources/org/apache/jena/security/SecuredAssemblerTest.ttl
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-security/src/test/resources/org/apache/jena/security/SecuredAssemblerTest.ttl?rev=1509448&view=auto
==============================================================================
--- jena/Experimental/jena-security/src/test/resources/org/apache/jena/security/SecuredAssemblerTest.ttl (added)
+++ jena/Experimental/jena-security/src/test/resources/org/apache/jena/security/SecuredAssemblerTest.ttl Thu Aug 1 21:53:43 2013
@@ -0,0 +1,25 @@
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix owl: <http://www.w3.org/2002/07/owl#> .
+
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+@prefix sec: <http://apache.org/jena/security/Assembler#> .
+@prefix my: <http://apache.org/jena/security/test#> .
+
+<> ja:loadClass "org.apache.jena.security.SecuredAssembler" .
+
+sec:Model
+ rdfs:subClassOf ja:NamedModel ;
+ .
+
+my:baseModel
+ a ja:MemoryModel;
+ .
+
+my:secModel
+ a sec:Model;
+ sec:baseModel my:baseModel ;
+ ja:modelName "http://example.com/securedModel" ;
+ sec:evaluatorFactory "org.apache.jena.security.MockSecurityEvaluator" ;
+ .
+