package org.jboss.resteasy.test.cdi.basic;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.resteasy.test.cdi.basic.resource.EJBBook;
import org.jboss.resteasy.test.cdi.basic.resource.EJBEventsObserver;
import org.jboss.resteasy.test.cdi.basic.resource.EJBEventsObserverImpl;
import org.jboss.resteasy.test.cdi.basic.resource.EJBEventsSource;
import org.jboss.resteasy.test.cdi.basic.resource.EJBEventsSourceImpl;
import org.jboss.resteasy.test.cdi.basic.resource.EJBEventsProcessRead;
import org.jboss.resteasy.test.cdi.basic.resource.EJBEventsProcessReadWrite;
import org.jboss.resteasy.test.cdi.util.UtilityProducer;
import org.jboss.resteasy.utils.PermissionUtil;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
import javax.inject.Inject;
import java.lang.reflect.ReflectPermission;
import java.util.PropertyPermission;
import java.util.logging.Logger;
import static org.junit.Assert.assertEquals;
/**
* @tpSubChapter CDI
* @tpChapter Integration tests
* @tpTestCaseDetails EJB, Events and RESTEasy integration test.
* @tpSince RESTEasy 3.0.16
*/
@RunWith(Arquillian.class)
public class EJBEventsTest {
@Inject
private Logger log;
@Inject
EJBEventsSource eventSource;
@Deployment
public static Archive<?> createTestArchive() {
WebArchive war = ShrinkWrap.create(WebArchive.class, "resteasy-ejb-test.war")
.addClasses(UtilityProducer.class, EJBBook.class)
.addClasses(EJBEventsObserver.class, EJBEventsObserverImpl.class)
.addClasses(EJBEventsSource.class, EJBEventsSourceImpl.class)
.addClasses(EJBEventsProcessRead.class, EJBEventsProcessReadWrite.class)
.setWebXML(EJBEventsTest.class.getPackage(), "ejbtest_web.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
// Arquillian in the deployment
war.addAsManifestResource(PermissionUtil.createPermissionsXmlAsset(new ReflectPermission("suppressAccessChecks"),
new RuntimePermission("accessDeclaredMembers"),
new PropertyPermission("arquillian.*", "read")), "permissions.xml");
return war;
}
/**
* @tpTestDetails Invokes additional methods of JAX-RS resource as local EJB.
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testAsLocalEJB() throws Exception {
log.info("entering testAsLocalEJB()");
// Create book.
EJBBook book1 = new EJBBook("RESTEasy: the Sequel");
int id1 = eventSource.createBook(book1);
log.info("id1: " + id1);
assertEquals("Wrong ID of created book", 0, id1);
// Create another book.
EJBBook book2 = new EJBBook("RESTEasy: It's Alive");
int id2 = eventSource.createBook(book2);
log.info("id2: " + id2);
assertEquals("Wrong ID of created book", 1, id2);
// Retrieve first book.
EJBBook bookResponse1 = eventSource.lookupBookById(id1);
log.info("book1 response: " + bookResponse1);
assertEquals("Wrong received book", book1, bookResponse1);
// Retrieve second book.
EJBBook bookResponse2 = eventSource.lookupBookById(id2);
log.info("book2 response: " + bookResponse2);
assertEquals("Wrong received book", book2, bookResponse2);
}
}