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


Reply via email to