/* * JBoss, Home of Professional Open Source * Copyright 2016, Red Hat, Inc., and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * Licensed 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.jboss.cdi.tck.tests.extensions.configurators.invalid; import static org.jboss.cdi.tck.TestGroups.INTEGRATION; import static org.testng.Assert.assertTrue; import java.io.IOException; import java.net.URL; import org.jboss.arquillian.container.test.api.Deployer; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.OperateOnDeployment; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.test.api.ArquillianResource; import org.jboss.cdi.tck.AbstractTest; import org.jboss.cdi.tck.api.InSequence; import org.jboss.cdi.tck.cdi.Sections; import org.jboss.cdi.tck.shrinkwrap.WebArchiveBuilder; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.jboss.test.audit.annotations.SpecAssertion; import org.jboss.test.audit.annotations.SpecVersion; import org.testng.annotations.Test; import com.gargoylesoftware.htmlunit.TextPage; import com.gargoylesoftware.htmlunit.WebClient; /** * Tests the invalid use case of calling set method and configurator in the same listener. Deployments are done manually so that * we can, one by one assert that we get exception. * * @author <a href="mailto:manovotn@redhat.com">Matej Novotny</a> */ @Test(groups = INTEGRATION) @SpecVersion(spec = "cdi", version = "2.0-PFD") @RunAsClient public class ConfiguratorAndSetMethodTest extends AbstractTest { public static final String PAT = "PAT"; public static final String PAT_REVERSE = "PAT_REVERSE"; public static final String PBA = "PBA"; public static final String PBA_REVERSE = "PBA_REVERSE"; public static final String PIP = "PIP"; public static final String PIP_REVERSE = "PIP_REVERSE"; public static final String POM = "POM"; public static final String POM_REVERSE = "POM_REVERSE"; @ArquillianResource Deployer deployer; @Deployment(name = PAT, managed = false, testable = false) public static WebArchive createTestArchiveOne() { return new WebArchiveBuilder().withTestClassPackage(ConfiguratorAndSetMethodTest.class) .withExtension(PATExtension.class).withName(PAT + ".war").build(); } @Deployment(name = PAT_REVERSE, managed = false, testable = false) public static WebArchive createTestArchiveTwo() { return new WebArchiveBuilder().withTestClassPackage(ConfiguratorAndSetMethodTest.class) .withExtension(PATReverseExtension.class).withName(PAT_REVERSE + ".war").build(); } @Deployment(name = PIP, managed = false, testable = false) public static WebArchive createTestArchiveThree() { return new WebArchiveBuilder().withTestClassPackage(ConfiguratorAndSetMethodTest.class) .withExtension(PIPExtension.class).withName(PIP + ".war").build(); } @Deployment(name = PIP_REVERSE, managed = false, testable = false) public static WebArchive createTestArchiveFour() { return new WebArchiveBuilder().withTestClassPackage(ConfiguratorAndSetMethodTest.class) .withExtension(PIPReverseExtension.class).withName(PIP_REVERSE + ".war").build(); } @Deployment(name = PBA, managed = false, testable = false) public static WebArchive createTestArchiveFive() { return new WebArchiveBuilder().withTestClassPackage(ConfiguratorAndSetMethodTest.class) .withExtension(PBAExtension.class).withName(PBA + ".war").build(); } @Deployment(name = PBA_REVERSE, managed = false, testable = false) public static WebArchive createTestArchiveSix() { return new WebArchiveBuilder().withTestClassPackage(ConfiguratorAndSetMethodTest.class) .withExtension(PBAReverseExtension.class).withName(PBA_REVERSE + ".war").build(); } @Deployment(name = POM, managed = false, testable = false) public static WebArchive createTestArchiveSeven() { return new WebArchiveBuilder().withTestClassPackage(ConfiguratorAndSetMethodTest.class) .withExtension(POMExtension.class).withName(POM + ".war").build(); } @Deployment(name = POM_REVERSE, managed = false, testable = false) public static WebArchive createTestArchiveEight() { return new WebArchiveBuilder().withTestClassPackage(ConfiguratorAndSetMethodTest.class) .withExtension(POMReverseExtension.class).withName(POM_REVERSE + ".war").build(); } @Test @InSequence(1) public void preDeploy() { // we need to deploy everything here, so that later on we can use @ArquillianResource to get contexts deployer.deploy(PAT); deployer.deploy(PAT_REVERSE); deployer.deploy(PBA); deployer.deploy(PBA_REVERSE); deployer.deploy(PIP); deployer.deploy(PIP_REVERSE); deployer.deploy(POM); deployer.deploy(POM_REVERSE); } @Test(dataProvider = ARQUILLIAN_DATA_PROVIDER) @SpecAssertion(section = Sections.PROCESS_ANNOTATED_TYPE, id = "k") public void testPAT(@ArquillianResource @OperateOnDeployment(PAT) URL extContext) throws IOException { WebClient webClient = new WebClient(); TextPage exceptionThrown = webClient.getPage(extContext + "test?ext=" + PAT); deployer.undeploy(PAT); assertTrue(Boolean.valueOf(exceptionThrown.getContent())); } @Test(dataProvider = ARQUILLIAN_DATA_PROVIDER) @SpecAssertion(section = Sections.PROCESS_ANNOTATED_TYPE, id = "k") public void testPATReverse(@ArquillianResource @OperateOnDeployment(PAT_REVERSE) URL extContext) throws IOException { WebClient webClient = new WebClient(); TextPage exceptionThrown = webClient.getPage(extContext + "test?ext=" + PAT_REVERSE); deployer.undeploy(PAT_REVERSE); assertTrue(Boolean.valueOf(exceptionThrown.getContent())); } @Test(dataProvider = ARQUILLIAN_DATA_PROVIDER) @SpecAssertion(section = Sections.PROCESS_BEAN_ATTRIBUTES, id = "g") public void testPBA(@ArquillianResource @OperateOnDeployment(PBA) URL extContext) throws IOException { WebClient webClient = new WebClient(); TextPage exceptionThrown = webClient.getPage(extContext + "test?ext=" + PBA); deployer.undeploy(PBA); assertTrue(Boolean.valueOf(exceptionThrown.getContent())); } @Test(dataProvider = ARQUILLIAN_DATA_PROVIDER) @SpecAssertion(section = Sections.PROCESS_BEAN_ATTRIBUTES, id = "g") public void testPBAReverse(@ArquillianResource @OperateOnDeployment(PBA_REVERSE) URL extContext) throws IOException { WebClient webClient = new WebClient(); TextPage exceptionThrown = webClient.getPage(extContext + "test?ext=" + PBA_REVERSE); deployer.undeploy(PBA_REVERSE); assertTrue(Boolean.valueOf(exceptionThrown.getContent())); } @Test(dataProvider = ARQUILLIAN_DATA_PROVIDER) @SpecAssertion(section = Sections.PROCESS_INJECTION_POINT, id = "g") public void testPIP(@ArquillianResource @OperateOnDeployment(PIP) URL extContext) throws IOException { WebClient webClient = new WebClient(); TextPage exceptionThrown = webClient.getPage(extContext + "test?ext=" + PIP); deployer.undeploy(PIP); assertTrue(Boolean.valueOf(exceptionThrown.getContent())); } @Test(dataProvider = ARQUILLIAN_DATA_PROVIDER) @SpecAssertion(section = Sections.PROCESS_INJECTION_POINT, id = "g") public void testPIPReverse(@ArquillianResource @OperateOnDeployment(PIP_REVERSE) URL extContext) throws IOException { WebClient webClient = new WebClient(); TextPage exceptionThrown = webClient.getPage(extContext + "test?ext=" + PIP_REVERSE); deployer.undeploy(PIP_REVERSE); assertTrue(Boolean.valueOf(exceptionThrown.getContent())); } @Test(dataProvider = ARQUILLIAN_DATA_PROVIDER) @SpecAssertion(section = Sections.PROCESS_OBSERVER_METHOD, id = "e") public void testPOM(@ArquillianResource @OperateOnDeployment(POM) URL extContext) throws IOException { WebClient webClient = new WebClient(); TextPage exceptionThrown = webClient.getPage(extContext + "test?ext=" + POM); deployer.undeploy(POM); assertTrue(Boolean.valueOf(exceptionThrown.getContent())); } @Test(dataProvider = ARQUILLIAN_DATA_PROVIDER) @SpecAssertion(section = Sections.PROCESS_OBSERVER_METHOD, id = "e") public void testPOMReverse(@ArquillianResource @OperateOnDeployment(POM_REVERSE) URL extContext) throws IOException { WebClient webClient = new WebClient(); TextPage exceptionThrown = webClient.getPage(extContext + "test?ext=" + POM_REVERSE); deployer.undeploy(POM_REVERSE); assertTrue(Boolean.valueOf(exceptionThrown.getContent())); } }