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/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 ++ 10 files changed, 555 insertions(+), 37 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/test') 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 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