/*
* JBoss, Home of Professional Open Source.
* Copyright 2014, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.testsuite.integration.secman;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.security.AccessControlException;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.security.ExternalPasswordCache;
import org.jboss.security.Util;
import org.jboss.security.config.SecurityConfiguration;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Test case, which checks if static methods in PicketBox are protected by permission checks.
*
* @author Josef Cacek
*/
@RunWith(Arquillian.class)
public class PBStaticMethodsTestCase {
/**
* Creates test archive.
*
* @return {@link WebArchive} instance
*/
@Deployment()
public static WebArchive deployment() {
return ShrinkWrap.create(WebArchive.class, "pbsm.war");
}
// SecurityConfiguration ---------------------------------------------------
/**
* Test method for
* {@link org.jboss.security.config.SecurityConfiguration#addApplicationPolicy(org.jboss.security.config.ApplicationPolicy)}
* .
*/
@Test
public void testAddApplicationPolicy() {
try {
SecurityConfiguration.addApplicationPolicy(null);
fail("Access should be denied");
} catch (AccessControlException e) {
RuntimePermission expectedPerm = new RuntimePermission(
"org.jboss.security.config.SecurityConfiguration.addApplicationPolicy");
assertEquals("Permission type doesn't match", expectedPerm, e.getPermission());
}
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#removeApplicationPolicy(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testRemoveApplicationPolicy() {
SecurityConfiguration.removeApplicationPolicy("test");
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getApplicationPolicy(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testGetApplicationPolicy() {
SecurityConfiguration.getApplicationPolicy("test");
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getCipherAlgorithm()}.
*/
@Test(expected = AccessControlException.class)
public void testGetCipherAlgorithm() {
SecurityConfiguration.getCipherAlgorithm();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setCipherAlgorithm(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testSetCipherAlgorithm() {
SecurityConfiguration.setCipherAlgorithm(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getCipherKey()}.
*/
@Test(expected = AccessControlException.class)
public void testGetCipherKey() {
SecurityConfiguration.getCipherKey();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setCipherKey(java.security.Key)}.
*/
@Test(expected = AccessControlException.class)
public void testSetCipherKey() {
SecurityConfiguration.setCipherKey(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getCipherSpec()}.
*/
@Test(expected = AccessControlException.class)
public void testGetCipherSpec() {
SecurityConfiguration.getCipherSpec();
}
/**
* Test method for
* {@link org.jboss.security.config.SecurityConfiguration#setCipherSpec(java.security.spec.AlgorithmParameterSpec)}.
*/
@Test(expected = AccessControlException.class)
public void testSetCipherSpec() {
SecurityConfiguration.setCipherSpec(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getIterationCount()}.
*/
@Test(expected = AccessControlException.class)
public void testGetIterationCount() {
SecurityConfiguration.getIterationCount();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setIterationCount(int)}.
*/
@Test(expected = AccessControlException.class)
public void testSetIterationCount() {
SecurityConfiguration.setIterationCount(0);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getSalt()}.
*/
@Test(expected = AccessControlException.class)
public void testGetSalt() {
SecurityConfiguration.getSalt();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setSalt(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testSetSalt() {
SecurityConfiguration.setSalt(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getKeyStoreType()}.
*/
@Test(expected = AccessControlException.class)
public void testGetKeyStoreType() {
SecurityConfiguration.getKeyStoreType();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setKeyStoreType(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testSetKeyStoreType() {
SecurityConfiguration.setKeyStoreType(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getKeyStoreURL()}.
*/
@Test(expected = AccessControlException.class)
public void testGetKeyStoreURL() {
SecurityConfiguration.getKeyStoreURL();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setKeyStoreURL(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testSetKeyStoreURL() {
SecurityConfiguration.setKeyStoreURL(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getKeyStorePass()}.
*/
@Test(expected = AccessControlException.class)
public void testGetKeyStorePass() {
SecurityConfiguration.getKeyStorePass();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setKeyStorePass(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testSetKeyStorePass() {
SecurityConfiguration.setKeyStorePass(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getTrustStoreType()}.
*/
@Test(expected = AccessControlException.class)
public void testGetTrustStoreType() {
SecurityConfiguration.getTrustStoreType();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setTrustStoreType(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testSetTrustStoreType() {
SecurityConfiguration.setTrustStoreType(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getTrustStorePass()}.
*/
@Test(expected = AccessControlException.class)
public void testGetTrustStorePass() {
SecurityConfiguration.getTrustStorePass();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setTrustStorePass(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testSetTrustStorePass() {
SecurityConfiguration.setTrustStorePass(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#getTrustStoreURL()}.
*/
@Test(expected = AccessControlException.class)
public void testGetTrustStoreURL() {
SecurityConfiguration.getTrustStoreURL();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setTrustStoreURL(java.lang.String)}.
*/
@Test(expected = AccessControlException.class)
public void testSetTrustStoreURL() {
SecurityConfiguration.setTrustStoreURL(null);
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#isDeepCopySubjectMode()}.
*/
@Test(expected = AccessControlException.class)
public void testIsDeepCopySubjectMode() {
SecurityConfiguration.isDeepCopySubjectMode();
}
/**
* Test method for {@link org.jboss.security.config.SecurityConfiguration#setDeepCopySubjectMode(boolean)}.
*/
@Test(expected = AccessControlException.class)
public void testSetDeepCopySubjectMode() {
SecurityConfiguration.setDeepCopySubjectMode(false);
}
// ExternalPasswordCache ---------------------------------------------------
/**
* Test method for {@link org.jboss.security.ExternalPasswordCache#getExternalPasswordCacheInstance()}.
*/
@Test
public void testGetExternalPasswordCacheInstance() {
try {
ExternalPasswordCache.getExternalPasswordCacheInstance();
fail("Access should be denied");
} catch (AccessControlException e) {
RuntimePermission expectedPerm = new RuntimePermission(
"org.jboss.security.ExternalPasswordCache.getExternalPasswordCacheInstance");
assertEquals("Permission type doesn't match", expectedPerm, e.getPermission());
}
}
// Util --------------------------------------------------------------------
/**
* Test method for {@link org.jboss.security.Util#loadPassword(String)}.
*
* @throws Exception
*/
@Test
public void testLoadPassword() throws Exception {
try {
Util.loadPassword("cat /etc/passwd");
fail("Access should be denied");
} catch (AccessControlException e) {
RuntimePermission expectedPerm = new RuntimePermission("org.jboss.security.Util.loadPassword");
assertEquals("Permission type doesn't match", expectedPerm, e.getPermission());
}
}
}