******************************************************************************/
package org.onap.dmaap.datarouter.node;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.read.ListAppender;
+import ch.qos.logback.classic.Logger;
import org.apache.commons.lang3.reflect.FieldUtils;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.*;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
import org.powermock.modules.junit4.PowerMockRunner;
+import org.slf4j.LoggerFactory;
-import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import static org.hamcrest.Matchers.notNullValue;
+import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.*;
@Mock
private HttpServletResponse response;
+ ListAppender<ILoggingEvent> listAppender;
+
@Before
public void setUp() throws Exception{
+ listAppender = setTestLogger();
nodeServlet = new NodeServlet();
setBehalfHeader("Stub_Value");
when(request.getPathInfo()).thenReturn("2");
setUpConfig();
setUpNodeMainDelivery();
when(request.getHeader("Authorization")).thenReturn("User1");
- when(request.getHeader("X-ATT-DR-PUBLISH-ID")).thenReturn("User1");
+ when(request.getHeader("X-DMAAP-DR-PUBLISH-ID")).thenReturn("User1");
}
@Test
setNodeConfigManagerIsConfiguredToReturnFalse();
nodeServlet.doGet(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_SERVICE_UNAVAILABLE));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getPathInfo()).thenReturn("/internal/fetchProv");
nodeServlet.doGet(request, response);
verify(response).setStatus(eq(HttpServletResponse.SC_NO_CONTENT));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getPathInfo()).thenReturn("/internal/resetSubscription/1");
nodeServlet.doGet(request, response);
verify(response).setStatus(eq(HttpServletResponse.SC_NO_CONTENT));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getPathInfo()).thenReturn("/incorrect");
nodeServlet.doGet(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_NOT_FOUND));
+ verifyEnteringExitCalled(listAppender);
}
@Test
setNodeConfigManagerIsConfiguredToReturnFalse();
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_SERVICE_UNAVAILABLE));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getPathInfo()).thenReturn("/incorrect/");
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_NOT_FOUND), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.isSecure()).thenReturn(false);
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_FORBIDDEN), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getPathInfo()).thenReturn(null);
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_NOT_FOUND), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getHeader("Authorization")).thenReturn(null);
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_FORBIDDEN), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getPathInfo()).thenReturn("/publish/");
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_NOT_FOUND), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
setNodeConfigManagerIsPublishPermittedToReturnAReason();
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_FORBIDDEN), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
setNodeConfigManagerIsPublishPermittedToReturnAReason();
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_FORBIDDEN));
+ verifyEnteringExitCalled(listAppender);
}
@Test
when(request.getPathInfo()).thenReturn("/internal/publish/1/");
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_NOT_FOUND), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
setNodeConfigManagerToAllowRedirectOnIngressNode();
nodeServlet.doPut(request, response);
verify(response).sendRedirect(anyString());
+ verifyEnteringExitCalled(listAppender);
}
@Test
setHeadersForValidRequest(true);
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_BAD_REQUEST), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
setHeadersForValidRequest(false);
nodeServlet.doPut(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_BAD_REQUEST), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
@Test
setHeadersForValidRequest(false);
nodeServlet.doDelete(request, response);
verify(response).sendError(eq(HttpServletResponse.SC_BAD_REQUEST), argThat(notNullValue(String.class)));
+ verifyEnteringExitCalled(listAppender);
}
private void setBehalfHeader(String headerValue) {
- when(request.getHeader("X-ATT-DR-ON-BEHALF-OF")).thenReturn(headerValue);
+ when(request.getHeader("X-DMAAP-DR-ON-BEHALF-OF")).thenReturn(headerValue);
+ }
+
+ private ListAppender<ILoggingEvent> setTestLogger() {
+ Logger Logger = (Logger) LoggerFactory.getLogger(NodeServlet.class);
+ ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
+ listAppender.start();
+ Logger.addAppender(listAppender);
+ return listAppender;
+ }
+
+ private void verifyEnteringExitCalled(ListAppender<ILoggingEvent> listAppender) {
+ assertEquals("EELF0004I Entering data router node component with RequestId and InvocationId", listAppender.list.get(0).getMessage());
+ assertEquals("EELF0005I Exiting data router node component with RequestId and InvocationId", listAppender.list.get(2).getMessage());
+ assertEquals(3, listAppender.list.size());
}
private void setUpConfig() throws IllegalAccessException{
}
List<String> headers = new ArrayList<>();
headers.add("Content-Type");
- headers.add("X-ATT-DR-ON-BEHALF-OF");
- headers.add("X-ATT-DR-META");
+ headers.add("X-DMAAP-DR-ON-BEHALF-OF");
+ headers.add("X-DMAAP-DR-META");
Enumeration<String> headerNames = Collections.enumeration(headers);
when(request.getHeaderNames()).thenReturn(headerNames);
Enumeration<String> contentTypeHeader = Collections.enumeration(Arrays.asList("text/plain"));
Enumeration<String> behalfHeader = Collections.enumeration(Arrays.asList("User1"));
Enumeration<String> metaDataHeader = Collections.enumeration(Arrays.asList(metaDataString));
when(request.getHeaders("Content-Type")).thenReturn(contentTypeHeader);
- when(request.getHeaders("X-ATT-DR-ON-BEHALF-OF")).thenReturn(behalfHeader);
- when(request.getHeaders("X-ATT-DR-META")).thenReturn(metaDataHeader);
+ when(request.getHeaders("X-DMAAP-DR-ON-BEHALF-OF")).thenReturn(behalfHeader);
+ when(request.getHeaders("X-DMAAP-DR-META")).thenReturn(metaDataHeader);
}
}