From 6e821d7830cc0d9ea6644c9ddfc25a52fac5996d Mon Sep 17 00:00:00 2001 From: gummar Date: Thu, 30 Jan 2020 17:31:26 +0000 Subject: Add test cases for security-util-lib Test files added for a. LoggerSdcAudit.java b. LoggerSdcUtilBase.java Issue-ID: SDC-2736 Change-Id: I9a6ef40e85cfa7efebcd672bdb393316709442d9 Signed-off-by: gummar --- .../logging/wrappers/LoggerSdcAuditTest.java | 137 +++++++++++++++++++++ .../logging/wrappers/LoggerSdcUtilBaseTest.java | 116 +++++++++++++++++ 2 files changed, 253 insertions(+) create mode 100644 security-util-lib/src/test/java/org/onap/sdc/security/logging/wrappers/LoggerSdcAuditTest.java create mode 100644 security-util-lib/src/test/java/org/onap/sdc/security/logging/wrappers/LoggerSdcUtilBaseTest.java diff --git a/security-util-lib/src/test/java/org/onap/sdc/security/logging/wrappers/LoggerSdcAuditTest.java b/security-util-lib/src/test/java/org/onap/sdc/security/logging/wrappers/LoggerSdcAuditTest.java new file mode 100644 index 0000000..a8eab4c --- /dev/null +++ b/security-util-lib/src/test/java/org/onap/sdc/security/logging/wrappers/LoggerSdcAuditTest.java @@ -0,0 +1,137 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.sdc.security.logging.wrappers; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.logging.ref.slf4j.ONAPLogConstants; +import org.onap.sdc.security.logging.enums.LogLevel; +import org.onap.sdc.security.logging.enums.Severity; +import org.slf4j.MDC; +import org.slf4j.Marker; +import org.slf4j.MarkerFactory; + +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriInfo; +import java.net.URI; +import java.net.URISyntaxException; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class LoggerSdcAuditTest { + LoggerSdcAudit spy; + private Marker marker; + + @Before + public void setUp() { + LoggerSdcAudit audit = new LoggerSdcAudit(this.getClass()); + spy = spy(audit); + marker = MarkerFactory.getMarker(ONAPLogConstants.Markers.ENTRY.getName()); + } + + @After + public void tearDown() { + MDC.clear(); + } + + @Test + public void startLog() throws URISyntaxException { + URI mockRequestURI = new URI("https://sdc.portal.com/mockService/user/testUser"); + URI mockBaseURI = new URI("https://sdc.portal.com/"); + UriInfo mockInfo = mock(UriInfo.class); + when(mockInfo.getRequestUri()).thenReturn(mockRequestURI); + when(mockInfo.getBaseUri()).thenReturn(mockBaseURI); + ContainerRequestContext mockContext = mock(ContainerRequestContext.class); + when(mockContext.getUriInfo()).thenReturn(mockInfo); + spy.startLog(mockContext); + verify(spy, times(1)).startLog(any(ContainerRequestContext.class)); + assertEquals("true", MDC.get("auditOn")); + } + + @Test + public void startAuditFetchLog() { + spy.startAuditFetchLog("mockOnapPartner", "mockService"); + verify(spy, times(1)).startAuditFetchLog(anyString(), anyString()); + assertEquals("true", MDC.get("auditOn")); + } + + @Test + public void isFlowBeingTakenCare() { + assertFalse(LoggerSdcAudit.isFlowBeingTakenCare()); + MDC.put("auditOn", "true"); + assertTrue(LoggerSdcAudit.isFlowBeingTakenCare()); + } + + @Test + public void clearMyData() { + spy.clearMyData(); + verify(spy, times(1)).clearMyData(); + } + + @Test + public void logExit() throws URISyntaxException { + URI mockRequestURI = new URI("https://sdc.portal.com/mockService/user/testUser"); + URI mockBaseURI = new URI("https://sdc.portal.com/"); + UriInfo mockInfo = mock(UriInfo.class); + when(mockInfo.getRequestUri()).thenReturn(mockRequestURI); + when(mockInfo.getBaseUri()).thenReturn(mockBaseURI); + ContainerRequestContext mockContext = mock(ContainerRequestContext.class); + when(mockContext.getUriInfo()).thenReturn(mockInfo); + Response.StatusType mockStatus = mock(Response.StatusType.class); + when(mockStatus.getStatusCode()).thenReturn(400); + when(mockStatus.getReasonPhrase()).thenReturn("MockReasonPhrase"); + spy.logExit("172.0.0.0", mockContext, mockStatus, LogLevel.INFO, Severity.WARNING, "MockMessage", marker); + assertEquals("false", MDC.get("auditOn")); + verify(spy, times(1)).logExit(anyString(), any(ContainerRequestContext.class), any(Response.StatusType.class) + , any(LogLevel.class), any(Severity.class), anyString(), any(Marker.class)); + } + + @Test + public void logEntry() throws URISyntaxException { + URI mockRequestURI = new URI("https://sdc.portal.com/mockService/user/testUser"); + URI mockBaseURI = new URI("https://sdc.portal.com/"); + UriInfo mockInfo = mock(UriInfo.class); + when(mockInfo.getRequestUri()).thenReturn(mockRequestURI); + when(mockInfo.getBaseUri()).thenReturn(mockBaseURI); + ContainerRequestContext mockContext = mock(ContainerRequestContext.class); + when(mockContext.getUriInfo()).thenReturn(mockInfo); + Response.StatusType mockStatus = mock(Response.StatusType.class); + when(mockStatus.getStatusCode()).thenReturn(400); + when(mockStatus.getReasonPhrase()).thenReturn("MockReasonPhrase"); + spy.logEntry("172.0.0.0", mockContext, LogLevel.INFO, Severity.WARNING, "MockMessage", marker); + assertEquals("false", MDC.get("auditOn")); + verify(spy, times(1)).logEntry(anyString(), any(ContainerRequestContext.class) + , any(LogLevel.class), any(Severity.class), anyString(), any(Marker.class)); + } + + @Test + public void testLogEntry() { + spy.logEntry(LogLevel.INFO, Severity.WARNING, "MockMessage", marker, "RequestID"); + assertEquals("false", MDC.get("auditOn")); + verify(spy, times(1)) + .logEntry(any(LogLevel.class), any(Severity.class), anyString(), any(Marker.class), anyString()); + } +} \ No newline at end of file diff --git a/security-util-lib/src/test/java/org/onap/sdc/security/logging/wrappers/LoggerSdcUtilBaseTest.java b/security-util-lib/src/test/java/org/onap/sdc/security/logging/wrappers/LoggerSdcUtilBaseTest.java new file mode 100644 index 0000000..10b88c5 --- /dev/null +++ b/security-util-lib/src/test/java/org/onap/sdc/security/logging/wrappers/LoggerSdcUtilBaseTest.java @@ -0,0 +1,116 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.sdc.security.logging.wrappers; + +import org.apache.commons.lang3.StringUtils; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.onap.sdc.security.logging.enums.EcompLoggerErrorCode; + +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.core.UriInfo; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Arrays; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class LoggerSdcUtilBaseTest { + private LoggerSdcUtilBase spy; + + @Before + public void setUp() { + LoggerSdcUtilBase loggerSdcUtilBase = new LoggerSdcUtilBase(); + spy = spy(loggerSdcUtilBase); + } + + @Test + public void getRequestIDfromHeaders() { + String requestID = spy.getRequestIDfromHeaders(Arrays.asList(new String[]{"TestString1", "TestString2"})); + assertNotNull(requestID); + assertTrue(StringUtils.isNotBlank(requestID)); + assertFalse(requestID.contains("[") || requestID.contains("]")); + verify(spy, times(1)).getRequestIDfromHeaders(anyList()); + } + + @Test + public void convertHttpCodeToErrorCode() { + assertEquals( EcompLoggerErrorCode.SUCCESS ,spy.convertHttpCodeToErrorCode(398)); + assertEquals(EcompLoggerErrorCode.SCHEMA_ERROR, spy.convertHttpCodeToErrorCode(409)); + assertEquals(EcompLoggerErrorCode.UNKNOWN_ERROR, spy.convertHttpCodeToErrorCode(421)); + assertEquals(EcompLoggerErrorCode.DATA_ERROR, spy.convertHttpCodeToErrorCode(415)); + assertEquals(EcompLoggerErrorCode.PERMISSION_ERROR, spy.convertHttpCodeToErrorCode(407)); + assertEquals(EcompLoggerErrorCode.AVAILABILITY_TIMEOUTS_ERROR, spy.convertHttpCodeToErrorCode(410)); + assertEquals(EcompLoggerErrorCode.BUSINESS_PROCESS_ERROR, spy.convertHttpCodeToErrorCode(500)); + assertEquals(EcompLoggerErrorCode.AVAILABILITY_TIMEOUTS_ERROR, spy.convertHttpCodeToErrorCode(404)); + verify(spy, times(8)).convertHttpCodeToErrorCode(anyInt()); + } + + @Test + public void getPartnerName() { + assertEquals("SampleUserID", spy.getPartnerName("", "SampleUserID", "", "")); + assertEquals("SampleOnapPartner", spy.getPartnerName("", "", "", "SampleOnapPartner")); + //URL tests + assertEquals("testUser", spy.getPartnerName("", "", "sdc.test.portal/catalog/user/testUser", "")); + assertEquals("UNKNOWN", spy.getPartnerName("", "", "sdc.test.portal/catalog/user?testUser", "")); + //UserAgentTests + assertEquals("SampleUserID", spy.getPartnerName("SampleUserID", "", "", "")); + assertEquals("fireFox_FE", spy.getPartnerName("firefox", "", "", "")); + assertEquals("explorer_FE", spy.getPartnerName("msie", "", "", "")); + assertEquals("chrome_FE", spy.getPartnerName("chrome", "", "", "")); + //Unknown user + assertEquals("UNKNOWN", spy.getPartnerName("", "", "", "")); + verify(spy, times(9)).getPartnerName(anyString(), anyString(), anyString(), anyString()); + } + + @Test + public void getUrl() throws URISyntaxException { + URI mockURI = new URI("https://sdc.portal.com/index.htm?language=en"); + UriInfo mockInfo = mock(UriInfo.class); + when(mockInfo.getRequestUri()).thenReturn(mockURI); + ContainerRequestContext mockContext = mock(ContainerRequestContext.class); + when(mockContext.getUriInfo()).thenReturn(mockInfo); + + assertEquals("https://sdc.portal.com/index.htm?language=en", spy.getUrl(mockContext)); + verify(spy, times(1)).getUrl(any(ContainerRequestContext.class)); + } + + @Test + public void getServiceName() throws URISyntaxException { + URI mockRequestURI = new URI("https://sdc.portal.com/mockService"); + URI mockBaseURI = new URI("https://sdc.portal.com/"); + UriInfo mockInfo = mock(UriInfo.class); + when(mockInfo.getRequestUri()).thenReturn(mockRequestURI); + when(mockInfo.getBaseUri()).thenReturn(mockBaseURI); + ContainerRequestContext mockContext = mock(ContainerRequestContext.class); + when(mockContext.getUriInfo()).thenReturn(mockInfo); + + assertEquals("/mockService", spy.getServiceName(mockContext)); + verify(spy, times(1)).getServiceName(any(ContainerRequestContext.class)); + } +} \ No newline at end of file -- cgit 1.2.3-korg