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 2015/04/25 10:51:10 UTC

[07/24] jena git commit: modifications to rename jena security as jena permissions modifications to adapt to removed deprecated classes in org.apache.jena.

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredContainerTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredContainerTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredContainerTest.java
new file mode 100644
index 0000000..2d80725
--- /dev/null
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredContainerTest.java
@@ -0,0 +1,480 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import java.util.Set;
+
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.MockSecurityEvaluator;
+import org.apache.jena.permissions.SecurityEvaluator;
+import org.apache.jena.permissions.SecurityEvaluatorParameters;
+import org.apache.jena.permissions.SecurityEvaluator.Action;
+import org.apache.jena.permissions.model.SecuredContainer;
+import org.apache.jena.permissions.model.impl.SecuredContainerImpl;
+import org.apache.jena.rdf.model.Container ;
+import org.apache.jena.rdf.model.ResourceFactory ;
+import org.apache.jena.rdf.model.Statement ;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith( value = SecurityEvaluatorParameters.class )
+public abstract class SecuredContainerTest extends SecuredResourceTest
+{
+
+	public SecuredContainerTest( final MockSecurityEvaluator securityEvaluator )
+	{
+		super(securityEvaluator);
+	}
+
+	private SecuredContainer getSecuredContainer()
+	{
+		return (SecuredContainer) getSecuredRDFNode();
+	}
+
+	@Override
+	@Before
+	public void setup()
+	{
+		super.setup();
+		final Container container = baseModel
+				.getBag("http://example.com/testContainer");
+		container.add("SomeDummyItem");
+		setSecuredRDFNode(
+				SecuredContainerImpl.getInstance(securedModel, container),
+				container);
+	}
+
+	@Test
+	public void test()
+	{
+		try
+		{
+			getSecuredContainer().size();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	/**
+	 * @sec.graph Update
+	 * @sec.triple Create SecTriple( this, RDF.li, o );
+	 * @throws AccessDeniedException
+	 */
+	@Test
+	public void testAdd()
+	{
+		final Set<Action> perms = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Update, Action.Create });
+		try
+		{
+			getSecuredContainer().add(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
+		{
+			getSecuredContainer().add('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
+		{
+			getSecuredContainer().add(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
+		{
+			getSecuredContainer().add(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
+		{
+			getSecuredContainer().add(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()));
+			}
+		}
+
+		final Object o = Integer.valueOf("1234");
+		try
+		{
+			getSecuredContainer().add(o);
+			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
+		{
+			getSecuredContainer().add(
+					ResourceFactory
+							.createResource("http://example.com/testResource"));
+			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
+		{
+			getSecuredContainer().add("foo");
+			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
+		{
+			getSecuredContainer().add("dos", "esp");
+			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 testContains()
+	{
+		try
+		{
+			getSecuredContainer().contains(true);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			getSecuredContainer().contains('c');
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			getSecuredContainer().contains(3.14D);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			getSecuredContainer().contains(3.14F);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			getSecuredContainer().contains(2L);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		final Object o = Integer.valueOf("1234");
+		try
+		{
+			getSecuredContainer().contains(o);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			getSecuredContainer().contains(
+					ResourceFactory
+							.createResource("http://example.com/testResource"));
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			getSecuredContainer().contains("foo");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			getSecuredContainer().contains("dos", "esp");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testIterator()
+	{
+		try
+		{
+			getSecuredContainer().iterator();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				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 });
+		final Statement s = baseModel.listStatements().next();
+		try
+		{
+			getSecuredContainer().remove(s);
+			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()));
+			}
+		}
+
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredLiteralTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredLiteralTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredLiteralTest.java
new file mode 100644
index 0000000..446bdc4
--- /dev/null
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredLiteralTest.java
@@ -0,0 +1,469 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import org.apache.jena.datatypes.DatatypeFormatException ;
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.MockSecurityEvaluator;
+import org.apache.jena.permissions.SecurityEvaluatorParameters;
+import org.apache.jena.permissions.SecurityEvaluator.Action;
+import org.apache.jena.permissions.model.SecuredLiteral;
+import org.apache.jena.permissions.model.impl.SecuredLiteralImpl;
+import org.apache.jena.rdf.model.Literal ;
+import org.apache.jena.rdf.model.ResourceFactory ;
+import org.apache.jena.rdf.model.ResourceRequiredException ;
+import org.apache.jena.shared.BadBooleanException ;
+import org.apache.jena.shared.BadCharLiteralException ;
+import org.junit.Assert ;
+import org.junit.Before ;
+import org.junit.Test ;
+import org.junit.runner.RunWith ;
+
+@RunWith( value = SecurityEvaluatorParameters.class )
+public class SecuredLiteralTest extends SecuredRDFNodeTest
+{
+
+	public SecuredLiteralTest( final MockSecurityEvaluator securityEvaluator )
+	{
+		super(securityEvaluator);
+	}
+
+	private SecuredLiteral getSecuredLiteral()
+	{
+		return (SecuredLiteral) getSecuredRDFNode();
+	}
+
+	@Test
+	public void sameValueAs()
+	{
+		try
+		{
+			getSecuredLiteral().sameValueAs(
+					ResourceFactory.createPlainLiteral("Junk"));
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Override
+	@Before
+	public void setup()
+	{
+		super.setup();
+		Literal l = ResourceFactory.createTypedLiteral("literal");
+		setSecuredRDFNode(SecuredLiteralImpl.getInstance(securedModel, l), l);
+	}
+
+	@Test
+	public void testAsLiteral()
+	{
+		getSecuredLiteral().asLiteral();
+	}
+
+	@Test
+	public void testAsResource()
+	{
+		try
+		{
+			getSecuredLiteral().asResource();
+			Assert.fail("Should have thrown ResoruceRequiredException");
+		}
+		catch (final ResourceRequiredException e)
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetBoolean()
+	{
+		try
+		{
+			getSecuredLiteral().getBoolean();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | BadBooleanException e )
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetByte()
+	{
+		try
+		{
+			getSecuredLiteral().getByte();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | NumberFormatException e )
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetChar()
+	{
+		try
+		{
+			getSecuredLiteral().getChar();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | BadCharLiteralException e )
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetDatatype()
+	{
+		try
+		{
+			getSecuredLiteral().getDatatype();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetDatatypeURI()
+	{
+		try
+		{
+			getSecuredLiteral().getDatatypeURI();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetDouble()
+	{
+		try
+		{
+			getSecuredLiteral().getDouble();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | NumberFormatException e )
+		{
+			// expected
+		}
+
+	}
+
+	@Test
+	public void testGetFloat()
+	{
+		try
+		{
+			getSecuredLiteral().getFloat();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | NumberFormatException e )
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetInt()
+	{
+		try
+		{
+			getSecuredLiteral().getInt();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | NumberFormatException e )
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetLanguage()
+	{
+		try
+		{
+			getSecuredLiteral().getLanguage();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetLexicalForm()
+	{
+		try
+		{
+			getSecuredLiteral().getLexicalForm();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetLong()
+	{
+		try
+		{
+			getSecuredLiteral().getLong();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | NumberFormatException e )
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetShort()
+	{
+		try
+		{
+			getSecuredLiteral().getShort();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | NumberFormatException e )
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetString()
+	{
+		try
+		{
+			getSecuredLiteral().getString();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		catch (final DatatypeFormatException | NumberFormatException e )
+		{
+			// expected
+		}
+	}
+
+	@Test
+	public void testGetValue()
+	{
+		try
+		{
+			getSecuredLiteral().getValue();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testIsWellFormedXML()
+	{
+		try
+		{
+			getSecuredLiteral().isWellFormedXML();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java
new file mode 100644
index 0000000..28b33ba
--- /dev/null
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java
@@ -0,0 +1,335 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import java.net.URL;
+import java.security.Principal;
+import java.util.Set;
+
+import org.apache.http.auth.BasicUserPrincipal;
+import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.permissions.Factory;
+import org.apache.jena.permissions.SecurityEvaluator;
+import org.apache.jena.permissions.model.SecuredModel;
+import org.apache.jena.rdf.model.* ;
+import org.apache.jena.vocabulary.RDF ;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests secured model functions against graph where only partial data is 
+ * available to the user.
+ *
+ */
+public class SecuredModelDetailTest {
+
+	private static String NS_FMT = "http://example.com/%s";
+	private Model baseModel;
+	private SecuredModel securedModel;
+	private DetailEvaluator secEval;
+	private Property pTo = ResourceFactory.createProperty("http://example.com/to");
+	private Property pFrom = ResourceFactory
+			.createProperty( "http://example.com/from");
+	
+	@Before
+	public void setup()
+	{
+		baseModel = ModelFactory.createDefaultModel();
+		baseModel.removeAll();
+		URL url = SecuredModelDetailTest.class.getClassLoader().getResource( "org/apache/jena/permissions/model/detail.ttl");
+		baseModel.read( url.toExternalForm() );
+		secEval = new DetailEvaluator( baseModel );
+		securedModel = Factory.getInstance(secEval,
+				"http://example.com/detailModelTest", baseModel);
+	}
+
+
+	@Test
+	public void testContains()
+	{
+		secEval.setPrincipal("darla");
+		/* darla can only add values to msg4
+		 ex:msg4  rdf:type ex:msg; 
+			ex:to "darla" ;
+			ex:from "bob" ;
+			ex:subj "bob to darla 1"
+		 */
+		
+		Resource s = ResourceFactory.createResource( String.format( NS_FMT, "msg3") );
+		Assert.assertTrue( "should contain msg3", baseModel.contains( s, null ));
+		Assert.assertFalse( "should not see msg3", securedModel.contains( s, null ));
+		Assert.assertTrue( "Sould contain a resource msg3", baseModel.containsResource( s));
+		Assert.assertFalse( "Should not contain a resource msg3'", securedModel.containsResource( s) );
+		
+		s = ResourceFactory.createResource( String.format( NS_FMT, "msg4") );
+		Assert.assertTrue( "should contain msg4", baseModel.contains( s, null ));
+		Assert.assertTrue( "should see msg4", securedModel.contains( s, null ));
+		Assert.assertTrue( "Sould contain a resource msg4", baseModel.containsResource( s));
+		Assert.assertTrue( "Should contain a resource msg4'", securedModel.containsResource( s) );
+		
+		Assert.assertTrue( "Sould contain a to 'bob'", baseModel.contains( null, pTo, "bob"));
+		Assert.assertFalse( "Should not see to 'bob'", securedModel.contains( null, pTo, "bob") );
+		
+		Assert.assertTrue( "Sould contain a from 'bob'", baseModel.contains( null, pFrom, "bob"));
+		Assert.assertTrue( "Should see from 'bob'", securedModel.contains( null, pFrom, "bob") );
+
+	}
+	
+	@Test
+	public void testListObjects()
+	{
+		secEval.setPrincipal("darla");
+		/* darla can only add values to msg4
+		 ex:msg4  rdf:type ex:msg; 
+			ex:to "darla" ;
+			ex:from "bob" ;
+			ex:subj "bob to darla 1"
+		 */
+		
+		Assert.assertTrue( baseModel.listObjects().toList().size() > 4);
+		Assert.assertEquals( 4,  securedModel.listObjects().toList().size());
+		
+		Assert.assertTrue( baseModel.listObjectsOfProperty( pFrom ).toList().size() > 1);
+		Assert.assertEquals( 1, securedModel.listObjectsOfProperty( pFrom ).toList().size());
+		
+		Resource s = ResourceFactory.createResource( String.format( NS_FMT, "msg3"));
+		Assert.assertEquals( 1, baseModel.listObjectsOfProperty( s, pFrom).toList().size());
+		Assert.assertEquals( 0, securedModel.listObjectsOfProperty( s, pFrom ).toList().size());
+		
+		s = ResourceFactory.createResource( String.format( NS_FMT, "msg4"));
+		Assert.assertEquals( 1, baseModel.listObjectsOfProperty( s, pFrom).toList().size());
+		Assert.assertEquals( 1, securedModel.listObjectsOfProperty( s, pFrom ).toList().size());
+	}
+	
+	@Test
+	public void testListResources() {
+		secEval.setPrincipal("darla");
+		/* darla can only add values to msg4
+		 ex:msg4  rdf:type ex:msg; 
+			ex:to "darla" ;
+			ex:from "bob" ;
+			ex:subj "bob to darla 1"
+		 */
+		Assert.assertEquals( 5, baseModel.listResourcesWithProperty( pFrom ).toList().size());
+		Assert.assertEquals( 1, securedModel.listResourcesWithProperty( pFrom ).toList().size());
+		
+		RDFNode o = ResourceFactory.createPlainLiteral("bob");
+		Assert.assertEquals( 3, baseModel.listResourcesWithProperty( pFrom, o ).toList().size());
+		Assert.assertEquals( 1, securedModel.listResourcesWithProperty( pFrom, o ).toList().size());
+		Assert.assertEquals( 1, baseModel.listResourcesWithProperty( pTo, o ).toList().size());
+		Assert.assertEquals( 0, securedModel.listResourcesWithProperty( pTo, o ).toList().size());
+		
+		Assert.assertEquals( 4, baseModel.listResourcesWithProperty( null, o ).toList().size());
+		Assert.assertEquals( 1, securedModel.listResourcesWithProperty( null, o ).toList().size());
+		
+		o = ResourceFactory.createPlainLiteral("alice");
+		Assert.assertEquals( 4, baseModel.listResourcesWithProperty( null, o ).toList().size());
+		Assert.assertEquals( 0, securedModel.listResourcesWithProperty( null, o ).toList().size());	
+	}
+	
+	@Test
+	public void testListStatements()
+	{
+		secEval.setPrincipal("darla");
+		/* darla can only add values to msg4
+		 ex:msg4  rdf:type ex:msg; 
+			ex:to "darla" ;
+			ex:from "bob" ;
+			ex:subj "bob to darla 1"
+		 */
+		Assert.assertEquals( 20, baseModel.listStatements().toList().size());
+		Assert.assertEquals( 4, securedModel.listStatements().toList().size());
+		
+		RDFNode o = ResourceFactory.createPlainLiteral("bob");
+		Assert.assertEquals( 1, baseModel.listStatements( null, pTo, o).toList().size());
+		Assert.assertEquals( 0, securedModel.listStatements( null, pTo, o).toList().size());
+		Assert.assertEquals( 3, baseModel.listStatements( null, pFrom, o).toList().size());
+		Assert.assertEquals( 1, securedModel.listStatements( null, pFrom, o).toList().size());
+		
+		Resource s = ResourceFactory.createResource( String.format( NS_FMT, "msg3"));
+		Assert.assertEquals( 4, baseModel.listStatements( s, null, (RDFNode)null).toList().size());
+		Assert.assertEquals( 0, securedModel.listStatements( s, null, (RDFNode)null).toList().size());
+		
+		Assert.assertEquals( 1, baseModel.listStatements( s, pTo, (RDFNode)null).toList().size());
+		Assert.assertEquals( 0, securedModel.listStatements( s, pTo, (RDFNode)null).toList().size());
+
+		Assert.assertEquals( 0, baseModel.listStatements( s, pTo, o).toList().size());
+		Assert.assertEquals( 0, securedModel.listStatements( s, pTo, o).toList().size());
+		o = ResourceFactory.createPlainLiteral("chuck");
+		Assert.assertEquals( 1, baseModel.listStatements( s, pTo, o).toList().size());
+		Assert.assertEquals( 0, securedModel.listStatements( s, pTo, o).toList().size());
+			
+			
+		s = ResourceFactory.createResource( String.format( NS_FMT, "msg4"));
+		Assert.assertEquals( 4, baseModel.listStatements( s, null, (RDFNode)null).toList().size());
+		Assert.assertEquals( 4, securedModel.listStatements( s, null, (RDFNode)null).toList().size());
+		
+		Assert.assertEquals( 1, baseModel.listStatements( s, pTo, (RDFNode)null).toList().size());
+		Assert.assertEquals( 1, securedModel.listStatements( s, pTo, (RDFNode)null).toList().size());
+
+		Assert.assertEquals( 0, baseModel.listStatements( s, pTo, o).toList().size());
+		Assert.assertEquals( 0, securedModel.listStatements( s, pTo, o).toList().size());
+		o = ResourceFactory.createPlainLiteral("darla");
+		Assert.assertEquals( 1, baseModel.listStatements( s, pTo, o).toList().size());
+		Assert.assertEquals( 1, securedModel.listStatements( s, pTo, o).toList().size());
+	}
+	
+	@Test
+	public void testListSubjects()
+	{
+		secEval.setPrincipal("darla");
+		/* darla can only add values to msg4
+		 ex:msg4  rdf:type ex:msg; 
+			ex:to "darla" ;
+			ex:from "bob" ;
+			ex:subj "bob to darla 1"
+		 */
+		Assert.assertEquals( 5, baseModel.listSubjects().toList().size());
+		Assert.assertEquals( 1, securedModel.listSubjects().toList().size());
+		
+		Assert.assertEquals( 5, baseModel.listSubjectsWithProperty( pTo ).toList().size());
+		Assert.assertEquals( 1, securedModel.listSubjectsWithProperty( pTo ).toList().size());
+		
+		RDFNode o = ResourceFactory.createPlainLiteral("darla");
+		Assert.assertEquals( 1, baseModel.listSubjectsWithProperty( pTo, o ).toList().size());
+		Assert.assertEquals( 1, securedModel.listSubjectsWithProperty( pTo, o ).toList().size());
+		
+		o = ResourceFactory.createPlainLiteral("bob");
+		Assert.assertEquals( 1, baseModel.listSubjectsWithProperty( pTo, o ).toList().size());
+		Assert.assertEquals( 0, securedModel.listSubjectsWithProperty( pTo, o ).toList().size());
+	
+		Assert.assertEquals( 4, baseModel.listSubjectsWithProperty( null, o ).toList().size());
+		Assert.assertEquals( 1, securedModel.listSubjectsWithProperty( null, o ).toList().size());
+		
+	}
+	
+	/**
+	 * An example evaluator that only provides access ot messages in the graph that 
+	 * are from or to the principal.
+	 *
+	 */
+	private class DetailEvaluator implements SecurityEvaluator {
+		
+		private Principal principal;
+		private Model model;
+		private RDFNode msgType = ResourceFactory.createResource( "http://example.com/msg" );
+		private Property pTo = ResourceFactory.createProperty( "http://example.com/to" );
+		private Property pFrom = ResourceFactory.createProperty( "http://example.com/from" );
+		
+		/**
+		 * 
+		 * @param model The graph we are going to evaluate against.
+		 */
+		public DetailEvaluator( Model model )
+		{
+			this.model = model;
+		}
+		
+		@Override
+		public boolean evaluate(Object principal, Action action, SecNode graphIRI) {
+			// we allow any action on a graph.
+			return true;
+		}
+
+		private boolean evaluate( Resource r )
+		{
+			// a message is only available to sender or recipient
+			if (r.hasProperty( RDF.type, msgType ))
+			{
+				return r.hasProperty( pTo, ((Principal)principal).getName() ) ||
+						r.hasProperty( pFrom, ((Principal)principal).getName());
+			}
+			return true;	
+		}
+		
+		private boolean evaluate( SecNode node )
+		{
+			if (node.equals( SecNode.ANY )) {
+				return false;  // all wild cards are false
+			}
+			
+			if (node.getType().equals( SecNode.Type.URI)) {
+				Resource r = model.createResource( node.getValue() );
+				return evaluate( r );
+			}
+			else if (node.getType().equals( SecNode.Type.Anonymous)) {
+				Resource r = model.getRDFNode( NodeFactory.createAnon( new AnonId( node.getValue()) ) ).asResource();
+				return evaluate( r );
+			}
+			else
+			{
+				return true;
+			}
+
+		}
+		
+		private boolean evaluate( SecTriple triple ) {
+			return evaluate( triple.getSubject()) &&
+					evaluate( triple.getObject()) &&
+					evaluate( triple.getPredicate());
+		}
+		
+		@Override
+		public boolean evaluate(Object principal, Action action, SecNode graphIRI, SecTriple triple) {
+			return evaluate( triple );
+		}
+
+		@Override
+		public boolean evaluate(Object principal, Set<Action> actions, SecNode graphIRI) {
+			return true;
+		}
+
+		@Override
+		public boolean evaluate(Object principal, Set<Action> actions, SecNode graphIRI,
+				SecTriple triple) {
+			return evaluate( triple );
+		}
+
+		@Override
+		public boolean evaluateAny(Object principal, Set<Action> actions, SecNode graphIRI) {
+			return true;
+		}
+
+		@Override
+		public boolean evaluateAny(Object principal, Set<Action> actions, SecNode graphIRI,
+				SecTriple triple) {
+			return evaluate( triple );
+		}
+
+		@Override
+		public boolean evaluateUpdate(Object principal, SecNode graphIRI, SecTriple from, SecTriple to) {
+			return evaluate( from ) && evaluate( to );
+		}
+
+		public void setPrincipal( String userName )
+		{
+			if (userName == null)
+			{
+				principal = null;
+			}
+			principal = new BasicUserPrincipal( userName );
+		}
+		@Override
+		public Principal getPrincipal() {
+			return principal;
+		}
+
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelTest.java
new file mode 100644
index 0000000..6280a33
--- /dev/null
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelTest.java
@@ -0,0 +1,2035 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import java.io.* ;
+import java.net.URL ;
+import java.util.ArrayList ;
+import java.util.List ;
+import java.util.Set ;
+
+import org.apache.jena.datatypes.xsd.XSDDatatype ;
+import org.apache.jena.graph.Graph ;
+import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.graph.Triple ;
+import org.apache.jena.permissions.*;
+import org.apache.jena.permissions.SecurityEvaluator.Action;
+import org.apache.jena.permissions.graph.SecuredGraph;
+import org.apache.jena.permissions.graph.SecuredPrefixMappingTest;
+import org.apache.jena.permissions.model.SecuredModel;
+import org.apache.jena.rdf.model.* ;
+import org.junit.Assert ;
+import org.junit.Before ;
+import org.junit.Test ;
+import org.junit.runner.RunWith ;
+
+@RunWith( value = SecurityEvaluatorParameters.class )
+public class SecuredModelTest
+{
+	protected final MockSecurityEvaluator securityEvaluator;
+	protected SecuredModel securedModel;
+	protected Model baseModel;
+	protected Resource s;
+	protected Property p;
+	protected Resource o;
+
+	public SecuredModelTest( final MockSecurityEvaluator securityEvaluator )
+	{
+		this.securityEvaluator = securityEvaluator;
+	}
+
+	/**
+	 * create an unsecured securedModel.
+	 * 
+	 * @return
+	 */
+	protected Model createModel()
+	{
+		return ModelFactory.createDefaultModel();
+	}
+
+	@Before
+	public void setup()
+	{
+		baseModel = createModel();
+		baseModel.removeAll();
+		securedModel = Factory.getInstance(securityEvaluator,
+				"http://example.com/securedGraph", baseModel);
+		s = ResourceFactory.createResource("http://example.com/graph/s");
+		p = ResourceFactory.createProperty("http://example.com/graph/p");
+		o = ResourceFactory.createResource("http://example.com/graph/o");
+		baseModel.add(s, p, o);
+	}
+
+	@Test
+	public void testAdd() throws Exception
+	{
+		final List<Statement> stmt = baseModel.listStatements().toList();
+		final Set<Action> createAndUpdate = SecurityEvaluator.Util
+				.asSet(new Action[] { Action.Update, Action.Create });
+		try
+		{
+			securedModel.add(stmt);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(baseModel);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(stmt.get(0));
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+
+			securedModel.add(stmt.toArray(new Statement[stmt.size()]));
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(baseModel.listStatements());
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(baseModel);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(s, p, o);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(s, p, "foo");
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(s, p, "foo", false);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(s, p, "foo", XSDDatatype.XSDstring);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.add(s, p, "foo", "en");
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+	}
+
+	@Test
+	public void testAnonymousInModel()
+	{
+		// test anonymous
+		final RDFNode rdfNode = ResourceFactory.createResource();
+		final RDFNode rdfNode2 = rdfNode.inModel(securedModel);
+		Assert.assertEquals(
+				"Should have placed RDFNode in secured securedModel",
+				securedModel, rdfNode2.getModel());
+	}
+
+	@Test
+	public void testAsRDFNode() throws Exception
+	{
+		securedModel.asRDFNode(NodeFactory.createURI("http://example.com/rdfNode"));
+	}
+
+	@Test
+	public void testAsStatement()
+	{
+		final Triple t = new Triple(s.asNode(), p.asNode(), o.asNode());
+		try
+		{
+			securedModel.asStatement(t);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testContains() throws Exception
+	{
+		final Statement stmt = baseModel.listStatements().next();
+		try
+		{
+			securedModel.contains(stmt);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			securedModel.contains(s, p);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.contains(s, p, o);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.contains(s, p, "foo");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.contains(s, p, "foo", "en");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+	}
+
+	@Test
+	public void testContainsAll() throws Exception
+	{
+		try
+		{
+			securedModel.containsAll(baseModel);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.containsAll(baseModel.listStatements());
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testCreateAlt() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+		try
+		{
+			securedModel.createAlt();
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.createAlt("foo");
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testCreateBag() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+		try
+		{
+			securedModel.createBag();
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.createBag("foo");
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testCreateList() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Update, Action.Create });
+
+		final List<RDFNode> nodeList = new ArrayList<RDFNode>();
+		try
+		{
+			securedModel.createList();
+			if (!securityEvaluator.evaluate(Action.Update))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Update))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		baseModel.removeAll();
+
+		try
+		{
+			securedModel.createList(nodeList.iterator());
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		baseModel.removeAll();
+
+		try
+		{
+			final RDFNode[] list = new RDFNode[] {
+					ResourceFactory.createResource(),
+					ResourceFactory.createResource(),
+					ResourceFactory.createResource(),
+					ResourceFactory.createResource(), };
+
+			securedModel.createList(list);
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		baseModel.removeAll();
+
+	}
+
+	@Test
+	public void testCreateLiteral() throws Exception
+	{
+		securedModel.createLiteral("foo");
+		securedModel.createLiteral("foo", false);
+	}
+
+	@Test
+	public void testCreateLiteralBoolean() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+
+		try
+		{
+			securedModel.createLiteralStatement(s, p, true);
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testCreateLiteralChar() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+		try
+		{
+			securedModel.createLiteralStatement(s, p, 'a');
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testCreateLiteralDouble() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+
+		try
+		{
+			securedModel.createLiteralStatement(s, p, 1.0d);
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testCreateLiteralFloat() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+
+		try
+		{
+			securedModel.createLiteralStatement(s, p, 1.0f);
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testCreateLiteralInt() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+
+		try
+		{
+			securedModel.createLiteralStatement(s, p, 1);
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+	}
+
+	@Test
+	public void testCreateLiteralLong() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+
+		try
+		{
+			securedModel.createLiteralStatement(s, p, 1L);
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testCreateLiteralObject() throws Exception
+	{
+		final Set<Action> CU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Create, Action.Update });
+
+		try
+		{
+			securedModel.createLiteralStatement(s, p, new URL( "http://example.com/testing/URIType"));
+			if (!securityEvaluator.evaluate(CU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(CU))
+			{
+				e.printStackTrace();
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testDifference() throws Exception
+	{
+		try
+		{
+			securedModel.difference(baseModel);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testEquals() throws Exception
+	{
+		securedModel.equals(baseModel);
+		baseModel.equals(securedModel);
+	}
+
+	@Test
+	public void testExpandPrefix() throws Exception
+	{
+		try
+		{
+			securedModel.expandPrefix("foo");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetAlt() throws Exception
+	{
+		final Resource a = baseModel
+				.createAlt("http://example.com/securedModel/alt");
+		try
+		{
+
+			securedModel.getAlt(a);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			securedModel.getAlt("http://example.com/securedModel/alt");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetAnyReifiedStmt()
+	{
+		// first with create.
+		final Set<Action> UCR = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Update, Action.Create, Action.Read });
+		try
+		{
+			securedModel.getAnyReifiedStatement(baseModel.listStatements()
+					.next());
+			if (!securityEvaluator.evaluate(UCR))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(UCR))
+			{
+				e.printStackTrace();
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		final Statement st = baseModel.listStatements().next();
+		baseModel.createReifiedStatement(st);
+		// now it is there so try with read
+		try
+		{
+			securedModel.getAnyReifiedStatement(st);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetBag()
+	{
+		final Resource b = baseModel
+				.createBag("http://example.com/securedModel/bag");
+		try
+		{
+			securedModel.getBag(b);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			securedModel.getBag("http://example.com/securedModel/bag");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetGraph() throws Exception
+	{
+		final Graph g = securedModel.getGraph();
+		Assert.assertTrue(g instanceof SecuredGraph);
+		EqualityTester.testInequality("getGraph test", g, baseModel.getGraph());
+	}
+
+	@Test
+	public void testGetLock()
+	{
+		securedModel.getLock();
+	}
+
+	@Test
+	public void testGetProperty()
+	{
+
+		try
+		{
+			securedModel.getProperty("foo");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.getProperty(s, p);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.getProperty("fooNS", "foo");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetQNameFor() throws Exception
+	{
+		try
+		{
+			securedModel.qnameFor("foo");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testgetRDFNode()
+	{
+
+		try
+		{
+			securedModel.getRDFNode(NodeFactory.createURI("foo"));
+			if (!securityEvaluator.evaluate(Action.Update))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Update))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetReader()
+	{
+		securedModel.getReader();
+		securedModel.getReader("TURTLE");
+	}
+
+	@Test
+	public void testGetResource()
+	{
+		securedModel.getResource("foo");
+	}
+
+	@Test
+	public void testGetSeq()
+	{
+		final Resource s = baseModel
+				.createSeq("http://example.com/securedModel/seq");
+		try
+		{
+			securedModel.getSeq(s);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.getSeq("http://example.com/securedModel/seq");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testGetWriter()
+	{
+		securedModel.getWriter();
+		securedModel.getWriter("TURTLE");
+	}
+
+	@Test
+	public void testIndependent() throws Exception
+	{
+		Assert.assertFalse(securedModel.independent());
+	}
+
+	@Test
+	public void testIntersection() throws Exception
+	{
+		try
+		{
+			securedModel.intersection(baseModel);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testIsClosed() throws Exception
+	{
+		securedModel.isClosed();
+	}
+
+	@Test
+	public void testIsEmpty() throws Exception
+	{
+		try
+		{
+			securedModel.isEmpty();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testIsIsomorphicWith()
+	{
+		try
+		{
+			securedModel.isIsomorphicWith(baseModel);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			baseModel.isIsomorphicWith(securedModel);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testIsReified()
+	{
+		try
+		{
+			securedModel.isReified(baseModel.listStatements().next());
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+	}
+
+	@Test
+	public void testListLiteralStatements() throws Exception
+	{
+		try
+		{
+			securedModel.listLiteralStatements(s, p, true);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.listLiteralStatements(s, p, '0');
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.listLiteralStatements(s, p, 2.0d);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.listLiteralStatements(s, p, 2.0f);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.listLiteralStatements(s, p, 1);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testLock() throws Exception
+	{
+		try
+		{
+			securedModel.lock();
+			if (!securityEvaluator.evaluate(Action.Update))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Update))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testPrefixMapping() throws Exception
+	{
+		SecuredPrefixMappingTest.runTests(securityEvaluator, securedModel);
+	}
+
+	@Test
+	public void testQuery() throws Exception
+	{
+		final Selector s = new SimpleSelector();
+		try
+		{
+			securedModel.query(s);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testRDFNodeInModel()
+	{
+		// test uri
+		final RDFNode rdfNode = ResourceFactory
+				.createResource("http://exmple.com/testInModel");
+		final RDFNode rdfNode2 = rdfNode.inModel(securedModel);
+		Assert.assertEquals(
+				"Should have placed RDFNode in secured securedModel",
+				securedModel, rdfNode2.getModel());
+	}
+
+	@Test
+	public void testReadEmpty() throws Exception
+	{
+		final Set<Action> createAndUpdate = SecurityEvaluator.Util
+				.asSet(new Action[] { Action.Update, Action.Create });
+
+		final String XML_INPUT = "<rdf:RDF"
+				+ "   xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' "
+				+ "   xmlns:rt='http://example.com/readTest#' "
+				+ "   xmlns:j.0='http://example.com/readTest#3' > "
+				+ "  <rdf:Description rdf:about='http://example.com/readTest#1'> "
+				+ "    <rdf:type rdf:resource='http://example.com/readTest#3'/>"
+				+ "  </rdf:Description>" + "</rdf:RDF>";
+		final String TTL_INPUT = "@prefix rt: <http://example.com/readTest#> . rt:1 a rt:3 .";
+		final String base = "http://example.com/test";
+		final String lang = "TURTLE";
+		try
+		{
+			final URL url = SecuredModelTest.class.getResource("./test.xml");
+			securedModel.read(url.toString());
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		finally
+		{
+			baseModel.removeAll();
+		}
+
+		try
+		{
+			final InputStream in = new ByteArrayInputStream(
+					XML_INPUT.getBytes());
+			securedModel.read(in, base);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		finally
+		{
+			baseModel.removeAll();
+		}
+
+		try
+		{
+			final Reader reader = new StringReader(XML_INPUT);
+			securedModel.read(reader, base);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		finally
+		{
+			baseModel.removeAll();
+		}
+
+		try
+		{
+			final URL url = SecuredModelTest.class.getResource("./test.ttl");
+			securedModel.read(url.toString(), lang);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		finally
+		{
+			baseModel.removeAll();
+		}
+
+		try
+		{
+			final InputStream in = new ByteArrayInputStream(
+					TTL_INPUT.getBytes());
+			securedModel.read(in, base, lang);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		finally
+		{
+			baseModel.removeAll();
+		}
+
+		try
+		{
+			final Reader reader = new StringReader(TTL_INPUT);
+			securedModel.read(reader, base, lang);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		finally
+		{
+			baseModel.removeAll();
+		}
+
+		try
+		{
+			final URL url = SecuredModelTest.class.getResource("./test.ttl");
+			securedModel.read(url.toString(), base, lang);
+			if (!securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(createAndUpdate))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		finally
+		{
+			baseModel.removeAll();
+		}
+
+	}
+
+	@Test
+	public void testRemove() throws Exception
+	{
+		final Set<Action> DU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Delete, Action.Update });
+
+		final List<Statement> stmt = baseModel.listStatements().toList();
+		try
+		{
+			securedModel.remove(baseModel.listStatements().toList());
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			securedModel.remove(baseModel);
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.remove(stmt.get(0));
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			securedModel.remove(stmt.toArray(new Statement[stmt.size()]));
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			securedModel.remove(baseModel.listStatements());
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			securedModel.remove(baseModel);
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			securedModel.remove(s, p, o);
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+	}
+
+	@Test
+	public void testRemoveAll() throws Exception
+	{
+		final Set<Action> DU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Delete, Action.Update });
+
+		try
+		{
+			securedModel.removeAll();
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		// put some data back
+		baseModel.add(s, p, o);
+		try
+		{
+			securedModel.removeAll(s, p, o);
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testRemoveAllReifications()
+	{
+		final Set<Action> DU = SecurityEvaluator.Util.asSet(new Action[] {
+				Action.Delete, Action.Update });
+
+		final List<Statement> stmt = baseModel.listStatements().toList();
+		baseModel.createReifiedStatement(stmt.get(0));
+
+		try
+		{
+			securedModel.removeAllReifications(stmt.get(0));
+			if (!securityEvaluator.evaluate(DU))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(DU))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testRequiredProperty()
+	{
+
+		try
+		{
+			securedModel.getRequiredProperty(s, p);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testSize() throws Exception
+	{
+		try
+		{
+			securedModel.size();
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testUnion() throws Exception
+	{
+		try
+		{
+			securedModel.union(baseModel);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+		try
+		{
+			baseModel.union(securedModel);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testVariableInModel()
+	{
+		try
+		{
+			final RDFNode rdfNode = ResourceFactory
+					.createTypedLiteral("yeehaw");
+			final RDFNode rdfNode2 = rdfNode.inModel(securedModel);
+			if (!securityEvaluator.evaluate(Action.Update))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+			Assert.assertEquals(
+					"Should have placed RDFNode in secured securedModel",
+					securedModel, rdfNode2.getModel());
+
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Update))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+	}
+
+	@Test
+	public void testWrapAsResource() throws Exception
+	{
+		securedModel.wrapAsResource(NodeFactory.createURI("http://example.com/rdfNode"));
+	}
+
+	@Test
+	public void testWrite() throws Exception
+	{
+		final OutputStream out = new ByteArrayOutputStream();
+		final Writer writer = new CharArrayWriter();
+		final String lang = "TURTLE";
+		try
+		{
+			securedModel.write(out);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.write(writer);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.write(out, lang);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.write(writer, lang);
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.write(out, lang, "http://example.com/securedGraph");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+		try
+		{
+			securedModel.write(writer, lang, "http://example.com/securedGraph");
+			if (!securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail("Should have thrown AccessDenied Exception");
+			}
+		}
+		catch (final AccessDeniedException e)
+		{
+			if (securityEvaluator.evaluate(Action.Read))
+			{
+				Assert.fail(String
+						.format("Should not have thrown AccessDenied Exception: %s - %s",
+								e, e.getTriple()));
+			}
+		}
+
+	}
+}
\ No newline at end of file