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" ;
+	.
+