2 * ============LICENSE_START=======================================================
4 * Copyright (C) 2019 Samsung. All rights reserved.
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 * ============LICENSE_END============================================
18 * ===================================================================
22 package org.onap.clamp.clds.util;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertNull;
27 import static org.junit.Assert.assertTrue;
29 import java.time.ZoneOffset;
30 import java.time.ZonedDateTime;
31 import java.time.format.DateTimeFormatter;
32 import java.util.Arrays;
34 import javax.net.ssl.HttpsURLConnection;
35 import javax.servlet.http.HttpServletRequest;
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.junit.runner.RunWith;
39 import org.mockito.Mockito;
40 import org.mockito.runners.MockitoJUnitRunner;
41 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory;
44 import org.slf4j.event.Level;
45 import org.springframework.http.HttpStatus;
46 import org.springframework.security.core.Authentication;
47 import org.springframework.security.core.context.SecurityContext;
48 import org.springframework.security.core.context.SecurityContextHolder;
49 import org.springframework.security.core.userdetails.UserDetails;
54 @RunWith(MockitoJUnitRunner.class)
55 public class LoggingUtilsTest {
57 protected static final Logger logger = LoggerFactory.getLogger(LoggingUtilsTest.class);
59 private static final String SERVICE_NAME = "LogginUtilsTest: Test Entering method";
61 private LoggingUtils util;
65 this.util = new LoggingUtils(logger);
69 public void testEnteringLoggingUtils() {
71 final String userName = "test";
73 UserDetails userDetails = Mockito.mock(UserDetails.class);
74 Mockito.when(userDetails.getUsername()).thenReturn(userName);
76 Authentication localAuth = Mockito.mock(Authentication.class);
77 Mockito.when(localAuth.getPrincipal()).thenReturn(userDetails);
79 SecurityContext securityContext = Mockito.mock(SecurityContext.class);
80 Mockito.when(securityContext.getAuthentication()).thenReturn(localAuth);
81 SecurityContextHolder.setContext(securityContext);
83 HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
85 util.entering(request, SERVICE_NAME);
88 String[] keys = {OnapLogConstants.Mdcs.PARTNER_NAME, OnapLogConstants.Mdcs.ENTRY_TIMESTAMP,
89 OnapLogConstants.Mdcs.REQUEST_ID, OnapLogConstants.Mdcs.INVOCATION_ID,
90 OnapLogConstants.Mdcs.CLIENT_IP_ADDRESS, OnapLogConstants.Mdcs.SERVER_FQDN,
91 OnapLogConstants.Mdcs.INSTANCE_UUID, OnapLogConstants.Mdcs.SERVICE_NAME};
92 Map<String, String> mdc = MDC.getMDCAdapter().getCopyOfContextMap();
94 assertTrue(checkMapKeys(mdc, keys));
95 assertEquals(userName, mdc.get(OnapLogConstants.Mdcs.PARTNER_NAME));
99 public void testExistingLoggingUtils() {
101 MDC.put(OnapLogConstants.Mdcs.ENTRY_TIMESTAMP,
102 ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT));
105 util.exiting(HttpStatus.OK.value(), SERVICE_NAME, Level.INFO,
106 OnapLogConstants.ResponseStatus.COMPLETE);
109 Map<String, String> mdc = MDC.getMDCAdapter().getCopyOfContextMap();
114 public void testInvokeTestUtils() {
116 final String targetEntity = "LoggingUtilsTest";
117 final String targetServiceName = "testInvokeTestUtils";
118 HttpsURLConnection secureConnection = Mockito.mock(HttpsURLConnection.class);
121 secureConnection = util.invokeHttps(secureConnection, targetEntity, targetServiceName);
124 assertNotNull(secureConnection);
126 {OnapLogConstants.Mdcs.TARGET_ENTITY, OnapLogConstants.Mdcs.TARGET_SERVICE_NAME,
127 OnapLogConstants.Mdcs.INVOCATIONID_OUT, OnapLogConstants.Mdcs.INVOKE_TIMESTAMP};
128 Map<String, String> mdc = MDC.getMDCAdapter().getCopyOfContextMap();
130 assertTrue(checkMapKeys(mdc, keys));
131 assertEquals(targetEntity, mdc.get(OnapLogConstants.Mdcs.TARGET_ENTITY));
132 assertEquals(targetServiceName, mdc.get(OnapLogConstants.Mdcs.TARGET_SERVICE_NAME));
135 private boolean checkMapKeys(Map map, String[] keys) {
136 return Arrays.stream(keys).allMatch(key -> map.get(key) != null);