diff options
21 files changed, 593 insertions, 73 deletions
diff --git a/src/main/java/org/onap/dcae/ApplicationSettings.java b/src/main/java/org/onap/dcae/ApplicationSettings.java index c7e42c5..45f01ce 100644 --- a/src/main/java/org/onap/dcae/ApplicationSettings.java +++ b/src/main/java/org/onap/dcae/ApplicationSettings.java @@ -120,11 +120,11 @@ public class ApplicationSettings { return httpsPort() > 0; } - public String rcc_keystorePasswordFileLocation() { + public String rccKeystorePasswordFileLocation() { return prependWithUserDirOnRelative(properties.getString("collector.keystore.passwordfile", "etc/rcc_passwordfile")); } - public String rcc_keystoreFileLocation() { + public String rccKeystoreFileLocation() { return prependWithUserDirOnRelative(properties.getString("collector.keystore.file.location", "etc/keystore")); } @@ -163,7 +163,7 @@ public class ApplicationSettings { return prependWithUserDirOnRelative(properties.getString("collector.rcc.truststore.file.location", "etc/truststore.onap.client.jks")); } - public String rcc_policy() { + public String rccPolicy() { return properties.getString("rcc_policy", ""); } @@ -175,15 +175,6 @@ public class ApplicationSettings { return properties.getString("collector.rcc.dmaap.streamid", null); } - private void updateProperty(String key, String value) { - if (properties.containsKey(key)) { - properties.setProperty(key, value); - log.info("Retrives property: " + key + "Value " + value); - } else { - properties.addProperty(key, value); - } - } - public void addOrUpdate(String key, String value) { if (properties.containsKey(key)) { properties.setProperty(key, value); diff --git a/src/main/java/org/onap/dcae/RestConfCollector.java b/src/main/java/org/onap/dcae/RestConfCollector.java index 1812d23..27fccd6 100644 --- a/src/main/java/org/onap/dcae/RestConfCollector.java +++ b/src/main/java/org/onap/dcae/RestConfCollector.java @@ -131,9 +131,9 @@ public class RestConfCollector { } private static void controllerConfig(ApplicationSettings properties) { - oplog.info("Policy received " + properties.rcc_policy()); - if (!properties.rcc_policy().equals("")) { - JSONArray contollers = new JSONArray(properties.rcc_policy()); + oplog.info("Policy received " + properties.rccPolicy()); + if (!properties.rccPolicy().equals("")) { + JSONArray contollers = new JSONArray(properties.rccPolicy()); for (int i = 0; i < contollers.length(); i++) { JSONObject controller = contollers.getJSONObject(i); oplog.info(" object " + controller.toString()); @@ -152,7 +152,7 @@ public class RestConfCollector { public static void handleEvents(EventData ev) throws Exception { if (!fProcessingInputQueue.offer(ev)) { - throw new Exception(); + throw new InterruptedException(); } log.info("RestConfCollector.handleEvents:EVENTS has been published successfully!"); } diff --git a/src/main/java/org/onap/dcae/common/Constants.java b/src/main/java/org/onap/dcae/common/Constants.java index 1fe5624..4c2c7b5 100755 --- a/src/main/java/org/onap/dcae/common/Constants.java +++ b/src/main/java/org/onap/dcae/common/Constants.java @@ -25,7 +25,7 @@ public class Constants { public static final String KDEFAULT_REQUESTBODY = "requestBody"; public static final String KSETTING_REST_API_URL = "restapiUrl"; public static final String KSETTING_REST_UNAME = "restapiUser"; - public static final String KSETTING_REST_PASSWORD = "restapiPassword"; + public static final String KSETTING_REST_PASSWD = "restapiPassword"; public static final String KSETTING_HTTP_METHOD = "httpMethod"; public static final String KSETTING_RESP_PREFIX = "responsePrefix"; public static final String KSETTING_SKIP_SENDING = "skipSending"; @@ -44,5 +44,5 @@ public class Constants { public static final String KSETTING_TRUST_STORE_FILENAME = "trustStoreFileName"; public static final String KSETTING_TRUST_STORE_PASSWORD = "trustStorePassword"; public static final String KSETTING_KEY_STORE_FILENAME = "keyStoreFileName"; - public static final String KSETTING_KEY_STORE_PASSWORD = "keyStorePassword"; + public static final String KSETTING_KEY_STORE_PASSWD = "keyStorePassword"; } diff --git a/src/main/java/org/onap/dcae/common/DataChangeEventListener.java b/src/main/java/org/onap/dcae/common/DataChangeEventListener.java index 6e13f73..2492c21 100755 --- a/src/main/java/org/onap/dcae/common/DataChangeEventListener.java +++ b/src/main/java/org/onap/dcae/common/DataChangeEventListener.java @@ -61,7 +61,7 @@ public class DataChangeEventListener implements EventListener { log.info("Received heart beat "); } } catch (Exception e) { - e.printStackTrace(); + log.info("InboundEvent event is malformed"); } } diff --git a/src/main/java/org/onap/dcae/common/EventProcessor.java b/src/main/java/org/onap/dcae/common/EventProcessor.java index bb0f095..164aed3 100644 --- a/src/main/java/org/onap/dcae/common/EventProcessor.java +++ b/src/main/java/org/onap/dcae/common/EventProcessor.java @@ -36,7 +36,7 @@ public class EventProcessor implements Runnable { private static final Logger log = LoggerFactory.getLogger(EventProcessor.class);
private Map<String, String[]> streamidHash = new HashMap<>();
- public EventData ev;
+
private EventPublisher eventPublisher;
public EventProcessor(EventPublisher eventPublisher, Map<String, String[]> streamidHash) {
@@ -48,7 +48,7 @@ public class EventProcessor implements Runnable { @Override
public void run() {
try {
-
+ EventData ev;
while (true) {
ev = RestConfCollector.fProcessingInputQueue.take();
diff --git a/src/main/java/org/onap/dcae/common/RestapiCallNode.java b/src/main/java/org/onap/dcae/common/RestapiCallNode.java index af0245d..01da72d 100755 --- a/src/main/java/org/onap/dcae/common/RestapiCallNode.java +++ b/src/main/java/org/onap/dcae/common/RestapiCallNode.java @@ -265,7 +265,7 @@ public class RestapiCallNode { byte[] encoded = Files.readAllBytes(Paths.get(fileName)); return new String(encoded, "UTF-8"); } catch (IOException | SecurityException e) { - throw new Exception("Unable to read file " + fileName + e.getLocalizedMessage(), e); + throw new IOException("Unable to read file " + fileName + e.getLocalizedMessage(), e); } } @@ -289,14 +289,14 @@ public class RestapiCallNode { if (p.restapiUser != null && p.restapiPassword != null) { client.addFilter(new HTTPDigestAuthFilter(p.restapiUser, p.restapiPassword)); } else { - throw new Exception("oAUTH authentication type selected but all restapiUser and restapiPassword " + + throw new SecurityException("oAUTH authentication type selected but all restapiUser and restapiPassword " + "parameters doesn't exist", new Throwable()); } } else if (p.authtype == AuthType.BASIC) { if (p.restapiUser != null && p.restapiPassword != null) { client.addFilter(new HTTPBasicAuthFilter(p.restapiUser, p.restapiPassword)); } else { - throw new Exception("oAUTH authentication type selected but all restapiUser and restapiPassword " + + throw new SecurityException("oAUTH authentication type selected but all restapiUser and restapiPassword " + "parameters doesn't exist", new Throwable()); } } else if (p.authtype == AuthType.OAUTH) { @@ -310,7 +310,7 @@ public class RestapiCallNode { .consumerSecret(p.oAuthConsumerSecret); client.addFilter(new OAuthClientFilter(client.getProviders(), params, secrets)); } else { - throw new Exception("oAUTH authentication type selected but all oAuthConsumerKey, voAuthConsumerSecret " + + throw new SecurityException("oAUTH authentication type selected but all oAuthConsumerKey, voAuthConsumerSecret " + "and oAuthSignatureMethod parameters doesn't exist", new Throwable()); } } diff --git a/src/main/java/org/onap/dcae/common/XmlParser.java b/src/main/java/org/onap/dcae/common/XmlParser.java index 06a4a66..a9902d2 100755 --- a/src/main/java/org/onap/dcae/common/XmlParser.java +++ b/src/main/java/org/onap/dcae/common/XmlParser.java @@ -59,7 +59,7 @@ public class XmlParser { InputStream in = new ByteArrayInputStream(s.getBytes()); saxParser.parse(in, handler); } catch (ParserConfigurationException | IOException | SAXException | NumberFormatException e) { - throw new Exception("Unable to convert XML to properties" + e.getLocalizedMessage(), e); + throw new IOException("Unable to convert XML to properties" + e.getLocalizedMessage(), e); } return handler.getProperties(); } diff --git a/src/main/java/org/onap/dcae/controller/AccessController.java b/src/main/java/org/onap/dcae/controller/AccessController.java index 83673b8..165c468 100644 --- a/src/main/java/org/onap/dcae/controller/AccessController.java +++ b/src/main/java/org/onap/dcae/controller/AccessController.java @@ -29,7 +29,6 @@ import org.onap.dcae.common.RestapiCallNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; @@ -100,6 +99,13 @@ public class AccessController { public RestapiCallNode getRestApiCallNode() { return restApiCallNode; } + public void setRestApiCallNode(RestapiCallNode node) { + this.restApiCallNode = node; + } + + public void setExecutor(ExecutorService executor) { + this.executor = executor; + } private void fetch_TokenId() { @@ -107,13 +113,13 @@ public class AccessController { modifyControllerParamMap(Constants.KSETTING_REST_API_URL, getUriMethod(this.properties.authorizationEnabled()) + cfgInfo.getController_restapiUrl() + cfgInfo.getController_accessTokenUrl()); modifyControllerParamMap(Constants.KDEFAULT_TEMP_FILENAME, cfgInfo.getController_accessTokenFile()); modifyControllerParamMap(Constants.KSETTING_REST_UNAME, cfgInfo.getController_restapiUser()); - modifyControllerParamMap(Constants.KSETTING_REST_PASSWORD, cfgInfo.getController_restapiPassword()); + modifyControllerParamMap(Constants.KSETTING_REST_PASSWD, cfgInfo.getController_restapiPassword()); modifyControllerParamMap(Constants.KSETTING_HTTP_METHOD, cfgInfo.getController_accessTokenMethod()); String httpResponse = null; try { - restApiCallNode.sendRequest(this.paraMap, ctx, null); + getRestApiCallNode().sendRequest(this.paraMap, ctx, null); String key = getControllerParamMapValue(Constants.KSETTING_RESP_PREFIX).concat(".").concat("httpResponse"); httpResponse = ctx.getAttribute(key); log.info("httpResponse ", httpResponse + " key " + key); @@ -136,7 +142,7 @@ public class AccessController { fetch_TokenId(); printControllerParamMap(); /* Create eventlist from properties */ - JSONArray contollers = new JSONArray(properties.rcc_policy()); + JSONArray contollers = new JSONArray(properties.rccPolicy()); for (int i = 0; i < contollers.length(); i++) { JSONObject controller = contollers.getJSONObject(i); if (controller.get("controller_name").equals(this.getCfgInfo().getController_name())) { @@ -188,7 +194,7 @@ public class AccessController { paraMap.put(Constants.KSETTING_FORMAT, "json"); paraMap.put(Constants.KSETTING_REST_UNAME, null); - paraMap.put(Constants.KSETTING_REST_PASSWORD, null); + paraMap.put(Constants.KSETTING_REST_PASSWD, null); paraMap.put(Constants.KDEFAULT_REQUESTBODY, null); paraMap.put(Constants.KSETTING_AUTH_TYPE, "unspecified"); @@ -208,7 +214,7 @@ public class AccessController { paraMap.put(Constants.KSETTING_TRUST_STORE_PASSWORD, trustPassword); paraMap.put(Constants.KSETTING_KEY_STORE_FILENAME, this.getProperties().keystoreFileLocation()); String KeyPassword = getKeyStorePassword(toAbsolutePath(this.getProperties().keystorePasswordFileLocation())); - paraMap.put(Constants.KSETTING_KEY_STORE_PASSWORD, KeyPassword); + paraMap.put(Constants.KSETTING_KEY_STORE_PASSWD, KeyPassword); } diff --git a/src/main/java/org/onap/dcae/controller/EnvProps.java b/src/main/java/org/onap/dcae/controller/EnvProps.java index a2d381d..568ff78 100644 --- a/src/main/java/org/onap/dcae/controller/EnvProps.java +++ b/src/main/java/org/onap/dcae/controller/EnvProps.java @@ -71,4 +71,9 @@ final class EnvProps { Objects.equals(cbsName, envProps.cbsName) && Objects.equals(appName, envProps.appName); } + + @Override + public int hashCode() { + return Objects.hash(consulProtocol, consulHost, consulPort, cbsName, cbsProtocol, appName); + } }
\ No newline at end of file diff --git a/src/main/java/org/onap/dcae/controller/PersistentEventConnection.java b/src/main/java/org/onap/dcae/controller/PersistentEventConnection.java index 1c0d85b..99ad1af 100644 --- a/src/main/java/org/onap/dcae/controller/PersistentEventConnection.java +++ b/src/main/java/org/onap/dcae/controller/PersistentEventConnection.java @@ -44,7 +44,7 @@ import java.util.Map; import static org.onap.dcae.common.RestapiCallNodeUtil.*; public class PersistentEventConnection implements Runnable { - public String event_name; + private String event_name; private String event_description; private boolean event_sseventUrlEmbed; private String event_sseventsField; @@ -100,7 +100,7 @@ public class PersistentEventConnection implements Runnable { + parentCtrllr.getCfgInfo().getController_subscriptionUrl()); modifyEventParamMap(Constants.KDEFAULT_TEMP_FILENAME, event_subscriptionTemplate); modifyEventParamMap(Constants.KSETTING_REST_UNAME, parentCtrllr.getCfgInfo().getController_restapiUser()); - modifyEventParamMap(Constants.KSETTING_REST_PASSWORD, parentCtrllr.getCfgInfo().getController_restapiPassword()); + modifyEventParamMap(Constants.KSETTING_REST_PASSWD, parentCtrllr.getCfgInfo().getController_restapiPassword()); modifyEventParamMap(Constants.KSETTING_HTTP_METHOD, parentCtrllr.getCfgInfo().getController_subsMethod()); parentCtrllr.getRestApiCallNode().sendRequest(eventParaMap, ctx, null); diff --git a/src/main/java/org/onap/dcae/restapi/ServletConfig.java b/src/main/java/org/onap/dcae/restapi/ServletConfig.java index 6a6a761..3bb174e 100644 --- a/src/main/java/org/onap/dcae/restapi/ServletConfig.java +++ b/src/main/java/org/onap/dcae/restapi/ServletConfig.java @@ -62,10 +62,10 @@ public class ServletConfig implements WebServerFactoryCustomizer<ConfigurableSer private SSLContextCreator simpleHttpsContextBuilder() { log.info("Enabling SSL"); - final Path keyStore = toAbsolutePath(properties.rcc_keystoreFileLocation()); + final Path keyStore = toAbsolutePath(properties.rccKeystoreFileLocation()); log.info("Using keyStore path: " + keyStore); - final Path keyStorePasswordLocation = toAbsolutePath(properties.rcc_keystorePasswordFileLocation()); + final Path keyStorePasswordLocation = toAbsolutePath(properties.rccKeystorePasswordFileLocation()); final String keyStorePassword = getKeyStorePassword(keyStorePasswordLocation); log.info("Using keyStore password from: " + keyStorePasswordLocation); diff --git a/src/test/java/org/onap/dcae/AccessControllerTest.java b/src/test/java/org/onap/dcae/AccessControllerTest.java index 74d3da1..b93e190 100644 --- a/src/test/java/org/onap/dcae/AccessControllerTest.java +++ b/src/test/java/org/onap/dcae/AccessControllerTest.java @@ -20,8 +20,6 @@ package org.onap.dcae; -import io.vavr.collection.Map; -import org.json.JSONArray; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -31,29 +29,27 @@ import org.onap.dcae.common.RestConfContext; import org.onap.dcae.common.RestapiCallNode; import org.onap.dcae.controller.AccessController; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.concurrent.ExecutorService; + import org.json.JSONObject; +import org.onap.dcae.controller.PersistentEventConnection; import static java.nio.file.Files.readAllBytes; -import static java.util.Collections.singletonList; import static org.junit.Assert.*; import static org.mockito.Mockito.*; -import static org.onap.dcae.CLIUtils.processCmdLine; @RunWith(MockitoJUnitRunner.Silent.class) public class AccessControllerTest { + @Mock private ApplicationSettings properties; @Mock private RestConfContext ctx; - @Mock - private RestapiCallNode restApiCallNode; + protected static final Path RESOURCES = Paths.get("src", "test", "resources"); protected static final Path KEYSTORE = Paths.get(RESOURCES.toString(), "keystore"); @@ -69,8 +65,8 @@ public class AccessControllerTest { when(properties.truststorePasswordFileLocation()).thenReturn(TRUSTSTORE_PASSWORD_FILE.toString()); when(properties.keystoreFileLocation()).thenReturn(KEYSTORE.toString()); when(properties.keystorePasswordFileLocation()).thenReturn(KEYSTORE_PASSWORD_FILE.toString()); - when(properties.rcc_keystoreFileLocation()).thenReturn(RCC_KEYSTORE.toString()); - when(properties.rcc_keystorePasswordFileLocation()).thenReturn(RCC_KEYSTORE_PASSWORD_FILE.toString()); + when(properties.rccKeystoreFileLocation()).thenReturn(RCC_KEYSTORE.toString()); + when(properties.rccKeystorePasswordFileLocation()).thenReturn(RCC_KEYSTORE_PASSWORD_FILE.toString()); try { when(readAllBytes(null)).thenReturn("colletor".getBytes()); } catch (Exception e){} @@ -93,21 +89,26 @@ public class AccessControllerTest { when(properties.truststorePasswordFileLocation()).thenReturn(TRUSTSTORE_PASSWORD_FILE.toString()); when(properties.keystoreFileLocation()).thenReturn(KEYSTORE.toString()); when(properties.keystorePasswordFileLocation()).thenReturn(KEYSTORE_PASSWORD_FILE.toString()); - when(properties.rcc_keystoreFileLocation()).thenReturn(RCC_KEYSTORE.toString()); - when(properties.rcc_keystorePasswordFileLocation()).thenReturn(RCC_KEYSTORE_PASSWORD_FILE.toString()); - when(properties.rcc_policy()).thenReturn("[{\"controller_name\":\"AccessM&C\",\"controller_restapiUrl\":\"10.118.191.43:26335\",\"controller_restapiUser\":\"access\",\"controller_restapiPassword\":\"Huawei@123\",\"controller_accessTokenUrl\":\"/rest/plat/smapp/v1/oauth/token\",\"controller_accessTokenFile\":\"./etc/access-token.json\",\"controller_accessTokenMethod\":\"put\",\"controller_subsMethod\":\"post\",\"controller_subscriptionUrl\":\"/restconf/v1/operations/huawei-nce-notification-action:establish-subscription\",\"event_details\":[{\"event_name\":\"ONT_registration\",\"event_description\":\"ONTregistartionevent\",\"event_sseventUrlEmbed\":\"true\",\"event_sseventsField\":\"output.url\",\"event_sseventsUrl\":\"null\",\"event_subscriptionTemplate\":\"./etc/ont_registartion_subscription_template.json\",\"event_unSubscriptionTemplate\":\"./etc/ont_registartion_unsubscription_template.json\",\"event_ruleId\":\"777777777\"}]}]"); + when(properties.rccKeystoreFileLocation()).thenReturn(RCC_KEYSTORE.toString()); + when(properties.rccKeystorePasswordFileLocation()).thenReturn(RCC_KEYSTORE_PASSWORD_FILE.toString()); + when(properties.rccPolicy()).thenReturn("[{\"controller_name\":\"AccessM&C\",\"controller_restapiUrl\":\"10.118.191.43:26335\",\"controller_restapiUser\":\"access\",\"controller_restapiPassword\":\"Huawei@123\",\"controller_accessTokenUrl\":\"/rest/plat/smapp/v1/oauth/token\",\"controller_accessTokenFile\":\"./etc/access-token.json\",\"controller_accessTokenMethod\":\"put\",\"controller_subsMethod\":\"post\",\"controller_subscriptionUrl\":\"/restconf/v1/operations/huawei-nce-notification-action:establish-subscription\",\"event_details\":[{\"event_name\":\"ONT_registration\",\"event_description\":\"ONTregistartionevent\",\"event_sseventUrlEmbed\":\"true\",\"event_sseventsField\":\"output.url\",\"event_sseventsUrl\":\"null\",\"event_subscriptionTemplate\":\"./etc/ont_registartion_subscription_template.json\",\"event_unSubscriptionTemplate\":\"./etc/ont_registartion_unsubscription_template.json\",\"event_ruleId\":\"777777777\"}]}]"); when(ctx.getAttribute("responsePrefix.httpResponse")).thenReturn("{\"accessSession\" : \"1234567890\",\"result\" : \"Ok\"}"); - try { - doThrow(new Exception()).when(restApiCallNode).sendRequest(null, null, 0); - } catch (Exception e){} - try { - when(readAllBytes(null)).thenReturn("colletor".getBytes()); - } catch (Exception e){} - JSONObject controller = new JSONObject("{\"controller_name\":\"AccessM&C\",\"controller_restapiUrl\":\"10.118.191.43:26335\",\"controller_restapiUser\":\"access\",\"controller_restapiPassword\":\"Huawei@123\",\"controller_accessTokenUrl\":\"/rest/plat/smapp/v1/oauth/token\",\"controller_accessTokenFile\":\"./etc/access-token.json\",\"controller_accessTokenMethod\":\"put\",\"controller_subsMethod\":\"post\",\"controller_subscriptionUrl\":\"/restconf/v1/operations/huawei-nce-notification-action:establish-subscription\",\"event_details\":[{\"event_name\":\"ONT_registration\",\"event_description\":\"ONTregistartionevent\",\"event_sseventUrlEmbed\":\"true\",\"event_sseventsField\":\"output.url\",\"event_sseventsUrl\":\"null\",\"event_subscriptionTemplate\":\"./etc/ont_registartion_subscription_template.json\",\"event_unSubscriptionTemplate\":\"./etc/ont_registartion_unsubscription_template.json\",\"event_ruleId\":\"777777777\"}]}"); try { + + RestapiCallNode restApiCallNode = Mockito.mock(RestapiCallNode.class); + Mockito.doNothing().when(restApiCallNode).sendRequest(any(), any(), any()); + ExecutorService executor = Mockito.mock(ExecutorService.class); + Mockito.doNothing().when(executor).execute(any()); + PersistentEventConnection conn = mock(PersistentEventConnection.class); + Mockito.doNothing().when(conn).run(); + when(properties.authorizationEnabled()).thenReturn(true); + JSONObject controller = new JSONObject("{\"controller_name\":\"AccessM&C\",\"controller_restapiUrl\":\"10.118.191.43:26335\",\"controller_restapiUser\":\"access\",\"controller_restapiPassword\":\"Huawei@123\",\"controller_accessTokenUrl\":\"/rest/plat/smapp/v1/oauth/token\",\"controller_accessTokenFile\":\"./etc/access-token.json\",\"controller_accessTokenMethod\":\"put\",\"controller_subsMethod\":\"post\",\"controller_subscriptionUrl\":\"/restconf/v1/operations/huawei-nce-notification-action:establish-subscription\",\"event_details\":[{\"event_name\":\"ONT_registration\",\"event_description\":\"ONTregistartionevent\",\"event_sseventUrlEmbed\":\"true\",\"event_sseventsField\":\"output.url\",\"event_sseventsUrl\":\"null\",\"event_subscriptionTemplate\":\"./etc/ont_registartion_subscription_template.json\",\"event_unSubscriptionTemplate\":\"./etc/ont_registartion_unsubscription_template.json\",\"event_ruleId\":\"777777777\"}]}"); AccessController acClr = new AccessController(controller, properties); + acClr.setRestApiCallNode(restApiCallNode); + acClr.setExecutor(executor); + acClr.getCtx().setAttribute("responsePrefix.httpResponse","{\"accessSession\" : \"12dsaf4-2323-1231131232323\"}"); acClr.activate(); } catch (Exception e){} } diff --git a/src/test/java/org/onap/dcae/ApplicationSettingsTest.java b/src/test/java/org/onap/dcae/ApplicationSettingsTest.java index 1e1a115..bc78a24 100644 --- a/src/test/java/org/onap/dcae/ApplicationSettingsTest.java +++ b/src/test/java/org/onap/dcae/ApplicationSettingsTest.java @@ -35,6 +35,7 @@ import io.vavr.collection.Map; import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.Objects; @@ -94,6 +95,12 @@ public class ApplicationSettingsTest { // then assertEquals("abc", actuallyOverridenByCLIParam); + + configurationAccessor.reloadProperties(); + + Path p = configurationAccessor.configurationFileLocation(); + boolean auth = configurationAccessor.clientTlsAuthenticationEnabled(); + assertEquals(auth, false); } @Test @@ -323,6 +330,68 @@ public class ApplicationSettingsTest { assertEquals(sanitizePath("etc/DmaapConfig.json"), cambriaConfigurationFileLocation); } + @Test + public void shouldrccKeystorePathExistDefault() throws IOException { + // when + String path= fromTemporaryConfiguration().rccKeystoreFileLocation(); + + // then + assertEquals(sanitizePath("etc/keystore"), path); + } + + @Test + public void shouldrccKeystorePasswordExistDefault() throws IOException { + // when + String path= fromTemporaryConfiguration().rccKeystorePasswordFileLocation(); + + // then + assertEquals(sanitizePath("etc/rcc_passwordfile"), path); + } + + @Test + public void shouldTruststorePathExistDefault() throws IOException { + // when + String path= fromTemporaryConfiguration().truststorePasswordFileLocation(); + + // then + assertEquals(sanitizePath("etc/trustpasswordfile"), path); + } + + @Test + public void shouldTruststorePasswordExistDefault() throws IOException { + // when + String path= fromTemporaryConfiguration().truststoreFileLocation(); + + // then + assertEquals(sanitizePath("etc/truststore.onap.client.jks"), path); + } + + @Test + public void shouldHaveKeyStoreAlias() throws IOException { + // when + String alias = fromTemporaryConfiguration().keystoreAlias(); + + // then + assertEquals(alias, "tomcat"); + } + + @Test + public void shouldHaveEmptyPolicy() throws IOException { + // when + String policy = fromTemporaryConfiguration().rccPolicy(); + + // then + assertEquals(policy, ""); + } + + @Test + public void shouldNotHaveStreamId() throws IOException { + // when + String stream = fromTemporaryConfiguration().dMaaPStreamsMapping(); + + // then + assertEquals(stream, null); + } private static ApplicationSettings fromTemporaryConfiguration(String... fileLines) throws IOException { File tempConfFile = File.createTempFile("doesNotMatter", "doesNotMatter"); diff --git a/src/test/java/org/onap/dcae/RestApiCallNodeUtilTest.java b/src/test/java/org/onap/dcae/RestApiCallNodeUtilTest.java new file mode 100644 index 0000000..723ffea --- /dev/null +++ b/src/test/java/org/onap/dcae/RestApiCallNodeUtilTest.java @@ -0,0 +1,204 @@ +/*- + * ============LICENSE_START======================================================= + * org.onap.dcaegen2.restconfcollector + * ================================================================================ + * Copyright (C) 2018-2019 Huawei. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae; + +import org.junit.Test; +import org.onap.dcae.common.*; + +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import java.util.*; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +/** + * Created by koblosz on 07.06.18. + */ +public class RestApiCallNodeUtilTest { + + + @Test + public void testParseParameter() { + Map<String, String> paraMap = new HashMap<>(); + paraMap.put(Constants.KDEFAULT_TEMP_FILENAME, null); + paraMap.put(Constants.KSETTING_REST_API_URL, "https://127.0.0.1:8080/rest/sample"); + paraMap.put(Constants.KSETTING_HTTP_METHOD, "post"); + paraMap.put(Constants.KSETTING_RESP_PREFIX, "responsePrefix"); + paraMap.put(Constants.KSETTING_SKIP_SENDING, "false"); + paraMap.put(Constants.KSETTING_SSE_CONNECT_URL, null); + paraMap.put(Constants.KSETTING_FORMAT, "json"); + + paraMap.put(Constants.KSETTING_REST_UNAME, null); + paraMap.put(Constants.KSETTING_REST_PASSWD, null); + paraMap.put(Constants.KDEFAULT_REQUESTBODY, null); + + paraMap.put(Constants.KSETTING_AUTH_TYPE, "unspecified"); + paraMap.put(Constants.KSETTING_CONTENT_TYPE, "application/json"); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_KEY, null); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_SECRET, null); + paraMap.put(Constants.KSETTING_OAUTH_SIGNATURE_METHOD, null); + paraMap.put(Constants.KSETTING_OAUTH_VERSION, null); + + paraMap.put(Constants.KSETTING_CUSTOMHTTP_HEADER, null); + paraMap.put(Constants.KSETTING_TOKENID, null); + paraMap.put(Constants.KSETTING_DUMP_HEADER, "false"); + paraMap.put(Constants.KSETTING_RETURN_REQUEST_PAYLOAD, "false"); + + paraMap.put(Constants.KSETTING_TRUST_STORE_FILENAME, null); + String trustPassword = "admin"; + paraMap.put(Constants.KSETTING_TRUST_STORE_PASSWORD, trustPassword); + paraMap.put(Constants.KSETTING_KEY_STORE_FILENAME, null); + String KeyPassword = "admin"; + paraMap.put(Constants.KSETTING_KEY_STORE_PASSWD, KeyPassword); + try { + Parameters p = RestapiCallNodeUtil.getParameters(paraMap); + assertEquals(p.contentType, "application/json"); + } catch (Exception e) {} + + } + + @Test + public void parseComplexParam() { + Map<String, String> paraMap = new HashMap<>(); + paraMap.put(Constants.KDEFAULT_TEMP_FILENAME, null); + paraMap.put(Constants.KSETTING_REST_API_URL, "https://sonar.onap.org/component_measures?id=org.onap.dcaegen2.collectors.restconf%3Arestconfcollector&metric=coverage&selected=org.onap.dcaegen2.collectors.restconf%3Arestconfcollector%3Asrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdcae%2Fcommon%2FRestapiCallNodeUtil.java"); + paraMap.put(Constants.KSETTING_HTTP_METHOD, "post"); + paraMap.put(Constants.KSETTING_RESP_PREFIX, "responsePrefix"); + paraMap.put(Constants.KSETTING_SKIP_SENDING, "false"); + paraMap.put(Constants.KSETTING_SSE_CONNECT_URL, null); + paraMap.put(Constants.KSETTING_FORMAT, "json"); + + paraMap.put(Constants.KSETTING_REST_UNAME, null); + paraMap.put(Constants.KSETTING_REST_PASSWD, null); + paraMap.put(Constants.KDEFAULT_REQUESTBODY, null); + + paraMap.put(Constants.KSETTING_AUTH_TYPE, "unspecified"); + paraMap.put(Constants.KSETTING_CONTENT_TYPE, "application/json"); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_KEY, null); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_SECRET, null); + paraMap.put(Constants.KSETTING_OAUTH_SIGNATURE_METHOD, null); + paraMap.put(Constants.KSETTING_OAUTH_VERSION, null); + + paraMap.put(Constants.KSETTING_CUSTOMHTTP_HEADER, null); + paraMap.put(Constants.KSETTING_TOKENID, null); + paraMap.put(Constants.KSETTING_DUMP_HEADER, "false"); + paraMap.put(Constants.KSETTING_RETURN_REQUEST_PAYLOAD, "false"); + + paraMap.put(Constants.KSETTING_TRUST_STORE_FILENAME, null); + String trustPassword = "admin"; + paraMap.put(Constants.KSETTING_TRUST_STORE_PASSWORD, trustPassword); + paraMap.put(Constants.KSETTING_KEY_STORE_FILENAME, null); + String KeyPassword = "admin"; + paraMap.put(Constants.KSETTING_KEY_STORE_PASSWD, KeyPassword); + try { + Parameters p = RestapiCallNodeUtil.getParameters(paraMap); + assertEquals(p.contentType, "application/json"); + } catch (Exception e) {} + } + + @Test + public void parseinValidUrl() { + Map<String, String> paraMap = new HashMap<>(); + paraMap.put(Constants.KSETTING_REST_API_URL, ""); + try { + Parameters p = RestapiCallNodeUtil.getParameters(paraMap); + } catch (Exception e) {} + } + + @Test + public void addAuthTypeTest() { + + Map<String, String> paraMap = new HashMap<>(); + paraMap.put(Constants.KDEFAULT_TEMP_FILENAME, null); + paraMap.put(Constants.KSETTING_REST_API_URL, "https://127.0.0.1:8080/rest/sample"); + paraMap.put(Constants.KSETTING_HTTP_METHOD, "post"); + paraMap.put(Constants.KSETTING_RESP_PREFIX, "responsePrefix"); + paraMap.put(Constants.KSETTING_SKIP_SENDING, "false"); + paraMap.put(Constants.KSETTING_SSE_CONNECT_URL, null); + paraMap.put(Constants.KSETTING_FORMAT, "json"); + + paraMap.put(Constants.KSETTING_REST_UNAME, "collector"); + paraMap.put(Constants.KSETTING_REST_PASSWD, "collector"); + paraMap.put(Constants.KDEFAULT_REQUESTBODY, null); + + paraMap.put(Constants.KSETTING_AUTH_TYPE, "unspecified"); + paraMap.put(Constants.KSETTING_CONTENT_TYPE, "application/json"); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_KEY, null); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_SECRET, null); + paraMap.put(Constants.KSETTING_OAUTH_SIGNATURE_METHOD, null); + paraMap.put(Constants.KSETTING_OAUTH_VERSION, null); + + paraMap.put(Constants.KSETTING_CUSTOMHTTP_HEADER, null); + paraMap.put(Constants.KSETTING_TOKENID, null); + paraMap.put(Constants.KSETTING_DUMP_HEADER, "false"); + paraMap.put(Constants.KSETTING_RETURN_REQUEST_PAYLOAD, "false"); + + paraMap.put(Constants.KSETTING_TRUST_STORE_FILENAME, null); + String trustPassword = "admin"; + paraMap.put(Constants.KSETTING_TRUST_STORE_PASSWORD, trustPassword); + paraMap.put(Constants.KSETTING_KEY_STORE_FILENAME, null); + String KeyPassword = "admin"; + paraMap.put(Constants.KSETTING_KEY_STORE_PASSWD, KeyPassword); + + + Client client = ClientBuilder.newBuilder().build(); + try { + Parameters p = RestapiCallNodeUtil.getParameters(paraMap); + p.restapiUser = "restapiUser"; + p.restapiPassword = "restapiPassword"; + RestapiCallNodeUtil.addAuthType(client, p); + + p.restapiUser = null; + p.restapiPassword = null; + p.oAuthConsumerKey = "restapiUser"; + p.oAuthSignatureMethod = "restapiPassword"; + p.oAuthConsumerSecret = "someval"; + RestapiCallNodeUtil.addAuthType(client, p); + + p.authtype = AuthType.DIGEST; + p.restapiUser = "restapiUser"; + p.restapiPassword = "restapiPassword"; + RestapiCallNodeUtil.addAuthType(client, p); + } catch (Exception e) {} + + try { + Parameters p = RestapiCallNodeUtil.getParameters(paraMap); + p.authtype = AuthType.BASIC; + p.restapiUser = "restapiUser"; + p.restapiPassword = "restapiPassword"; + RestapiCallNodeUtil.addAuthType(client, p); + + } catch (Exception e) {} + + try { + Parameters p = RestapiCallNodeUtil.getParameters(paraMap); + p.authtype = AuthType.OAUTH; + p.oAuthConsumerKey = "restapiUser"; + p.oAuthSignatureMethod = "restapiPassword"; + p.oAuthConsumerSecret = "someval"; + RestapiCallNodeUtil.addAuthType(client, p); + + } catch (Exception e) {} + } +}
\ No newline at end of file diff --git a/src/test/java/org/onap/dcae/TLSTest.java b/src/test/java/org/onap/dcae/TLSTest.java index ddb39ee..37505d3 100644 --- a/src/test/java/org/onap/dcae/TLSTest.java +++ b/src/test/java/org/onap/dcae/TLSTest.java @@ -31,8 +31,8 @@ import org.springframework.http.HttpStatus; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; -import static org.onap.dcae.TLSTest.HttpsConfiguration.USERNAME; import static org.onap.dcae.TLSTest.HttpsConfiguration.PASSWORD; +import static org.onap.dcae.TLSTest.HttpsConfiguration.USERNAME; public class TLSTest extends TLSTestBase { @@ -51,6 +51,46 @@ public class TLSTest extends TLSTestBase { } } + @Nested + @Import(HttpsConfiguration.class) + class HttpsTest extends TestClassBase { + + + @Test + public void shouldHttpsRequestWithoutBasicAuthFail() { + assertThrows(Exception.class, this::makeHttpsRequest); + } + + @Test + public void shouldHttpsRequestWithBasicAuthSucceed() { + assertEquals(HttpStatus.OK, makeHttpsRequestWithBasicAuth(USERNAME, PASSWORD).getStatusCode()); + } + } + + @Nested + @Import(HttpsConfigurationWithTLSAuthentication.class) + class HttpsWithTLSAuthenticationTest extends TestClassBase { + + @Test + public void shouldHttpsRequestWithoutCertificateFail() { + assertThrows(Exception.class, this::makeHttpsRequest); + } + } + + @Nested + @Import(HttpsConfigurationWithTLSAuthenticationAndBasicAuth.class) + class HttpsWithTLSAuthenticationAndBasicAuthTest extends TestClassBase { + + @Test + public void shouldHttpsRequestWithoutBasicAuthFail() { + assertThrows(Exception.class, this::makeHttpsRequestWithClientCert); + } + + @Test + public void shouldHttpsRequestWithBasicAuthSucceed() { + assertEquals(HttpStatus.OK, makeHttpsRequestWithClientCertAndBasicAuth(USERNAME, PASSWORD).getStatusCode()); + } + } static class HttpConfiguration extends TLSTestBase.ConfigurationBase { @Override @@ -66,8 +106,8 @@ public class TLSTest extends TLSTestBase { protected void configureSettings(ApplicationSettings settings) { when(settings.keystoreFileLocation()).thenReturn(KEYSTORE.toString()); when(settings.keystorePasswordFileLocation()).thenReturn(KEYSTORE_PASSWORD_FILE.toString()); - when(settings.rcc_keystoreFileLocation()).thenReturn(RCC_KEYSTORE.toString()); - when(settings.rcc_keystorePasswordFileLocation()).thenReturn(RCC_KEYSTORE_PASSWORD_FILE.toString()); + when(settings.rccKeystoreFileLocation()).thenReturn(RCC_KEYSTORE.toString()); + when(settings.rccKeystorePasswordFileLocation()).thenReturn(RCC_KEYSTORE_PASSWORD_FILE.toString()); when(settings.authorizationEnabled()).thenReturn(true); when(settings.validAuthorizationCredentials()).thenReturn(HashMap.of(USERNAME, "$2a$10$51tDgG2VNLde5E173Ay/YO.Fq.aD.LR2Rp8pY3QAKriOSPswvGviy")); } @@ -80,6 +120,7 @@ public class TLSTest extends TLSTestBase { when(settings.authorizationEnabled()).thenReturn(false); when(settings.clientTlsAuthenticationEnabled()).thenReturn(true); when(settings.truststoreFileLocation()).thenReturn(TRUSTSTORE.toString()); + when(settings.authorizationEnabled()).thenReturn(true); when(settings.truststorePasswordFileLocation()).thenReturn(TRUSTSTORE_PASSWORD_FILE.toString()); } } diff --git a/src/test/java/org/onap/dcae/TLSTestBase.java b/src/test/java/org/onap/dcae/TLSTestBase.java index fdcc6e6..a35f009 100644 --- a/src/test/java/org/onap/dcae/TLSTestBase.java +++ b/src/test/java/org/onap/dcae/TLSTestBase.java @@ -51,8 +51,8 @@ public class TLSTestBase { protected static final Path KEYSTORE_PASSWORD_FILE = Paths.get(RESOURCES.toString(), "passwordfile"); protected static final Path TRUSTSTORE = Paths.get(RESOURCES.toString(), "truststore"); protected static final Path TRUSTSTORE_PASSWORD_FILE = Paths.get(RESOURCES.toString(), "trustpasswordfile"); - protected static final Path RCC_KEYSTORE_PASSWORD_FILE = Paths.get(RESOURCES.toString(), "rcc_passwordfile"); - protected static final Path RCC_KEYSTORE = Paths.get(RESOURCES.toString(), "sdnc.p12"); + protected static final Path RCC_KEYSTORE_PASSWORD_FILE = Paths.get(RESOURCES.toString(), "passwordfile"); + protected static final Path RCC_KEYSTORE = Paths.get(RESOURCES.toString(), "keystore"); protected static abstract class ConfigurationBase { protected final ApplicationSettings settings = Mockito.mock(ApplicationSettings.class); diff --git a/src/test/java/org/onap/dcae/common/AdditionalHeaderWebTargetTest.java b/src/test/java/org/onap/dcae/common/AdditionalHeaderWebTargetTest.java new file mode 100644 index 0000000..8f47899 --- /dev/null +++ b/src/test/java/org/onap/dcae/common/AdditionalHeaderWebTargetTest.java @@ -0,0 +1,50 @@ +/*- + * ============LICENSE_START======================================================= + * org.onap.dcaegen2.restconfcollector + * ================================================================================ + * Copyright (C) 2018-2019 Huawei. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.common; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnitRunner; + +import javax.ws.rs.client.WebTarget; +import static org.mockito.Mockito.*; + +@RunWith(MockitoJUnitRunner.Silent.class) +public class AdditionalHeaderWebTargetTest { + + + @Test + public void AdditionalHaderWebTargettestBase() { + WebTarget target = mock(WebTarget.class); + AdditionalHeaderWebTarget t = new AdditionalHeaderWebTarget(target, "aaa112", "someheader"); + t.getConfiguration(); + t.getUri(); + t.getUriBuilder(); + t.path(""); + t.register(AdditionalHeaderWebTarget.class); + t.register(AdditionalHeaderWebTarget.class,0); + t.register(AdditionalHeaderWebTarget.class, AdditionalHeaderWebTarget.class); + Object obj = new Object(); + t.register(obj); + t.register(obj, 0); + t.register(obj, AdditionalHeaderWebTarget.class); + } +}
\ No newline at end of file diff --git a/src/test/java/org/onap/dcae/common/EventProcessorTest.java b/src/test/java/org/onap/dcae/common/EventProcessorTest.java index f32cc2e..e23a3df 100644 --- a/src/test/java/org/onap/dcae/common/EventProcessorTest.java +++ b/src/test/java/org/onap/dcae/common/EventProcessorTest.java @@ -33,12 +33,9 @@ import org.onap.dcae.ApplicationSettings; import org.onap.dcae.RestConfCollector; import org.onap.dcae.common.publishing.DMaaPConfigurationParser; import org.onap.dcae.common.publishing.EventPublisher; -import org.onap.dcae.common.publishing.PublisherConfig; import org.onap.dcae.controller.AccessController; import org.onap.dcae.controller.PersistentEventConnection; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.test.mock.mockito.MockBean; import java.nio.file.Path; @@ -87,8 +84,8 @@ public class EventProcessorTest { when(properties.truststorePasswordFileLocation()).thenReturn(TRUSTSTORE_PASSWORD_FILE.toString()); when(properties.keystoreFileLocation()).thenReturn(KEYSTORE.toString()); when(properties.keystorePasswordFileLocation()).thenReturn(KEYSTORE_PASSWORD_FILE.toString()); - when(properties.rcc_keystoreFileLocation()).thenReturn(RCC_KEYSTORE.toString()); - when(properties.rcc_keystorePasswordFileLocation()).thenReturn(RCC_KEYSTORE_PASSWORD_FILE.toString()); + when(properties.rccKeystoreFileLocation()).thenReturn(RCC_KEYSTORE.toString()); + when(properties.rccKeystorePasswordFileLocation()).thenReturn(RCC_KEYSTORE_PASSWORD_FILE.toString()); JSONObject controller = new JSONObject("{\"controller_name\":\"AccessM&C\",\"controller_restapiUrl\":\"10.118.191.43:26335\",\"controller_restapiUser\":\"access\",\"controller_restapiPassword\":\"Huawei@123\",\"controller_accessTokenUrl\":\"/rest/plat/smapp/v1/oauth/token\",\"controller_accessTokenFile\":\"./etc/access-token.json\",\"controller_accessTokenMethod\":\"put\",\"controller_subsMethod\":\"post\",\"controller_subscriptionUrl\":\"/restconf/v1/operations/huawei-nce-notification-action:establish-subscription\",\"event_details\":[{\"event_name\":\"ONT_registration\",\"event_description\":\"ONTregistartionevent\",\"event_sseventUrlEmbed\":\"true\",\"event_sseventsField\":\"output.url\",\"event_sseventsUrl\":\"null\",\"event_subscriptionTemplate\":\"./etc/ont_registartion_subscription_template.json\",\"event_unSubscriptionTemplate\":\"./etc/ont_registartion_unsubscription_template.json\",\"event_ruleId\":\"777777777\"}]}"); AccessController acClr = new AccessController(controller, properties); diff --git a/src/test/java/org/onap/dcae/common/RestApiCallNodeTest.java b/src/test/java/org/onap/dcae/common/RestApiCallNodeTest.java new file mode 100644 index 0000000..3534a6c --- /dev/null +++ b/src/test/java/org/onap/dcae/common/RestApiCallNodeTest.java @@ -0,0 +1,131 @@ +/*- + * ============LICENSE_START======================================================= + * org.onap.dcaegen2.restconfcollector + * ================================================================================ + * Copyright (C) 2018-2019 Huawei. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.common; + +import com.sun.jersey.api.client.WebResource; +import org.glassfish.jersey.client.ClientResponse; +import org.junit.Test; +import org.mockito.Mockito; + +import java.util.HashMap; +import java.util.Map; + +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; + +public class RestApiCallNodeTest { + @Test + public void RestApiCallNodeTestSendEmptyMessageNoTemplate() { + RestapiCallNode rest = new RestapiCallNode(); + RestConfContext ctx = new RestConfContext(); + Map<String, String> paraMap = new HashMap<>(); + paraMap.put(Constants.KDEFAULT_TEMP_FILENAME, null); + paraMap.put(Constants.KSETTING_REST_API_URL, "https://127.0.0.1:8080/rest/sample"); + paraMap.put(Constants.KSETTING_HTTP_METHOD, "post"); + paraMap.put(Constants.KSETTING_RESP_PREFIX, "responsePrefix"); + paraMap.put(Constants.KSETTING_SKIP_SENDING, "false"); + paraMap.put(Constants.KSETTING_SSE_CONNECT_URL, null); + paraMap.put(Constants.KSETTING_FORMAT, "json"); + + paraMap.put(Constants.KSETTING_REST_UNAME, null); + paraMap.put(Constants.KSETTING_REST_PASSWD, null); + paraMap.put(Constants.KDEFAULT_REQUESTBODY, null); + + paraMap.put(Constants.KSETTING_AUTH_TYPE, "unspecified"); + paraMap.put(Constants.KSETTING_CONTENT_TYPE, "application/json"); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_KEY, null); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_SECRET, null); + paraMap.put(Constants.KSETTING_OAUTH_SIGNATURE_METHOD, null); + paraMap.put(Constants.KSETTING_OAUTH_VERSION, null); + + paraMap.put(Constants.KSETTING_CUSTOMHTTP_HEADER, null); + paraMap.put(Constants.KSETTING_TOKENID, null); + paraMap.put(Constants.KSETTING_DUMP_HEADER, "false"); + paraMap.put(Constants.KSETTING_RETURN_REQUEST_PAYLOAD, "false"); + + paraMap.put(Constants.KSETTING_TRUST_STORE_FILENAME, null); + String trustPassword = "admin"; + paraMap.put(Constants.KSETTING_TRUST_STORE_PASSWORD, trustPassword); + paraMap.put(Constants.KSETTING_KEY_STORE_FILENAME, null); + String KeyPassword = "admin"; + paraMap.put(Constants.KSETTING_KEY_STORE_PASSWD, KeyPassword); + + + WebResource webResource = mock(WebResource.class); + WebResource.Builder webResourceBuilder = mock(WebResource.Builder.class); + ClientResponse clientResponse = mock(ClientResponse.class); + try { + Mockito.doNothing().when(webResourceBuilder).method("post"); + when(webResource.accept(anyString())).thenReturn(webResourceBuilder); + + rest.sendRequest(paraMap, ctx, 1); + }catch (Exception e){} + } + + @Test + public void RestApiCallNodeTestSendEmptyMessageWithTemplate() { + RestapiCallNode rest = new RestapiCallNode(); + RestConfContext ctx = new RestConfContext(); + Map<String, String> paraMap = new HashMap<>(); + paraMap.put(Constants.KDEFAULT_TEMP_FILENAME, "src/test/resources/testTemplatefile"); + paraMap.put(Constants.KSETTING_REST_API_URL, "https://127.0.0.1:8080/rest/sample"); + paraMap.put(Constants.KSETTING_HTTP_METHOD, "post"); + paraMap.put(Constants.KSETTING_RESP_PREFIX, "responsePrefix"); + paraMap.put(Constants.KSETTING_SKIP_SENDING, "false"); + paraMap.put(Constants.KSETTING_SSE_CONNECT_URL, null); + paraMap.put(Constants.KSETTING_FORMAT, "json"); + + paraMap.put(Constants.KSETTING_REST_UNAME, null); + paraMap.put(Constants.KSETTING_REST_PASSWD, null); + paraMap.put(Constants.KDEFAULT_REQUESTBODY, null); + + paraMap.put(Constants.KSETTING_AUTH_TYPE, "unspecified"); + paraMap.put(Constants.KSETTING_CONTENT_TYPE, "application/json"); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_KEY, null); + paraMap.put(Constants.KSETTING_OAUTH_CONSUMER_SECRET, null); + paraMap.put(Constants.KSETTING_OAUTH_SIGNATURE_METHOD, null); + paraMap.put(Constants.KSETTING_OAUTH_VERSION, null); + + paraMap.put(Constants.KSETTING_CUSTOMHTTP_HEADER, null); + paraMap.put(Constants.KSETTING_TOKENID, null); + paraMap.put(Constants.KSETTING_DUMP_HEADER, "false"); + paraMap.put(Constants.KSETTING_RETURN_REQUEST_PAYLOAD, "false"); + + paraMap.put(Constants.KSETTING_TRUST_STORE_FILENAME, null); + String trustPassword = "admin"; + paraMap.put(Constants.KSETTING_TRUST_STORE_PASSWORD, trustPassword); + paraMap.put(Constants.KSETTING_KEY_STORE_FILENAME, null); + String KeyPassword = "admin"; + paraMap.put(Constants.KSETTING_KEY_STORE_PASSWD, KeyPassword); + + + WebResource webResource = mock(WebResource.class); + WebResource.Builder webResourceBuilder = mock(WebResource.Builder.class); + ClientResponse clientResponse = mock(ClientResponse.class); + try { + Mockito.doNothing().when(webResourceBuilder).method("post"); + when(webResource.accept(anyString())).thenReturn(webResourceBuilder); + + rest.sendRequest(paraMap, ctx, 1); + }catch (Exception e){} + } + +}
\ No newline at end of file diff --git a/src/test/java/org/onap/dcae/common/XmlJsonUtilTest.java b/src/test/java/org/onap/dcae/common/XmlJsonUtilTest.java index 3cf065e..f05541f 100644 --- a/src/test/java/org/onap/dcae/common/XmlJsonUtilTest.java +++ b/src/test/java/org/onap/dcae/common/XmlJsonUtilTest.java @@ -43,6 +43,10 @@ public class XmlJsonUtilTest { mm.put("result.output", "xml2json"); mm.put("result.[", "start"); mm.put("result.]", "end"); + mm.put("result.list", "<LIST>\n" + + " <LITERAL VALUE=\"\"/>\n" + + " </LIST>"); + try { String str = XmlJsonUtil.getXml(mm, var); assertEquals(str.startsWith("<"), true); @@ -66,16 +70,19 @@ public class XmlJsonUtilTest { @Test public void removeEmptystructFromJson() { - String var = "{\n" + - "\t\"output\": \"xml2json\",\n" + - "\t\"time\": \"2018 12:04\",\n" + - "\t\"\": \"end\",\n" + - "\t\"status\": \"200\"\n" + - "}"; + String var = "{\"name\":\"john\",\"age\":22,\"class\":\"mca\", \"data\":{}, \"arr\" : [\"some\" : {}]}"; Map<String, String> mm = new HashMap<>(); try { String str = XmlJsonUtil.removeEmptyStructJson(var); }catch (Exception e) {} } + + @Test + public void removeLastCommaJson() { + String var2 ="{\"name\":\"john\",\"age\":22,\"class\":\"mca\", \"data\":{}, \"arr\" : [\"some\" : {},],}"; + try { + String str = XmlJsonUtil.removeLastCommaJson(var2); + }catch (Exception e) {} + } }
\ No newline at end of file diff --git a/src/test/resources/testTemplatefile b/src/test/resources/testTemplatefile new file mode 100755 index 0000000..8ce08dd --- /dev/null +++ b/src/test/resources/testTemplatefile @@ -0,0 +1,18 @@ +${ + "input": { + "encoding": "encode-json", + "protocol": "sse", + "subscription" : [ + { + "topic" : "resources", + "object-type-infos" : [ + { + "object-type" : "onu", + "version" : "v1" + } + ], + "operation" : ["create"] + } + ] + } +}
\ No newline at end of file |