package org.jboss.cdi.tck.tests.context.passivating.dependency.sessionbean;
import static org.jboss.cdi.tck.TestGroups.INTEGRATION;
import static org.jboss.cdi.tck.cdi.Sections.PASSIVATION_CAPABLE_DEPENDENCY_EE;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import java.io.IOException;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.cdi.tck.AbstractTest;
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;
/**
*
* @author Martin Kouba
*/
@SpecVersion(spec = "cdi", version = "2.0-PFD")
public class SessionBeanPassivationDependencyTest extends AbstractTest {
@Deployment
public static WebArchive createTestArchive() {
return new WebArchiveBuilder().withTestClassPackage(SessionBeanPassivationDependencyTest.class).build();
}
@Inject
Worker worker;
@Inject
Chef chef;
@Test(groups=INTEGRATION)
@SpecAssertion(section = PASSIVATION_CAPABLE_DEPENDENCY_EE, id = "ab")
public void testSingleton() throws IOException, ClassNotFoundException {
assertNotNull(worker);
assertNotNull(worker.getHammer());
String workerId = worker.getId();
String hammerId = worker.getHammer().getId();
byte[] serializedWorker = passivate(worker);
Worker workerCopy = (Worker) activate(serializedWorker);
assertNotNull(workerCopy);
assertNotNull(workerCopy.getHammer());
assertEquals(workerCopy.getId(), workerId);
assertEquals(workerCopy.getHammer().getId(), hammerId);
}
@Test(groups=INTEGRATION)
@SpecAssertion(section = PASSIVATION_CAPABLE_DEPENDENCY_EE, id = "aa")
public void testStateless() throws IOException, ClassNotFoundException {
assertNotNull(chef);
assertNotNull(chef.getSpoon());
String chefId = chef.getId();
byte[] serializedChef = passivate(chef);
Chef chefCopy = (Chef) activate(serializedChef);
assertNotNull(chefCopy);
assertNotNull(chefCopy.getSpoon());
assertEquals(chefCopy.getId(), chefId);
assertEquals(chefCopy.getSpoon().getId(), Spoon.class.getName());
}
}