summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/test/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilterTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/test/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilterTest.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/test/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilterTest.java302
1 files changed, 16 insertions, 286 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/test/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilterTest.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/test/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilterTest.java
index 710cf12b7e..336840be58 100644
--- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/test/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilterTest.java
+++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-api/src/test/java/org/openecomp/sdc/logging/servlet/jaxrs/LoggingResponseFilterTest.java
@@ -16,35 +16,18 @@
package org.openecomp.sdc.logging.servlet.jaxrs;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.anyString;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.openecomp.sdc.logging.servlet.jaxrs.LoggingRequestFilter.LOGGING_TRACKER_KEY;
-import java.lang.reflect.Method;
-import java.util.Comparator;
-import java.util.Objects;
-import java.util.function.Consumer;
-import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
-import javax.ws.rs.container.ResourceInfo;
-import javax.ws.rs.core.Response;
-import org.easymock.EasyMock;
-import org.easymock.LogicalOperator;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.TestName;
-import org.junit.runner.RunWith;
-import org.openecomp.sdc.logging.api.AuditData;
-import org.openecomp.sdc.logging.api.Logger;
-import org.openecomp.sdc.logging.api.LoggerFactory;
-import org.openecomp.sdc.logging.api.LoggingContext;
-import org.openecomp.sdc.logging.api.StatusCode;
-import org.powermock.api.easymock.PowerMock;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
+import org.openecomp.sdc.logging.servlet.RequestProcessingResult;
+import org.openecomp.sdc.logging.servlet.Tracker;
/**
* Unit testing JAX-RS response filter.
@@ -52,277 +35,24 @@ import org.powermock.modules.junit4.PowerMockRunner;
* @author evitaliy
* @since 19 Mar 2018
*/
-@RunWith(PowerMockRunner.class)
public class LoggingResponseFilterTest {
- private static final Class RESOURCE_TYPE = Resource.class;
- private static final Method RESOURCE_METHOD = Resource.class.getDeclaredMethods()[0];
-
- @Rule
- public TestName testName = new TestName();
-
- @Before
- public void prepareLoggingContext() {
- mockLoggingContext();
- }
-
- /**
- * Verify all mocks after each test.
- */
- @After
- public void verifyMocks() {
-
- try {
- PowerMock.verifyAll();
- } catch (AssertionError e) {
- throw new AssertionError("Expectations failed in " + testName.getMethodName() + "()", e);
- }
- }
-
@Test
- @PrepareForTest({LoggingContext.class, LoggerFactory.class})
- public void noAuditWhenNoMatchingResource() {
-
- PowerMock.mockStatic(LoggerFactory.class);
- mockFilterLogger(logger -> {
- logger.debug(anyString());
- EasyMock.expectLastCall();
- });
- PowerMock.replay(LoggerFactory.class);
-
- LoggingResponseFilter responseFilter = new LoggingResponseFilter();
- responseFilter.filter(mockDisabledRequestContext(), mockDisabledResponseContext());
+ public void noExceptionsWhenTrackerNotPassed() {
+ new LoggingResponseFilter().filter(mock(ContainerRequestContext.class), mock(ContainerResponseContext.class));
}
@Test
- @PrepareForTest({LoggingContext.class, LoggerFactory.class})
- public void noAuditWhenNullResource() {
+ public void postRequestWhenTrackerPassed() {
- PowerMock.mockStatic(LoggerFactory.class);
- mockFilterLogger(logger -> {
- logger.debug(anyString());
- EasyMock.expectLastCall();
- });
- PowerMock.replay(LoggerFactory.class);
+ Tracker tracker = mock(Tracker.class);
- LoggingResponseFilter responseFilter = new LoggingResponseFilter();
- responseFilter.setResource(null);
- responseFilter.filter(mockDisabledRequestContext(), mockDisabledResponseContext());
- }
-
- @Test
- @PrepareForTest({LoggingContext.class, LoggerFactory.class})
- public void noAuditWhenAuditDisabled() {
-
- PowerMock.mockStatic(LoggerFactory.class);
- mockFilterLogger();
- mockResourceLogger(false, AuditData.builder().build());
- PowerMock.replay(LoggerFactory.class);
+ ContainerRequestContext requestContext = mock(ContainerRequestContext.class);
+ when(requestContext.getProperty(LOGGING_TRACKER_KEY)).thenReturn(tracker);
LoggingResponseFilter responseFilter = new LoggingResponseFilter();
- responseFilter.setResource(mockResource());
- responseFilter.filter(mockDisabledRequestContext(), mockDisabledResponseContext());
- }
-
- @Test
- @PrepareForTest({LoggingContext.class, LoggerFactory.class})
- public void startTimeReadWhenPresentInRequestContext() {
-
- final String clientIp = "IP1";
- final long startTime = 12345L;
- final Response.Status ok = Response.Status.OK;
-
- PowerMock.mockStatic(LoggerFactory.class);
- mockResourceLogger(true, buildAuditData(startTime, clientIp, ok, StatusCode.COMPLETE));
- mockFilterLogger();
- PowerMock.replay(LoggerFactory.class);
-
- LoggingResponseFilter filter = new LoggingResponseFilter();
- filter.setResource(mockResource());
- filter.setHttpRequest(mockHttpRequest(clientIp));
-
- filter.filter(mockRequestContext(startTime), mockResponseContext(ok));
- }
-
- @Test
- @PrepareForTest({LoggingContext.class, LoggerFactory.class})
- public void startTimeZeroWhenNotPresentInRequestContext() {
-
- final String clientIp = "IP2";
- final Response.Status ok = Response.Status.OK;
-
- AuditData expectedAuditData = buildAuditData(0, clientIp, ok, StatusCode.COMPLETE);
-
- PowerMock.mockStatic(LoggerFactory.class);
- mockResourceLogger(true, expectedAuditData);
- mockFilterLogger(logger -> {
- logger.error(anyString(), anyObject(Object[].class));
- EasyMock.expectLastCall();
- });
- PowerMock.replay(LoggerFactory.class);
-
- LoggingResponseFilter filter = new LoggingResponseFilter();
- filter.setResource(mockResource());
- filter.setHttpRequest(mockHttpRequest(clientIp));
-
- filter.filter(mockRequestContext(null), mockResponseContext(ok));
- }
-
- @Test
- @PrepareForTest({LoggingContext.class, LoggerFactory.class})
- public void startTimeZeroWhenIncorrectObjectType() {
-
- final String clientIp = "IP3";
- final Response.Status accepted = Response.Status.ACCEPTED;
-
- AuditData expectedAuditData = buildAuditData(0, clientIp, accepted, StatusCode.COMPLETE);
-
- PowerMock.mockStatic(LoggerFactory.class);
- mockFilterLogger(logger -> {
- logger.error(anyString(), anyString(), anyString(), anyObject());
- EasyMock.expectLastCall();
- });
- mockResourceLogger(true, expectedAuditData);
- PowerMock.replay(LoggerFactory.class);
-
- LoggingResponseFilter filter = new LoggingResponseFilter();
- filter.setResource(mockResource());
- filter.setHttpRequest(mockHttpRequest(clientIp));
-
- filter.filter(mockRequestContext("string object"), mockResponseContext(accepted));
- }
-
- @Test
- @PrepareForTest({LoggingContext.class, LoggerFactory.class})
- public void statusErrorWhenHttpResponseGreaterThan399() {
-
- final Response.Status error = Response.Status.BAD_REQUEST;
- final String clientIp = "IP13";
- final long startTime = 88668603L;
-
- AuditData expectedAuditData = buildAuditData(startTime, clientIp, error, StatusCode.ERROR);
-
- PowerMock.mockStatic(LoggerFactory.class);
- mockResourceLogger(true, expectedAuditData);
- mockFilterLogger();
- PowerMock.replay(LoggerFactory.class);
-
- LoggingResponseFilter filter = new LoggingResponseFilter();
- filter.setResource(mockResource());
- filter.setHttpRequest(mockHttpRequest(clientIp));
-
- filter.filter(mockRequestContext(startTime), mockResponseContext(error));
- }
-
- private AuditData buildAuditData(long startTime, String clientIp, Response.Status responseStatus,
- StatusCode status) {
- return AuditData.builder().startTime(startTime).responseCode(Integer.toString(responseStatus.getStatusCode()))
- .responseDescription(responseStatus.getReasonPhrase()).clientIpAddress(clientIp)
- .statusCode(status).build();
- }
-
- private void mockResourceLogger(boolean enabled, AuditData auditData) {
-
- Logger resourceLogger = EasyMock.mock(Logger.class);
-
- EasyMock.expect(resourceLogger.isAuditEnabled()).andReturn(enabled).atLeastOnce();
-
- if (enabled) {
- resourceLogger.audit(EasyMock.cmp(auditData, new AuditDataComparator(), LogicalOperator.EQUAL));
- EasyMock.expectLastCall();
- }
-
- EasyMock.replay(resourceLogger);
-
- LoggerFactory.getLogger(RESOURCE_TYPE);
- PowerMock.expectLastCall().andReturn(resourceLogger);
- }
-
- @SafeVarargs
- private final void mockFilterLogger(Consumer<Logger>... expectations) {
-
- Logger filterLogger = EasyMock.mock(Logger.class);
-
- for (Consumer<Logger> expect : expectations) {
- expect.accept(filterLogger);
- }
-
- EasyMock.replay(filterLogger);
-
- LoggerFactory.getLogger(LoggingResponseFilter.class);
- PowerMock.expectLastCall().andReturn(filterLogger);
- }
-
- private void mockLoggingContext() {
- PowerMock.mockStatic(LoggingContext.class);
- LoggingContext.clear();
- EasyMock.expectLastCall();
- PowerMock.replay(LoggingContext.class);
- }
-
- private ContainerRequestContext mockDisabledRequestContext() {
- ContainerRequestContext requestContext = EasyMock.mock(ContainerRequestContext.class);
- EasyMock.replay(requestContext);
- return requestContext;
- }
-
- private ContainerResponseContext mockDisabledResponseContext() {
- ContainerResponseContext responseContext = EasyMock.mock(ContainerResponseContext.class);
- EasyMock.replay(responseContext);
- return responseContext;
- }
-
- private HttpServletRequest mockHttpRequest(String clientIp) {
- HttpServletRequest servletRequest = EasyMock.mock(HttpServletRequest.class);
- EasyMock.expect(servletRequest.getRemoteAddr()).andReturn(clientIp);
- EasyMock.replay(servletRequest);
- return servletRequest;
- }
-
- private ContainerRequestContext mockRequestContext(Object startTime) {
- ContainerRequestContext requestContext = EasyMock.mock(ContainerRequestContext.class);
- EasyMock.expect(requestContext.getProperty(LoggingRequestFilter.START_TIME_KEY)).andReturn(startTime);
- EasyMock.replay(requestContext);
- return requestContext;
- }
-
- private ContainerResponseContext mockResponseContext(Response.StatusType statusInfo) {
- ContainerResponseContext responseContext = EasyMock.mock(ContainerResponseContext.class);
- EasyMock.expect(responseContext.getStatusInfo()).andReturn(statusInfo);
- EasyMock.replay(responseContext);
- return responseContext;
- }
-
- private ResourceInfo mockResource() {
- ResourceInfo resource = EasyMock.mock(ResourceInfo.class);
- //noinspection unchecked
- EasyMock.expect(resource.getResourceClass()).andReturn(RESOURCE_TYPE).anyTimes();
- EasyMock.expect(resource.getResourceMethod()).andReturn(RESOURCE_METHOD).anyTimes();
- EasyMock.replay(resource);
- return resource;
- }
-
- private static class AuditDataComparator implements Comparator<AuditData> {
-
- @Override
- public int compare(AuditData one, AuditData two) {
-
- // don't compare end time as it changes
- if (Objects.equals(one.getClientIpAddress(), two.getClientIpAddress())
- && Objects.equals(one.getResponseCode(), two.getResponseCode())
- && Objects.equals(one.getResponseDescription(), two.getResponseDescription())
- && one.getStartTime() == two.getStartTime()
- && Objects.equals(one.getStatusCode(), two.getStatusCode())) {
-
- return 0;
- }
-
- return -1;
- }
- }
+ responseFilter.filter(requestContext, mock(ContainerResponseContext.class));
- interface Resource {
- @SuppressWarnings("unused")
- void method();
+ verify(tracker, times(1)).postRequest(any(RequestProcessingResult.class));
}
} \ No newline at end of file