package test; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; import javax.ejb.embeddable.EJBContainer; import javax.naming.Binding; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NameClassPair; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.sql.DataSource; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; public class ContextTest { private static final String NL = System.getProperty("line.separator"); private static EJBContainer ejbContainer; private TestBean testBean; @Rule public TestName testName = new TestName(); @BeforeClass public static void setUpClass() { ejbContainer = EJBContainer.createEJBContainer(); } @AfterClass public static void tearDownClass() { if(ejbContainer != null) ejbContainer.close(); } @Before public void setUp() throws NamingException { testBean = (TestBean) ejbContainer.getContext().lookup("java:global/classes/TestBean"); System.out.printf("%n----------------- Starting test %s -------------------%n", testName.getMethodName()); } @After public void tearDown() { System.out.printf("%n================= Finishing test ================================================%n%n"); } @Test public void lookupWithWLInitialContextFactory() throws NamingException { TestBean b = testBean.lookupWithWLInitialContextFactory("java:global/classes/TestBean"); DataSource ds = testBean.lookupWithWLInitialContextFactory("jdbc/__default"); System.out.println("TestBean from lookup: " + b); System.out.println("DataSource from lookup: " + ds); } @Test public void listEmptyString2() throws NamingException { System.out.println(testBean.listEmptyString().toString()); } @Test public void listEmptyString() throws NamingException { Context context = ejbContainer.getContext(); NamingEnumeration<NameClassPair> list = context.list(""); assertNotNull(list); System.out.println("Got NameClassPair: " + toString(list)); } @Test public void listBindingsEmptyString2() throws NamingException { System.out.println(testBean.listBindingsEmptyString().toString()); } @Test public void listBindingsEmptyString() throws NamingException { Context context = ejbContainer.getContext(); NamingEnumeration<Binding> list = context.listBindings(""); assertNotNull(list); System.out.println("Got Binding: " + toString(list)); } @Ignore @Test public void listGlobal2() throws NamingException { System.out.println(testBean.listGlobal().toString()); } @Ignore //got null componentId @Test public void listGlobal() throws NamingException { Context context = ejbContainer.getContext(); NamingEnumeration<NameClassPair> list = context.list("java:global"); assertNotNull(list); System.out.println("Got NameClassPair: " + toString(list)); } @Ignore @Test public void listBindingsGlobal2() throws NamingException { System.out.println(testBean.listBindingsGlobal().toString()); } @Ignore @Test public void listBindingsGlobal() throws NamingException { Context context = ejbContainer.getContext(); NamingEnumeration<Binding> list = context.listBindings("java:global"); assertNotNull(list); System.out.println("Got Binding: " + toString(list)); } @Test public void listJavaComp() throws NamingException { System.out.println(testBean.listJavaComp().toString()); } @Test public void listBindingsJavaComp() throws NamingException { System.out.println(testBean.listBindingsJavaComp().toString()); } @Test public void listJavaModule() throws NamingException { System.out.println(testBean.listJavaModule().toString()); } @Test public void listBindingsJavaModule() throws NamingException { System.out.println(testBean.listBindingsJavaModule().toString()); } @Test public void listJavaApp() throws NamingException { System.out.println(testBean.listJavaApp().toString()); } @Test public void listBindingsJavaApp() throws NamingException { System.out.println(testBean.listBindingsJavaApp().toString()); } @Test public void closeNamingEnumerations() throws NamingException { testBean.closeNamingEnumerations(); } @Test public void getIsInAppClientContainerFromEJB() throws NamingException { Boolean isACC = testBean.getIsInAppClientContainer(); assertFalse(isACC); System.out.println("get java:comp/InAppClientContainer from EJB:" + isACC); } @Test public void getIsInAppClientContainerFromSEClient() throws NamingException { String jndiname = "java:comp/InAppClientContainer"; Context context = new InitialContext(); Boolean isACC = (Boolean) context.lookup(jndiname); assertFalse(isACC); System.out .println("get "+jndiname+" from java SE client:" + isACC); } private String toString(NamingEnumeration<? extends NameClassPair> n) throws NamingException { StringBuilder sb = new StringBuilder(); sb.append(n.toString()).append(NL); while(n.hasMore()) { // test will fail with NPE if null NameClassPair x = n.next(); sb.append(x).append(NL); } return sb.toString(); } }