/* * 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.general; 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.general.LookupProxyFactory; import org.wamblee.general.LookupProxyFactory.Lookup; import org.wamblee.general.LookupProxyFactory.LookupException; public class LookupProxyFactoryTest { private static final String NAA_NA_NA_NAA_NA = "naa, na, na, naa, na"; private static interface MyInterface { int execute(); } private MyInterface intf; private Lookup lookup; private MyInterface proxy; @Before public void setUp() throws Exception { intf = mock(MyInterface.class); lookup = mock(Lookup.class); LookupProxyFactory factory = new LookupProxyFactory( MyInterface.class, lookup); proxy = factory.getProxy(); } @After public void tearDown() throws Exception { // Empty. } @Test public void testFound() throws Exception { when(intf.execute()).thenReturn(1); when(lookup.lookup()).thenReturn(intf); assertEquals(1, proxy.execute()); } @Test(expected = LookupException.class) public void testNotFoundAtJndi() throws Exception { when(lookup.lookup()).thenThrow(new RuntimeException("Object not found")); proxy.execute(); } @Test(expected = LookupException.class) public void testWrongTypeAtJndi() throws Exception { when(lookup.lookup()).thenReturn("my string"); when(intf.execute()).thenReturn(1); proxy.execute(); } @Test(expected = LookupException.class) public void testNullAtJndi() throws Exception { when(lookup.lookup()).thenReturn(null); when(intf.execute()).thenReturn(1); proxy.execute(); } @Test public void testFoundButInvocationThrowsException() throws Exception { when(intf.execute()).thenThrow(new RuntimeException(NAA_NA_NA_NAA_NA)); when(lookup.lookup()).thenReturn(intf); try { proxy.execute(); } catch (RuntimeException e) { assertEquals(NAA_NA_NA_NAA_NA, e.getMessage()); } } }