From 82c26b5b8e7e92dfd9108684290e3a596b800e62 Mon Sep 17 00:00:00 2001 From: s00370346 Date: Tue, 19 Mar 2019 16:22:00 +0530 Subject: Issue-ID: DCAEGEN2-1055 RestConfCollector UnitTest Change-Id: I513ddb61d710f12ab3ccc6fca2329f3f74b4e39c Signed-off-by: s00370346 --- .../java/org/onap/dcae/ApplicationSettings.java | 15 +- src/main/java/org/onap/dcae/RestConfCollector.java | 8 +- src/main/java/org/onap/dcae/common/Constants.java | 4 +- .../onap/dcae/common/DataChangeEventListener.java | 2 +- .../java/org/onap/dcae/common/EventProcessor.java | 4 +- .../java/org/onap/dcae/common/RestapiCallNode.java | 8 +- src/main/java/org/onap/dcae/common/XmlParser.java | 2 +- .../org/onap/dcae/controller/AccessController.java | 18 +- .../java/org/onap/dcae/controller/EnvProps.java | 5 + .../dcae/controller/PersistentEventConnection.java | 4 +- .../java/org/onap/dcae/restapi/ServletConfig.java | 4 +- .../java/org/onap/dcae/AccessControllerTest.java | 43 ++--- .../org/onap/dcae/ApplicationSettingsTest.java | 69 +++++++ .../org/onap/dcae/RestApiCallNodeUtilTest.java | 204 +++++++++++++++++++++ src/test/java/org/onap/dcae/TLSTest.java | 47 ++++- src/test/java/org/onap/dcae/TLSTestBase.java | 4 +- .../dcae/common/AdditionalHeaderWebTargetTest.java | 50 +++++ .../org/onap/dcae/common/EventProcessorTest.java | 7 +- .../org/onap/dcae/common/RestApiCallNodeTest.java | 131 +++++++++++++ .../java/org/onap/dcae/common/XmlJsonUtilTest.java | 19 +- src/test/resources/testTemplatefile | 18 ++ 21 files changed, 593 insertions(+), 73 deletions(-) create mode 100644 src/test/java/org/onap/dcae/RestApiCallNodeUtilTest.java create mode 100644 src/test/java/org/onap/dcae/common/AdditionalHeaderWebTargetTest.java create mode 100644 src/test/java/org/onap/dcae/common/RestApiCallNodeTest.java create mode 100755 src/test/resources/testTemplatefile (limited to 'src') 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 streamidHash = new HashMap<>(); - public EventData ev; + private EventPublisher eventPublisher; public EventProcessor(EventPublisher eventPublisher, Map 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 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 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 paraMap = new HashMap<>(); + paraMap.put(Constants.KSETTING_REST_API_URL, ""); + try { + Parameters p = RestapiCallNodeUtil.getParameters(paraMap); + } catch (Exception e) {} + } + + @Test + public void addAuthTypeTest() { + + Map 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 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 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", "\n" + + " \n" + + " "); + 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 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 -- cgit 1.2.3-korg