/*
* 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.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.SecuredAlt;
import org.apache.jena.permissions.model.SecuredBag;
import org.apache.jena.permissions.model.SecuredSeq;
import org.apache.jena.permissions.model.impl.SecuredSeqImpl;
import org.apache.jena.rdf.model.Alt;
import org.apache.jena.rdf.model.Bag;
import org.apache.jena.rdf.model.ResourceFactory;
import org.apache.jena.rdf.model.Seq;
import org.apache.jena.shared.AccessDeniedException;
import org.apache.jena.shared.ReadDeniedException;
import org.apache.jena.shared.UpdateDeniedException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(value = SecurityEvaluatorParameters.class)
public class SecuredSeqTest extends SecuredContainerTest {
private Seq seq;
public SecuredSeqTest(final MockSecurityEvaluator securityEvaluator) {
super(securityEvaluator);
// TODO Auto-generated constructor stub
}
private SecuredSeq getSecuredSeq() {
return (SecuredSeq) getSecuredRDFNode();
}
@Override
@Before
public void setup() {
super.setup();
seq = baseModel.getSeq("http://example.com/testContainer");
setSecuredRDFNode(SecuredSeqImpl.getInstance(securedModel, seq), seq);
}
@Override
@Test
public void testAdd() {
final Set<Action> perms = SecurityEvaluator.Util.asSet(new Action[] {
Action.Update, Action.Create });
try {
getSecuredSeq().add(2, true);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().add(2, 'c');
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().add(2, 3.14d);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().add(2, 3.14F);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().add(2, 3L);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
final Object o = Integer.MAX_VALUE;
getSecuredSeq().add(2, o);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().add(2, ResourceFactory.createResource());
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().add(2, "Waa hoo");
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().add(2, "dos", "es");
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetAlt() {
try {
final Alt a = getSecuredSeq().getAlt(1);
Assert.assertTrue("Should be a secured Alt",
a instanceof SecuredAlt);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetBag() {
try {
final Bag a = getSecuredSeq().getBag(1);
Assert.assertTrue("Should be a secured Bag",
a instanceof SecuredBag);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetBoolean() {
seq.add(2, true);
try {
getSecuredSeq().getBoolean(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetByte() {
seq.add(2, Byte.MAX_VALUE);
try {
getSecuredSeq().getByte(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetChar() {
seq.add(2, 'c');
try {
getSecuredSeq().getChar(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetDouble() {
seq.add(2, 3.14D);
try {
getSecuredSeq().getDouble(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetFloat() {
seq.add(2, 3.14F);
try {
getSecuredSeq().getFloat(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetInt() {
seq.add(2, 2);
try {
getSecuredSeq().getInt(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetLanguage() {
seq.add(2, "foo");
try {
getSecuredSeq().getLanguage(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetLiteral() {
seq.add(2, "foo");
try {
getSecuredSeq().getLiteral(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetLong() {
seq.add(2, 2L);
try {
getSecuredSeq().getLong(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetObject() {
final Object o = Integer.MAX_VALUE;
seq.add(2, o);
try {
getSecuredSeq().getObject(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetResource() {
seq.add(2, ResourceFactory.createResource());
try {
getSecuredSeq().getResource(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetSeq() {
seq.add(2, 'c');
try {
getSecuredSeq().getSeq(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetShort() {
seq.add(2, Short.MAX_VALUE);
try {
getSecuredSeq().getShort(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testGetString() {
seq.add(2, "Waaa hoo");
try {
getSecuredSeq().getString(2);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testIndexOf() {
try {
getSecuredSeq().indexOf(true);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().indexOf('c');
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().indexOf(3.14D);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().indexOf(3.14F);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().indexOf(3L);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
final Object o = Integer.MAX_VALUE;
getSecuredSeq().indexOf(o);
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq()
.indexOf(
ResourceFactory
.createResource("http://example.com/exampleResource"));
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().indexOf("waaa hooo");
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().indexOf("dos", "es");
if (!securityEvaluator.evaluate(Action.Read)) {
Assert.fail("Should have thrown ReadDeniedException Exception");
}
} catch (final ReadDeniedException e) {
if (securityEvaluator.evaluate(Action.Read)) {
Assert.fail(String
.format("Should not have thrown ReadDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Override
@Test
public void testRemove() {
final Set<Action> perms = SecurityEvaluator.Util.asSet(new Action[] {
Action.Update, Action.Delete });
try {
getSecuredSeq().remove(1);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown AccessDeniedException Exception");
}
} catch (final AccessDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown AccessDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
@Test
public void testSet() {
final Set<Action> perms = SecurityEvaluator.Util
.asSet(new Action[] { Action.Update });
try {
getSecuredSeq().set(1, true);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().set(1, 'c');
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().set(1, 3.14d);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().set(1, 3.14F);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().set(1, 3L);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
final Object o = Integer.MAX_VALUE;
getSecuredSeq().set(1, o);
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().set(1, ResourceFactory.createResource());
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().set(1, "Waa hoo");
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
try {
getSecuredSeq().set(1, "dos", "es");
if (!securityEvaluator.evaluate(perms)) {
Assert.fail("Should have thrown UpdateDeniedException Exception");
}
} catch (final UpdateDeniedException e) {
if (securityEvaluator.evaluate(perms)) {
Assert.fail(String
.format("Should not have thrown UpdateDeniedException Exception: %s - %s",
e, e.getTriple()));
}
}
}
}