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; import java.util.concurrent.Callable; /** * @author Adam Warski (adam at warski dot org) */ public class AllowWithFlagTest extends Arquillian { @Deployment public static JavaArchive createTestArchive() { JavaArchive ar = ShrinkWrap.create(JavaArchive.class, "test.jar") .addPackage(AllowWithFlagTest.class.getPackage()) .addPackage(Secure.class.getPackage()) .addPackage(ELEvaluator.class.getPackage()); ar = ArquillianUtil.addTestBeansXml(ar); return ar; } @Inject private AllowWithFlagsBean allowWithFlagsBean; @Inject private SecurityFlags securityFlags; @Test public void testAllowSingleFlagOnlyPass() { securityFlags.doWithFlag("flag1", new Callable<Void>() { @Override public Void call() throws Exception { allowWithFlagsBean.testSingleFlagOnly(); return null; } }); } @Test public void testAllowDoubleFlagOnlyPass() { securityFlags.doWithFlag("flag2", new Callable<Void>() { @Override public Void call() throws Exception { allowWithFlagsBean.testDoubleFlagOnly(); return null; } }); } @Test(expectedExceptions = SecurityConditionException.class) public void testNoFlagsFail() { allowWithFlagsBean.testSingleFlagOnly(); } @Test public void testNoFlagsSecurePass() { allowWithFlagsBean.testFlagWithSecure(true); } }