From 6cb28e580a3d3e308de77b2e7b239cae3912dd7f Mon Sep 17 00:00:00 2001 From: ARUL NAMBI Date: Tue, 1 Aug 2017 09:15:32 -0400 Subject: Adding support for external microservice Change-Id: I96fa079d70b9f9b5f48b0c1c24801f3624babe4a Signed-off-by: ARUL NAMBI --- .../entity/SuggestionSearchEntityTest.java | 158 +++++++++++++++++++++ .../datarouter/util/AaiUiSvcPolicyUtilTest.java | 112 +++++++++++++++ .../util/client/NoAuthRestClientTest.java | 115 +++++++++++++++ 3 files changed, 385 insertions(+) create mode 100644 src/test/java/org/openecomp/datarouter/entity/SuggestionSearchEntityTest.java create mode 100644 src/test/java/org/openecomp/datarouter/util/AaiUiSvcPolicyUtilTest.java create mode 100644 src/test/java/org/openecomp/datarouter/util/client/NoAuthRestClientTest.java (limited to 'src/test/java') diff --git a/src/test/java/org/openecomp/datarouter/entity/SuggestionSearchEntityTest.java b/src/test/java/org/openecomp/datarouter/entity/SuggestionSearchEntityTest.java new file mode 100644 index 0000000..3404eec --- /dev/null +++ b/src/test/java/org/openecomp/datarouter/entity/SuggestionSearchEntityTest.java @@ -0,0 +1,158 @@ +/** + * ============LICENSE_START======================================================= + * DataRouter + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. + * Copyright © 2017 Amdocs + * 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========================================================= + * + * ECOMP and OpenECOMP are trademarks + * and service marks of AT&T Intellectual Property. + */ +package org.openecomp.datarouter.entity; + +import static org.junit.Assert.assertEquals; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Scanner; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.openecomp.datarouter.search.filters.config.UiFiltersSchemaUtility; + +public class SuggestionSearchEntityTest { + private static SuggestionSearchEntity suggestionSearchEntity; + + @Before + public void setUpBeforeTest() { + UiFiltersSchemaUtility filtersSchemaUtility = Mockito.mock(UiFiltersSchemaUtility.class); + Mockito.when(filtersSchemaUtility.loadUiFiltersConfig()).thenReturn(null); + + suggestionSearchEntity = new SuggestionSearchEntity(); + suggestionSearchEntity.setFiltersSchemaUtility(filtersSchemaUtility); + suggestionSearchEntity.setEntityType("generic-vnf"); + suggestionSearchEntity.setEntityTypeAliases(Arrays.asList("VNFs")); + } + + /** + * Read in the contents of the given file (can include sub-path) in test/resources folder + * + * @param filePath The file name or path (relative to test/resources) to read from + * @return The contents of the file as a String + */ + public String getResourceFileContents(String filePath) { + StringBuilder result = new StringBuilder(""); + + ClassLoader classLoader = getClass().getClassLoader(); + File file = new File(classLoader.getResource(filePath).getFile()); + + try (Scanner scanner = new Scanner(file)) { + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + result.append(line).append("\n"); + } + + scanner.close(); + + } catch (IOException e) { + e.printStackTrace(); + } + + return result.toString(); + } + + @Test + public void testGetAsJson_multipleFilterAttributableStatusesIncluded() throws IOException { + String expectedOutput = + getResourceFileContents("uifilters/testGetAsJson_multipleFilterAttributableStatusesIncluded_expectedValue.json"); + + List suggestionInputPermutations = Arrays.asList( + "provStatus1 orchestrationStatus1 generic-vnf", + "provStatus1 generic-vnf orchestrationStatus1", + "orchestrationStatus1 generic-vnf provStatus1", + "orchestrationStatus1 provStatus1 generic-vnf", + "generic-vnf provStatus1 orchestrationStatus1", + "generic-vnf orchestrationStatus1 provStatus1"); + + MapinputOutputData = new HashMap<>(); + inputOutputData.put("prov-status", "provStatus1"); + inputOutputData.put("orchestration-status", "orchestrationStatus1"); + + // Build UI filters JSON string + JSONObject payloadFilter1 = new JSONObject(); + payloadFilter1.put("filterId", "1"); + payloadFilter1.put("filterValue", "orchestrationStatus1"); + + JSONObject payloadFilter2 = new JSONObject(); + payloadFilter2.put("filterId", "2"); + payloadFilter2.put("filterValue", "provStatus1"); + + JSONArray payloadFilters = new JSONArray(); + payloadFilters.put(payloadFilter2); + payloadFilters.put(payloadFilter1); + + JSONObject filterPayload = new JSONObject(); + filterPayload.put("filterList", payloadFilters); + + suggestionSearchEntity.setSuggestionInputPermutations(suggestionInputPermutations); + suggestionSearchEntity.setInputOutputData(inputOutputData); + suggestionSearchEntity.setFilterPayload(filterPayload); + + String actualOutput = suggestionSearchEntity.getAsJson(); + + assertEquals(expectedOutput.trim(), actualOutput.trim()); + } + + @Test + public void testGetAsJson_singleFilterAttributableStatusIncluded() throws IOException { + String expectedOutput = + getResourceFileContents("uifilters/testGetAsJson_singleFilterAttributableStatusIncluded_expectedValue.json"); + + List suggestionInputPermutations = Arrays.asList( + "provStatus1 generic-vnf", + "generic-vnf provStatus1"); + + MapinputOutputData = new HashMap<>(); + inputOutputData.put("prov-status", "provStatus1"); + + // Build UI filters JSON string + JSONObject payloadFilter1 = new JSONObject(); + payloadFilter1.put("filterId", "2"); + payloadFilter1.put("filterValue", "provStatus1"); + + JSONArray payloadFilters = new JSONArray(); + payloadFilters.put(payloadFilter1); + + JSONObject filterPayload = new JSONObject(); + filterPayload.put("filterList", payloadFilters); + + suggestionSearchEntity.setSuggestionInputPermutations(suggestionInputPermutations); + suggestionSearchEntity.setInputOutputData(inputOutputData); + suggestionSearchEntity.setFilterPayload(filterPayload); + + String actualOutput = suggestionSearchEntity.getAsJson(); + + assertEquals(expectedOutput.trim(), actualOutput.trim()); + } +} diff --git a/src/test/java/org/openecomp/datarouter/util/AaiUiSvcPolicyUtilTest.java b/src/test/java/org/openecomp/datarouter/util/AaiUiSvcPolicyUtilTest.java new file mode 100644 index 0000000..5e6841f --- /dev/null +++ b/src/test/java/org/openecomp/datarouter/util/AaiUiSvcPolicyUtilTest.java @@ -0,0 +1,112 @@ +/** + * ============LICENSE_START======================================================= + * DataRouter + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. + * Copyright © 2017 Amdocs + * 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========================================================= + * + * ECOMP and OpenECOMP are trademarks + * and service marks of AT&T Intellectual Property. + */ + +package org.openecomp.datarouter.util; + +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import org.junit.BeforeClass; +import org.junit.Test; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class AaiUiSvcPolicyUtilTest { + + private final static String ORIGIN_URI = "testUri/somePath"; + private final static String ORIGIN_PAYLOAD = "test payload"; + + private final static String validPayload = "{" + + "\"origin-uri\": \"" + ORIGIN_URI + "\"," + + "\"origin-payload\": \"" + ORIGIN_PAYLOAD + "\"}"; + + private final static String payloadWithoutOriginUri = "{" + + "\"origin-payload\": \"" + ORIGIN_PAYLOAD + "\"}"; + + private final static String payloadWithoutOriginPayload = "{" + + "\"origin-uri\": \"" + ORIGIN_URI + "\"}"; + + private static JsonNode node = null; + private static JsonNode nodeWithoutOrginUri = null; + private static JsonNode nodeWithoutOrginPayload = null; + static ObjectMapper mapper = new ObjectMapper(); + + @BeforeClass + public static void init(){ + try { + node = mapper.readTree(validPayload); + nodeWithoutOrginUri = mapper.readTree(payloadWithoutOriginUri); + nodeWithoutOrginPayload = mapper.readTree(payloadWithoutOriginPayload); + } catch (Exception e) { + fail("Initialization error"); + } + } + + @Test + public void testGetOriginPayload_missingPayload() { + JsonNode value = null; + try { + value = AaiUiSvcPolicyUtil.getOriginPayload(nodeWithoutOrginPayload); + assertNull("Failure to extract origin payload", value); + } catch (Exception e) { + fail("Failure to extract origin payload"); + } + } + + @Test + public void testGetOriginPayload_validPayload() { + JsonNode value = null; + try { + value = AaiUiSvcPolicyUtil.getOriginPayload(node); + assertTrue("Failure to extract origin payload", ORIGIN_PAYLOAD.equals(value.asText())); + } catch (Exception e) { + fail("Failure to extract origin payload"); + } + } + + @Test + public void testGetOriginUri_missingUri() { + String value = null; + try { + value = AaiUiSvcPolicyUtil.getOriginUri(nodeWithoutOrginUri); + assertTrue("Failure to extract origin uri", value.isEmpty()); + } catch (Exception e) { + fail("Failure to extract origin uri"); + } + } + + @Test + public void testGetOriginUri_validPayload() { + String value = null; + try { + value = AaiUiSvcPolicyUtil.getOriginUri(node); + assertTrue("Failure to extract origin uri", ORIGIN_URI.equals(value)); + } catch (Exception e) { + fail("Failure to extract origin uri"); + } + } +} diff --git a/src/test/java/org/openecomp/datarouter/util/client/NoAuthRestClientTest.java b/src/test/java/org/openecomp/datarouter/util/client/NoAuthRestClientTest.java new file mode 100644 index 0000000..4e4db75 --- /dev/null +++ b/src/test/java/org/openecomp/datarouter/util/client/NoAuthRestClientTest.java @@ -0,0 +1,115 @@ +/** + * ============LICENSE_START======================================================= + * DataRouter + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. + * Copyright © 2017 Amdocs + * 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========================================================= + * + * ECOMP and OpenECOMP are trademarks + * and service marks of AT&T Intellectual Property. + */ + +package org.openecomp.datarouter.util.client; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import javax.ws.rs.core.MediaType; + +import org.apache.camel.CamelContext; +import org.apache.camel.Exchange; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.impl.DefaultExchange; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.openecomp.restclient.client.OperationResult; +import org.openecomp.restclient.client.RestClient; + +public class NoAuthRestClientTest { + + RestClient client = null; + OperationResult successResult = null; + OperationResult failureResult = null; + Exchange exchange = null; + NoAuthRestClient narc = new NoAuthRestClient(60,60); + String goodDomain = "AGoodUrlThatNeverFails.com"; + String badDomain = "ABadUrlThatAlwaysFails.com"; + String goodTargetUrl = "http://" + goodDomain + ":1234/servicegraph"; + String badTargetUrl = "http://" + badDomain + ":1234/servicegraph"; + String payload = "{\"origin-uri\":\"/routerService/servicegraph\"," + + "\"origin-payload\":{\"hashId\":\"claymore-sdwan-service.full.(View and Inspect)\"}}"; + + String successResponsePayload = "very-good-result"; + String failureResponsePayload = "Server Error"; + + @SuppressWarnings("unchecked") + @Before + public void init(){ + client = Mockito.mock(RestClient.class); + successResult = new OperationResult(200, successResponsePayload); + failureResult = new OperationResult(500, failureResponsePayload); + failureResult.setFailureCause(failureResponsePayload); + Mockito.when(client.post(Mockito.eq(goodTargetUrl), Mockito.anyString(), Mockito.anyMap(), + Mockito.eq(MediaType.APPLICATION_JSON_TYPE), Mockito.eq(MediaType.APPLICATION_JSON_TYPE))) + .thenReturn(successResult); + Mockito.when(client.post(Mockito.eq(badTargetUrl), Mockito.anyString(), Mockito.anyMap(), + Mockito.eq(MediaType.APPLICATION_JSON_TYPE), Mockito.eq(MediaType.APPLICATION_JSON_TYPE))) + .thenReturn(failureResult); + narc.setRestClient(client); + + } + + public Exchange getExchange(){ + CamelContext ctx = new DefaultCamelContext(); + Exchange ex = new DefaultExchange(ctx); + ex.getIn().setHeader(Exchange.HTTP_URL, "http://ARandomOrigin.com"); + ex.getIn().setBody(payload); + return ex; + } + + @Test + public void testHandleRequest_successScenario() { + Exchange ex = getExchange(); + try { + narc.handleRequest(goodDomain, "1234", ex); + String outBody = ex.getOut().getBody(String.class); + assertEquals("Routing success scenario: Failure to get correct http status.", + ex.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE), 200 ); + assertEquals("Routing success scenario: Failure to get response body.", + outBody, successResponsePayload); + } catch (Exception e) { + fail("Routing success scenario: Failure to process."); + } + } + + @Test + public void testHandleRequest_failureScenario() { + Exchange ex = getExchange(); + try { + narc.handleRequest(badDomain, "1234", ex); + String outBody = ex.getOut().getBody(String.class); + assertEquals("Routing failure scenario: Failure to get correct http status.", + ex.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE), 500 ); + assertEquals("Routing failure scenario: Failure to get response body.", + outBody, failureResult.getFailureCause()); + } catch (Exception e) { + fail("Routing failure scenario: Failure to process."); + } + } + +} -- cgit 1.2.3-korg