/* * Copyright 2005-2010 the original author or authors. * * 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.wamblee.support.jndi; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import javax.naming.InitialContext; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.wamblee.support.jndi.JndiProxyFactory.JndiWiringException; public class JndiProxyFactoryTest { private static final String NAA_NA_NA_NAA_NA = "naa, na, na, naa, na"; private static interface MyInterface { int execute(); } private static final String JNDI = "jndi/xyz"; private MyInterface intf; private InitialContext ctx; private MyInterface proxy; @Before public void setUp() throws Exception { StubInitialContextFactory.register(); intf = mock(MyInterface.class); ctx = new InitialContext(); JndiProxyFactory factory = new JndiProxyFactory( MyInterface.class, JNDI); proxy = factory.getProxy(); } @After public void tearDown() throws Exception { StubInitialContextFactory.unregister(); } @Test public void testFoundAtJndi() throws Exception { ctx.bind(JNDI, intf); when(intf.execute()).thenReturn(1); assertEquals(1, proxy.execute()); } @Test(expected = JndiWiringException.class) public void testNotFoundAtJndi() { proxy.execute(); } @Test(expected = JndiWiringException.class) public void testWrongTypeAtJndi() throws Exception { ctx.bind(JNDI, "a string type"); when(intf.execute()).thenReturn(1); assertEquals(1, proxy.execute()); } @Test(expected = JndiWiringException.class ) public void testNullAtJndi() throws Exception { ctx.bind(JNDI, null); when(intf.execute()).thenReturn(1); assertEquals(1, proxy.execute()); } @Test public void testFoundButInvocationThrowsException() throws Exception { ctx.bind(JNDI, intf); when(intf.execute()).thenThrow(new RuntimeException(NAA_NA_NA_NAA_NA)); try{ proxy.execute(); } catch (RuntimeException e) { assertEquals(NAA_NA_NA_NAA_NA, e.getMessage()); } } }