From 696b3aab041353afd74e26c0b9a569d0b1b9e254 Mon Sep 17 00:00:00 2001 From: Geora Barsky Date: Fri, 12 Oct 2018 11:46:52 -0400 Subject: Adding API Mapping infrastructure Issue-ID: LOG-391 Change-Id: I30d954bcdf1cf0748bb5249cbf10defb8dbc8ff6 Signed-off-by: Geora Barsky --- .../unittest/service/SdncContextBuilderTest.java | 101 ++++++++++++++++++++- 1 file changed, 97 insertions(+), 4 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java b/src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java index 91ab1cf..2d21ca4 100644 --- a/src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java +++ b/src/test/java/org/onap/pomba/contextbuilder/sdnc/unittest/service/SdncContextBuilderTest.java @@ -50,21 +50,44 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; +import org.onap.aai.restclient.client.RestClient; +import org.onap.pomba.contextbuilder.sdnc.Application; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.UUID; +import org.onap.pomba.contextbuilder.sdnc.model.ServiceEntity; @RunWith(SpringJUnit4ClassRunner.class) @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) @WebAppConfiguration -@SpringBootTest -@TestPropertySource(properties = {"sdnc.host=localhost", "sdnc.port=30202"}) +@SpringBootTest (classes = Application.class) +@TestPropertySource(properties = {"sdnc.host=localhost", "sdnc.port=30202", + "aai.httpProtocol=http", "aai.serviceName=localhost", "aai.servicePort=9808"}) public class SdncContextBuilderTest { - private String serviceInstanceId = "c6456519-6acf-4adb-997c-3c363dd4caaf"; + private String serviceInstanceId = "7d518257-49bd-40ac-8d17-017a726ec12a"; //match to the test data in junit/queryNodeData-1.json private String testRestHeaders = "testRestHeaders"; - @Autowired + private String customerId = "DemoCust_651800ed-2a3c-45f5-b920-85c1ed155fc2"; // match to queryNodeData-1.json and customerData-1.json + @Autowired RestService service; @Autowired private String sdncCtxBuilderBasicAuthorization; + //AAI related + @Autowired + private String aaiBasicAuthorization; + @Autowired + private RestClient aaiClient; + @Autowired + private String aaiBaseUrl; + @Autowired + private String aaiPathToSearchNodeQuery; + @Autowired + private String aaiPathToCustomerQuery; + @Rule + public WireMockRule aaiEnricherRule = new WireMockRule(wireMockConfig().port(9808)); + @Rule public WireMockRule sdncRule = new WireMockRule(wireMockConfig().port(30202)); @@ -129,6 +152,12 @@ public class SdncContextBuilderTest { "testVerifyServiceDecomposition", "test1", sdncCtxBuilderBasicAuthorization); when(mockHttpHeaders.getRequestHeaders()).thenReturn(multivaluedMapImpl); + + String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceId; + addResponse(queryNodeUrl, "junit/queryNodeData-1.json", aaiEnricherRule); + String customerUrl = aaiPathToCustomerQuery + customerId; + addResponse(customerUrl, "junit/customerData-1.json", aaiEnricherRule); + Response response = this.service.getContext(mockHttpHeaders, serviceInstanceId); assertEquals(Status.OK.getStatusCode(), response.getStatus()); @@ -152,4 +181,68 @@ public class SdncContextBuilderTest { } return headers; } + + //AAI related + + @Test + public void testObtainResouceLinkBasedOnServiceInstanceFromAAI() throws Exception { + String transactionId = UUID.randomUUID().toString(); + String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceId; + addResponse(queryNodeUrl, "junit/queryNodeData-1.json", aaiEnricherRule); + String customerUrl = aaiPathToCustomerQuery + customerId; + addResponse(customerUrl, "junit/customerData-1.json", aaiEnricherRule); + + ServiceEntity serviceEntity = RestUtil.getServiceEntity(aaiClient,aaiBaseUrl,aaiBasicAuthorization, aaiPathToSearchNodeQuery, aaiPathToCustomerQuery, serviceInstanceId, transactionId); + + assertEquals(serviceInstanceId, serviceEntity.getServiceInstanceId()); + assertEquals("vFW", serviceEntity.getServiceType()); // serviceType is hard-coded in queryNodeData-1.json + assertEquals(customerId, serviceEntity.getCustomerId()); // customerId is hard-coded in queryNodeData-1.json + assertEquals("DemoCust_651800ed-2a3c-45f5-b920-85c1ed155fc2", serviceEntity.getCustomerName()); // customerName is hard-coded in queryNodeData-1.json + assertEquals("CUST", serviceEntity.getCustomerType()); //customerType is hard-coded in customerData-1.json + } + + @Test + public void testObtainResouceLinkBasedOnServiceInstanceFromAAI_nullResourceLink() throws Exception { + String transactionId = UUID.randomUUID().toString(); + String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceId; + addResponse(queryNodeUrl, "junit/queryNodeData-nullResourceLink.json", aaiEnricherRule); + + try { + RestUtil.getServiceEntity(aaiClient,aaiBaseUrl,aaiBasicAuthorization, aaiPathToSearchNodeQuery, aaiPathToCustomerQuery, serviceInstanceId, transactionId); + } catch (Exception e) { + assertTrue(e.getMessage().contains("JSONObject[\"resource-link\"] not found")); + } + } + + @Test + public void testObtainResouceLinkBasedOnServiceInstanceFromAAI_nullCustomerType() throws Exception { + String transactionId = UUID.randomUUID().toString(); + String queryNodeUrl = aaiPathToSearchNodeQuery + serviceInstanceId; + addResponse(queryNodeUrl, "junit/queryNodeData-1.json", aaiEnricherRule); + String customerUrl = aaiPathToCustomerQuery + customerId; + addResponse(customerUrl, "junit/customerData-CustomerIdNotFound.json", aaiEnricherRule); + + try { + RestUtil.getServiceEntity(aaiClient,aaiBaseUrl,aaiBasicAuthorization, aaiPathToSearchNodeQuery, aaiPathToCustomerQuery, serviceInstanceId, transactionId); + } catch (Exception e) { + assertTrue(e.getMessage().contains("Customer ID cannot be found from AAI")); + } + } + + private void addResponse(String path, String classpathResource, WireMockRule thisMock) throws IOException { + String payload = readFully(ClassLoader.getSystemResourceAsStream(classpathResource)); + thisMock.stubFor(get(path).willReturn(okJson(payload))); + } + + private String readFully(InputStream in) throws IOException { + char[] cbuf = new char[1024]; + StringBuilder content = new StringBuilder(); + try (InputStreamReader reader = new InputStreamReader(in, "UTF-8")) { + int count; + while ((count = reader.read(cbuf)) >= 0) { + content.append(cbuf, 0, count); + } + } + return content.toString(); + } } -- cgit 1.2.3-korg