package com.softwaremill.common.cdi.security;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.testng.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.testng.annotations.Test;
import com.softwaremill.common.cdi.el.ELEvaluator;
import com.softwaremill.common.cdi.util.ArquillianUtil;
import javax.inject.Inject;
/**
* @author Adam Warski (adam at warski dot org)
*/
public class SecureTest extends Arquillian {
@Deployment
public static JavaArchive createTestArchive() {
JavaArchive ar = ShrinkWrap.create(JavaArchive.class, "test.jar")
.addPackage(SecureTest.class.getPackage())
.addPackage(Secure.class.getPackage())
.addPackage(ELEvaluator.class.getPackage());
ar = ArquillianUtil.addTestBeansXml(ar);
return ar;
}
@Inject
private SecureBeanDirect secureBeanDirect;
@Inject
private SecureBeanGlobal secureBeanGlobal;
@Inject
private SecureBeanStacked secureBeanStacked;
@Inject
private SecureBeanSecureVar secureBeanSecureVar;
@Inject
private SecureBeanSecureVarExp secureBeanSecureVarExp;
@Inject
private SecureBeanCompoundContextual secureBeanCompoundContextual;
@Test
public void testDirectSecurePass() {
secureBeanDirect.method1();
}
@Test(expectedExceptions = SecurityConditionException.class)
public void testDirectSecureFail() {
secureBeanDirect.method2();
}
@Test(expectedExceptions = SecurityConditionException.class)
public void testGlobalSecureFail() {
secureBeanGlobal.method1();
}
@Test
public void testStackedSecurePass() {
secureBeanStacked.method1();
}
@Test(expectedExceptions = SecurityConditionException.class)
public void testStackedSecureFail() {
secureBeanStacked.method2();
}
@Test
public void testSecureVarPass() {
secureBeanSecureVar.method1(true);
}
@Test(expectedExceptions = SecurityConditionException.class)
public void testSecureVarFail() {
secureBeanSecureVar.method1(false);
}
@Test
public void testSecureCompoundContextualPass() {
secureBeanCompoundContextual.method1(true, true, true);
}
@Test(expectedExceptions = SecurityConditionException.class)
public void testSecureCompoundContextualFail1() {
secureBeanCompoundContextual.method1(false, true, true);
}
@Test(expectedExceptions = SecurityConditionException.class)
public void testSecureCompoundContextualFail2() {
secureBeanCompoundContextual.method1(true, false, true);
}
@Test(expectedExceptions = SecurityConditionException.class)
public void testSecureCompoundContextualFail3() {
secureBeanCompoundContextual.method1(true, true, false);
}
@Test
public void testSecureVarExpPass() {
secureBeanSecureVarExp.method1(new StringHolder("a"));
}
@Test(expectedExceptions = SecurityConditionException.class)
public void testSecureVarExpFail() {
secureBeanSecureVarExp.method1(new StringHolder("b"));
}
}