2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.dmaap.datarouter.node;
23 import static org.mockito.BDDMockito.given;
24 import static org.mockito.Mockito.mock;
25 import static org.mockito.Mockito.when;
27 import java.io.ByteArrayInputStream;
29 import java.io.IOException;
30 import java.io.InputStream;
31 import java.net.InetAddress;
33 import java.net.URLConnection;
34 import java.net.URLStreamHandler;
35 import java.net.URLStreamHandlerFactory;
36 import java.nio.file.Files;
37 import java.nio.file.Paths;
38 import java.util.HashMap;
40 import org.apache.commons.io.FileUtils;
41 import org.junit.After;
42 import org.junit.AfterClass;
43 import org.junit.Assert;
44 import org.junit.Before;
45 import org.junit.BeforeClass;
46 import org.junit.Test;
47 import org.mockito.Mock;
48 import org.onap.dmaap.datarouter.node.config.NodeConfig;
49 import org.powermock.core.classloader.annotations.PowerMockIgnore;
50 import org.powermock.core.classloader.annotations.PrepareForTest;
51 import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
53 @SuppressStaticInitializationFor({"org.onap.dmaap.datarouter.node.NodeConfigManager"})
54 @PowerMockIgnore({"javax.net.ssl.*", "javax.security.auth.x500.X500Principal", "javax.crypto.*"})
55 @PrepareForTest({InetAddress.class})
56 public class NodeConfigManagerTest {
58 private static HttpUrlStreamHandler httpUrlStreamHandler;
61 InputStream inputStream;
64 NodeConfig nodeConfig;
67 public static void init() {
68 System.setProperty("org.onap.dmaap.datarouter.node.properties", "src/test/resources/node_test.properties");
69 // Allows for mocking URL connections
70 URLStreamHandlerFactory urlStreamHandlerFactory = mock(URLStreamHandlerFactory.class);
71 URL.setURLStreamHandlerFactory(urlStreamHandlerFactory);
72 httpUrlStreamHandler = new HttpUrlStreamHandler();
73 given(urlStreamHandlerFactory.createURLStreamHandler("https")).willReturn(httpUrlStreamHandler);
77 public void reset() throws IOException {
78 String href = "https://dmaap-dr-prov:8443/internal/prov";
79 URLConnection urlConnection = mock(URLConnection.class);
80 httpUrlStreamHandler.addConnection(new URL(href), urlConnection);
81 InputStream anyInputStream = new ByteArrayInputStream(Files.readAllBytes(Paths.get("src/test/resources/prov_data.json")));
82 when(urlConnection.getInputStream()).thenReturn(anyInputStream);
86 public void resetHandler() {
87 httpUrlStreamHandler.resetConnections();
91 public static void tearDownClass() throws IOException {
92 FileUtils.deleteDirectory(new File(System.getProperty("user.dir") + "/src/test/resources/spool"));
93 FileUtils.deleteDirectory(new File(System.getProperty("user.dir") + "/src/test/resources/logs"));
97 public void Verify_NodeConfigMan_Getters_Secure() {
98 NodeConfigManager nodeConfigManager = NodeConfigManager.getInstance();
99 Assert.assertEquals("src/test/resources/spool/f", nodeConfigManager.getSpoolDir());
100 Assert.assertEquals("src/test/resources/spool", nodeConfigManager.getSpoolBase());
101 Assert.assertEquals(8080, nodeConfigManager.getHttpPort());
102 Assert.assertEquals(8443, nodeConfigManager.getHttpsPort());
103 Assert.assertEquals(443, nodeConfigManager.getExtHttpsPort());
104 Assert.assertEquals("dmaap-dr-node", nodeConfigManager.getMyName());
105 Assert.assertEquals("https://dmaap-dr-prov:8443/internal/logs", nodeConfigManager.getEventLogUrl());
106 Assert.assertEquals("src/test/resources/logs/events", nodeConfigManager.getEventLogPrefix());
107 Assert.assertEquals(".log", nodeConfigManager.getEventLogSuffix());
108 Assert.assertEquals("src/test/resources/logs", nodeConfigManager.getLogDir());
109 Assert.assertEquals((86400000L * 30), nodeConfigManager.getLogRetention());
110 Assert.assertFalse(nodeConfigManager.isShutdown());
111 Assert.assertFalse(nodeConfigManager.isTlsEnabled());
112 Assert.assertTrue(nodeConfigManager.isConfigured());
113 Assert.assertNotNull(nodeConfigManager.getPublishId());
114 Assert.assertNotNull(nodeConfigManager.getAllDests());
115 Assert.assertEquals(10000, nodeConfigManager.getInitFailureTimer());
116 Assert.assertEquals(600000, nodeConfigManager.getWaitForFileProcessFailureTimer());
117 Assert.assertEquals(3600000, nodeConfigManager.getMaxFailureTimer());
118 Assert.assertEquals(2.0, nodeConfigManager.getFailureBackoff(),0.0);
119 Assert.assertEquals(86400000, nodeConfigManager.getExpirationTimer());
120 Assert.assertEquals(100, nodeConfigManager.getFairFileLimit());
121 Assert.assertEquals(60000, nodeConfigManager.getFairTimeLimit());
122 Assert.assertNotNull(nodeConfigManager.getTargets("1"));
123 Assert.assertEquals("src/test/resources/spool/f", nodeConfigManager.getSpoolDir());
124 Assert.assertEquals(40, nodeConfigManager.getDeliveryThreads());
125 Assert.assertEquals("30", nodeConfigManager.getEventLogInterval());
126 Assert.assertFalse(nodeConfigManager.isFollowRedirects());
127 Assert.assertNotNull(nodeConfigManager.getTimer());
128 Assert.assertEquals("1", nodeConfigManager.getFeedId("1"));
129 Assert.assertEquals("Basic ZG1hYXAtZHItbm9kZTp2OStFanZpWVBXSURrazVxRlF5ZkoxSC9LdHBuYWo4K0NVTXlNL0lRRUp2UGdjOUxpU2s5ZnpKTjdFazl3SzZkaG11S1E4S3RtcC9kelpBU3BRUGZCdz09", nodeConfigManager.getMyAuth());
130 Assert.assertEquals(0.05, nodeConfigManager.getFreeDiskStart(), 0.0);
131 Assert.assertEquals(0.2, nodeConfigManager.getFreeDiskStop(), 0.0);
135 * {@link URLStreamHandler} that allows us to control the {@link URLConnection URLConnections} that are returned
136 * by {@link URL URLs} in the code under test.
138 public static class HttpUrlStreamHandler extends URLStreamHandler {
140 private Map<URL, URLConnection> connections = new HashMap();
143 protected URLConnection openConnection(URL url) {
144 return connections.get(url);
147 void resetConnections() {
148 connections = new HashMap();
151 HttpUrlStreamHandler addConnection(URL url, URLConnection urlConnection) {
152 connections.put(url, urlConnection);