2 * Copyright 2005-2010 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.wamblee.support.jndi;
18 import static org.junit.Assert.*;
19 import static org.mockito.Mockito.*;
21 import javax.naming.InitialContext;
23 import org.junit.After;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.wamblee.support.jndi.JndiProxyFactory.JndiWiringException;
28 public class JndiProxyFactoryTest {
30 private static final String NAA_NA_NA_NAA_NA = "naa, na, na, naa, na";
32 private static interface MyInterface {
36 private static final String JNDI = "jndi/xyz";
37 private MyInterface intf;
38 private InitialContext ctx;
39 private MyInterface proxy;
42 public void setUp() throws Exception {
43 StubInitialContextFactory.register();
44 intf = mock(MyInterface.class);
45 ctx = new InitialContext();
46 JndiProxyFactory<MyInterface> factory = new JndiProxyFactory<MyInterface>(
47 MyInterface.class, JNDI);
48 proxy = factory.getProxy();
52 public void tearDown() throws Exception {
53 StubInitialContextFactory.unregister();
57 public void testFoundAtJndi() throws Exception {
59 when(intf.execute()).thenReturn(1);
60 assertEquals(1, proxy.execute());
64 @Test(expected = JndiWiringException.class)
65 public void testNotFoundAtJndi() {
69 @Test(expected = JndiWiringException.class)
70 public void testWrongTypeAtJndi() throws Exception {
71 ctx.bind(JNDI, "a string type");
72 when(intf.execute()).thenReturn(1);
73 assertEquals(1, proxy.execute());
76 @Test(expected = JndiWiringException.class )
77 public void testNullAtJndi() throws Exception {
79 when(intf.execute()).thenReturn(1);
80 assertEquals(1, proxy.execute());
84 public void testFoundButInvocationThrowsException() throws Exception {
86 when(intf.execute()).thenThrow(new RuntimeException(NAA_NA_NA_NAA_NA));
89 } catch (RuntimeException e) {
90 assertEquals(NAA_NA_NA_NAA_NA, e.getMessage());