[DMAAP-DR] Remove AAF/TLS phase 1
[dmaap/datarouter.git] / datarouter-node / src / test / java / org / onap / dmaap / datarouter / node / NodeConfigManagerTest.java
1 /*-
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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.dmaap.datarouter.node;
22
23 import static org.mockito.BDDMockito.given;
24 import static org.mockito.Mockito.mock;
25 import static org.mockito.Mockito.when;
26
27 import java.io.ByteArrayInputStream;
28 import java.io.File;
29 import java.io.IOException;
30 import java.io.InputStream;
31 import java.net.InetAddress;
32 import java.net.URL;
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;
39 import java.util.Map;
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.powermock.core.classloader.annotations.PowerMockIgnore;
49 import org.powermock.core.classloader.annotations.PrepareForTest;
50 import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
51
52 @SuppressStaticInitializationFor({"org.onap.dmaap.datarouter.node.NodeConfigManager"})
53 @PowerMockIgnore({"javax.net.ssl.*", "javax.security.auth.x500.X500Principal", "javax.crypto.*"})
54 @PrepareForTest({InetAddress.class})
55 public class NodeConfigManagerTest {
56
57     private static HttpUrlStreamHandler httpUrlStreamHandler;
58
59     @Mock
60     InputStream inputStream;
61
62     @Mock
63     NodeConfig nodeConfig;
64
65     @BeforeClass
66     public static void init() {
67         System.setProperty("org.onap.dmaap.datarouter.node.properties", "src/test/resources/node_test.properties");
68         // Allows for mocking URL connections
69         URLStreamHandlerFactory urlStreamHandlerFactory = mock(URLStreamHandlerFactory.class);
70         URL.setURLStreamHandlerFactory(urlStreamHandlerFactory);
71         httpUrlStreamHandler = new HttpUrlStreamHandler();
72         given(urlStreamHandlerFactory.createURLStreamHandler("https")).willReturn(httpUrlStreamHandler);
73     }
74
75     @Before
76     public void reset() throws IOException {
77         String href = "https://dmaap-dr-prov:8443/internal/prov";
78         URLConnection urlConnection = mock(URLConnection.class);
79         httpUrlStreamHandler.addConnection(new URL(href), urlConnection);
80         InputStream anyInputStream = new ByteArrayInputStream(Files.readAllBytes(Paths.get("src/test/resources/prov_data.json")));
81         when(urlConnection.getInputStream()).thenReturn(anyInputStream);
82     }
83
84     @After
85     public void resetHandler() {
86         httpUrlStreamHandler.resetConnections();
87     }
88
89     @AfterClass
90     public static void tearDownClass() throws IOException {
91         FileUtils.deleteDirectory(new File(System.getProperty("user.dir") + "/src/test/resources/spool"));
92         FileUtils.deleteDirectory(new File(System.getProperty("user.dir") + "/src/test/resources/logs"));
93     }
94
95     @Test
96     public void Verify_NodeConfigMan_Getters_Secure() {
97         NodeConfigManager nodeConfigManager = NodeConfigManager.getInstance();
98         Assert.assertEquals("legacy", nodeConfigManager.getAafInstance());
99         Assert.assertEquals("src/test/resources/spool/f", nodeConfigManager.getSpoolDir());
100         Assert.assertEquals("src/test/resources/spool", nodeConfigManager.getSpoolBase());
101         Assert.assertEquals("PKCS12", nodeConfigManager.getKSType());
102         Assert.assertEquals(8080, nodeConfigManager.getHttpPort());
103         Assert.assertEquals(8443, nodeConfigManager.getHttpsPort());
104         Assert.assertEquals(443, nodeConfigManager.getExtHttpsPort());
105         Assert.assertEquals("dmaap-dr-node", nodeConfigManager.getMyName());
106         Assert.assertEquals("https://dmaap-dr-prov:8443/internal/logs", nodeConfigManager.getEventLogUrl());
107         Assert.assertEquals("src/test/resources/logs/events", nodeConfigManager.getEventLogPrefix());
108         Assert.assertEquals(".log", nodeConfigManager.getEventLogSuffix());
109         Assert.assertEquals("src/test/resources/logs", nodeConfigManager.getLogDir());
110         Assert.assertEquals((86400000L * 30), nodeConfigManager.getLogRetention());
111         Assert.assertEquals(new String[] {"TLSv1.1", "TLSv1.2"}, nodeConfigManager.getEnabledprotocols());
112         Assert.assertEquals("org.onap.dmaap-dr.feed", nodeConfigManager.getAafType());
113         Assert.assertEquals("publish", nodeConfigManager.getAafAction());
114         Assert.assertTrue(nodeConfigManager.getCadiEnabled());
115         Assert.assertFalse(nodeConfigManager.isShutdown());
116         Assert.assertTrue(nodeConfigManager.isTlsEnabled());
117         Assert.assertTrue(nodeConfigManager.isConfigured());
118         Assert.assertNotNull(nodeConfigManager.getPublishId());
119         Assert.assertNotNull(nodeConfigManager.getAllDests());
120         Assert.assertEquals(10000, nodeConfigManager.getInitFailureTimer());
121         Assert.assertEquals(600000, nodeConfigManager.getWaitForFileProcessFailureTimer());
122         Assert.assertEquals(3600000, nodeConfigManager.getMaxFailureTimer());
123         Assert.assertEquals(2.0, nodeConfigManager.getFailureBackoff(),0.0);
124         Assert.assertEquals(86400000, nodeConfigManager.getExpirationTimer());
125         Assert.assertEquals(100, nodeConfigManager.getFairFileLimit());
126         Assert.assertEquals(60000, nodeConfigManager.getFairTimeLimit());
127         Assert.assertNotNull(nodeConfigManager.getTargets("1"));
128         Assert.assertEquals("src/test/resources/spool/f", nodeConfigManager.getSpoolDir());
129         Assert.assertEquals("src/test/resources/aaf/org.onap.dmaap-dr.p12", nodeConfigManager.getKSFile());
130         Assert.assertEquals("jks", nodeConfigManager.getTstype());
131         Assert.assertEquals("src/test/resources/aaf/org.onap.dmaap-dr.trust.jks", nodeConfigManager.getTsfile());
132         Assert.assertEquals(40, nodeConfigManager.getDeliveryThreads());
133         Assert.assertEquals("30", nodeConfigManager.getEventLogInterval());
134         Assert.assertFalse(nodeConfigManager.isFollowRedirects());
135         Assert.assertNotNull(nodeConfigManager.getTimer());
136         Assert.assertEquals("1", nodeConfigManager.getFeedId("1"));
137         Assert.assertEquals("Basic ZG1hYXAtZHItbm9kZTp2OStFanZpWVBXSURrazVxRlF5ZkoxSC9LdHBuYWo4K0NVTXlNL0lRRUp2UGdjOUxpU2s5ZnpKTjdFazl3SzZkaG11S1E4S3RtcC9kelpBU3BRUGZCdz09", nodeConfigManager.getMyAuth());
138         Assert.assertEquals(0.05, nodeConfigManager.getFreeDiskStart(), 0.0);
139         Assert.assertEquals(0.2, nodeConfigManager.getFreeDiskStop(), 0.0);
140         Assert.assertEquals("org.onap.dmaap-dr.feed|legacy|publish", nodeConfigManager.getPermission("legacy"));
141     }
142
143     /**
144      * {@link URLStreamHandler} that allows us to control the {@link URLConnection URLConnections} that are returned
145      * by {@link URL URLs} in the code under test.
146      */
147     public static class HttpUrlStreamHandler extends URLStreamHandler {
148
149         private Map<URL, URLConnection> connections = new HashMap();
150
151         @Override
152         protected URLConnection openConnection(URL url) {
153             return connections.get(url);
154         }
155
156         void resetConnections() {
157             connections = new HashMap();
158         }
159
160         HttpUrlStreamHandler addConnection(URL url, URLConnection urlConnection) {
161             connections.put(url, urlConnection);
162             return this;
163         }
164     }
165 }