package gov.samhsa.acs.pep.aspect; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import gov.samhsa.acs.common.tool.SimpleMarshaller; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.reflect.CodeSignature; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class LoggingAspectTest { @Mock private SimpleMarshaller marshaller; @Mock private AspectUtils aspectUtils; @InjectMocks LoggingAspect sut = new LoggingAspect(); @Before public void setUp() throws Exception { } @Test public void testLogAndExecute() throws Throwable { //Arrange Object objMock = mock(Object.class); ProceedingJoinPoint pjp = mock(ProceedingJoinPoint.class); when(pjp.proceed()).thenReturn(objMock); //Act Object obj = sut.logAndExecute(pjp); //Assert assertNotNull(obj); } @Test public void testLogAndExecute_nullAsUtMar() throws Throwable { //Arrange Object objMock = mock(Object.class); aspectUtils = null; marshaller = null; sut.setAspectUtils(aspectUtils); sut.setMarshaller(marshaller); ProceedingJoinPoint pjp = mock(ProceedingJoinPoint.class); when(pjp.proceed()).thenReturn(objMock); CodeSignature csMock = mock(CodeSignature.class); when(pjp.getSignature()).thenReturn((CodeSignature)csMock); when(csMock.getName()).thenReturn("fakeName"); when(csMock.getParameterNames()).thenReturn(new String[]{"fake1","fake2"}); Object[] obj = new Object[]{objMock}; when(pjp.getArgs()).thenReturn(obj); when(pjp.getTarget()).thenReturn(new LoggingAspect()); //Act Object obj1 = sut.logAndExecute(pjp); //Assert assertNotNull(obj1); } @Test public void testLogAndExecute_nullAsUt() throws Throwable { //Arrange Object objMock = mock(Object.class); aspectUtils = null; sut.setAspectUtils(aspectUtils); ProceedingJoinPoint pjp = mock(ProceedingJoinPoint.class); when(pjp.proceed()).thenReturn(objMock); CodeSignature csMock = mock(CodeSignature.class); when(pjp.getSignature()).thenReturn((CodeSignature)csMock); when(csMock.getName()).thenReturn("fakeName"); when(csMock.getParameterNames()).thenReturn(new String[]{"fake1","fake2"}); Object[] obj = new Object[]{objMock}; when(pjp.getArgs()).thenReturn(obj); when(pjp.getTarget()).thenReturn(new LoggingAspect()); //Act Object obj1 = sut.logAndExecute(pjp); //Assert assertNotNull(obj1); } @Test public void testOtherMethods() throws Throwable { //Arrange //Act sut.allContextHandlerClassMethods(); sut.allPepMethods(); sut.loggableAnnotation(); sut.noLogAnnotation(); //Assert assertNotNull(sut.getMarshaller()); assertNotNull(sut.getAspectUtils()); } }