2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
 
   6  * ================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
 
   8  * you may not use this file except in compliance with the License.
 
   9  * You may obtain a copy of the License at
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  13  * Unless required by applicable law or agreed to in writing, software
 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  16  * See the License for the specific language governing permissions and
 
  17  * limitations under the License.
 
  18  * ============LICENSE_END=========================================================
 
  21 package org.onap.so.adapters.network;
 
  23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 
  24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
 
  25 import static com.github.tomakehurst.wiremock.client.WireMock.patch;
 
  26 import static com.github.tomakehurst.wiremock.client.WireMock.post;
 
  27 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 
  28 import static org.onap.so.bpmn.mock.StubOpenStack.getBodyFromFile;
 
  29 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackCreatedVUSP_200;
 
  30 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackCreated_200;
 
  31 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackDeleteOrUpdateComplete_200;
 
  32 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostStacks_200;
 
  33 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutPublicUrlStackByNameAndID_NETWORK2_200;
 
  34 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccessQueryNetwork;
 
  35 import java.io.IOException;
 
  36 import java.util.ArrayList;
 
  37 import java.util.HashMap;
 
  38 import org.apache.http.HttpStatus;
 
  39 import org.junit.Test;
 
  40 import org.onap.so.adapters.vnf.BaseRestTestUtils;
 
  41 import org.onap.so.entity.MsoRequest;
 
  42 import org.onap.so.openstack.beans.NetworkRollback;
 
  43 import org.onap.so.openstack.beans.Subnet;
 
  44 import org.springframework.beans.factory.annotation.Autowired;
 
  45 import com.github.tomakehurst.wiremock.WireMockServer;
 
  47 public class MsoNetworkAdapterAsyncImplTest extends BaseRestTestUtils {
 
  49     MsoNetworkAdapterAsyncImpl impl;
 
  52     public void healthCheckATest() {
 
  53         MsoNetworkAdapterAsyncImpl mNAAimpl = new MsoNetworkAdapterAsyncImpl();
 
  54         mNAAimpl.healthCheckA();
 
  58     public void rollbackNetworkATest() throws IOException {
 
  59         wireMockServer.stubFor(post(urlPathEqualTo("/v2.0/tokens")).withRequestBody(containing("tenantId"))
 
  60                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
  61                         .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
 
  62                         .withStatus(HttpStatus.SC_OK)));
 
  63         wireMockServer.stubFor(post(urlPathEqualTo("/notificationUrl"))
 
  64                 .withRequestBody(containing("<completed>true</completed>"))
 
  65                 .willReturn(aResponse().withBody(
 
  66                         "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:net=\"http://org.onap.so/networkNotify\">\n"
 
  67                                 + "   <soapenv:Header/>\n" + "   <soapenv:Body>\n"
 
  68                                 + "      <net:rollbackNetworkNotificationResponse>\n"
 
  69                                 + "      </net:rollbackNetworkNotificationResponse>\n" + "   </soapenv:Body>\n"
 
  70                                 + "</soapenv:Envelope>")
 
  71                         .withStatus(HttpStatus.SC_OK)));
 
  72         NetworkRollback nrb = getNetworkRollback("mtn13");
 
  73         impl.rollbackNetworkA(nrb, "messageId", "http://localhost:" + wireMockPort + "/notificationUrl");
 
  77     public void rollbackNetworkATest_NotifyException() throws IOException {
 
  78         wireMockServer.stubFor(post(urlPathEqualTo("/v2.0/tokens")).withRequestBody(containing("tenantId"))
 
  79                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
  80                         .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
 
  81                         .withStatus(HttpStatus.SC_OK)));
 
  82         wireMockServer.stubFor(
 
  83                 post(urlPathEqualTo("/notificationUrl")).withRequestBody(containing("<completed>true</completed>"))
 
  84                         .willReturn(aResponse().withStatus(HttpStatus.SC_NOT_FOUND)));
 
  85         NetworkRollback nrb = getNetworkRollback("mtn13");
 
  86         impl.rollbackNetworkA(nrb, "messageId", "http://localhost:" + wireMockPort + "/notificationUrl");
 
  89     private NetworkRollback getNetworkRollback(String cloudId) {
 
  90         NetworkRollback nrb = new NetworkRollback();
 
  91         nrb.setCloudId(cloudId);
 
  92         nrb.setMsoRequest(new MsoRequest());
 
  93         nrb.setModelCustomizationUuid("3bdbb104-476c-483e-9f8b-c095b3d3068c");
 
  94         nrb.setNetworkCreated(true);
 
  95         nrb.setNetworkId("networkId");
 
  96         nrb.setNetworkName("networkName");
 
  97         nrb.setNetworkStackId("networkStackId");
 
  98         nrb.setNetworkType("networkType");
 
  99         nrb.setNeutronNetworkId("neutronNetworkId");
 
 100         nrb.setPhysicalNetwork("physicalNetwork");
 
 101         nrb.setTenantId("tenantId");
 
 102         nrb.setVlans(new ArrayList<>());
 
 107     public void rollbackNetworkATestNetworkException() {
 
 108         NetworkRollback nrb = getNetworkRollback("cloudId");
 
 110         impl.rollbackNetworkA(nrb, "messageId", "http://localhost");
 
 114     public void noRollbackNetworkATest() {
 
 115         impl.rollbackNetworkA(null, "messageId", "http://localhost");
 
 120     public void deleteNetworkATest() throws IOException {
 
 121         wireMockServer.stubFor(post(urlPathEqualTo("/v2.0/tokens")).withRequestBody(containing("tenantId"))
 
 122                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 123                         .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
 
 124                         .withStatus(HttpStatus.SC_OK)));
 
 125         wireMockServer.stubFor(post(urlPathEqualTo("/notificationUrl"))
 
 126                 .withRequestBody(containing("<completed>true</completed>"))
 
 127                 .willReturn(aResponse().withBody(
 
 128                         "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:net=\"http://org.onap.so/networkNotify\">\n"
 
 129                                 + "   <soapenv:Header/>\n" + "   <soapenv:Body>\n"
 
 130                                 + "      <net:deleteNetworkNotificationResponse>\n"
 
 131                                 + "      </net:deleteNetworkNotificationResponse>\n" + "   </soapenv:Body>\n"
 
 132                                 + "</soapenv:Envelope>")
 
 133                         .withStatus(HttpStatus.SC_OK)));
 
 134         impl.deleteNetworkA("mtn13", "tenantId", "networkType", "modelCustomizationUuid", "networkId", "messageId",
 
 135                 new MsoRequest(), "http://localhost:" + wireMockPort + "/notificationUrl");
 
 139     public void deleteNetworkATest_NotifyException() throws IOException {
 
 140         wireMockServer.stubFor(post(urlPathEqualTo("/v2.0/tokens")).withRequestBody(containing("tenantId"))
 
 141                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 142                         .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
 
 143                         .withStatus(HttpStatus.SC_OK)));
 
 144         wireMockServer.stubFor(
 
 145                 post(urlPathEqualTo("/notificationUrl")).withRequestBody(containing("<completed>true</completed>"))
 
 146                         .willReturn(aResponse().withStatus(HttpStatus.SC_NOT_FOUND)));
 
 147         impl.deleteNetworkA("mtn13", "tenantId", "networkType", "modelCustomizationUuid", "networkId", "messageId",
 
 148                 new MsoRequest(), "http://localhost:" + wireMockPort + "/notificationUrl");
 
 152     public void deleteNetworkATest_NetworkException() {
 
 153         impl.deleteNetworkA("cloudSiteId", "tenantId", "networkType", "modelCustomizationUuid", "networkId",
 
 154                 "messageId", new MsoRequest(), "http://localhost:" + wireMockPort + "/notificationUrl");
 
 158     public void updateNetworkATest() throws IOException {
 
 159         wireMockServer.stubFor(post(urlPathEqualTo("/v2.0/tokens")).withRequestBody(containing("tenantId"))
 
 160                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 161                         .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
 
 162                         .withStatus(HttpStatus.SC_OK)));
 
 163         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
 
 164                 "dvspg-VCE_VPE-mtjnj40avbc");
 
 165         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_UpdateComplete.json");
 
 166         mockOpenStackPutPublicUrlStackByNameAndID_NETWORK2_200(wireMockServer);
 
 167         wireMockServer.stubFor(post(urlPathEqualTo("/notificationUrl"))
 
 168                 .withRequestBody(containing("updateNetworkNotification"))
 
 169                 .willReturn(aResponse().withBody(
 
 170                         "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:net=\"http://org.onap.so/networkNotify\">\n"
 
 171                                 + "   <soapenv:Header/>\n" + "   <soapenv:Body>\n"
 
 172                                 + "      <net:updateNetworkNotificationResponse>\n"
 
 173                                 + "      </net:updateNetworkNotificationResponse>\n" + "   </soapenv:Body>\n"
 
 174                                 + "</soapenv:Envelope>")
 
 175                         .withStatus(HttpStatus.SC_OK)));
 
 176         HashMap<String, String> networkParams = new HashMap<String, String>();
 
 177         networkParams.put("shared", "true");
 
 178         networkParams.put("external", "false");
 
 179         impl.updateNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c",
 
 180                 "dvspg-VCE_VPE-mtjnj40avbc", "dvspg-VCE_VPE-mtjnj40avbc", "physicalNetworkName", new ArrayList<>(),
 
 181                 new ArrayList<Subnet>(), networkParams, "messageId", new MsoRequest(),
 
 182                 "http://localhost:" + wireMockPort + "/notificationUrl");
 
 186     public void updateNetworkATest_NotifyExcpetion() throws IOException {
 
 187         wireMockServer.stubFor(post(urlPathEqualTo("/v2.0/tokens")).withRequestBody(containing("tenantId"))
 
 188                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 189                         .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
 
 190                         .withStatus(HttpStatus.SC_OK)));
 
 191         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
 
 192                 "dvspg-VCE_VPE-mtjnj40avbc");
 
 193         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_UpdateComplete.json");
 
 194         mockOpenStackPutPublicUrlStackByNameAndID_NETWORK2_200(wireMockServer);
 
 195         HashMap<String, String> networkParams = new HashMap<String, String>();
 
 196         networkParams.put("shared", "true");
 
 197         networkParams.put("external", "false");
 
 198         impl.updateNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c",
 
 199                 "dvspg-VCE_VPE-mtjnj40avbc", "dvspg-VCE_VPE-mtjnj40avbc", "physicalNetworkName", new ArrayList<>(),
 
 200                 new ArrayList<>(), networkParams, "messageId", new MsoRequest(),
 
 201                 "http://localhost:" + wireMockPort + "/notificationUrl");
 
 205     public void updateNetworkATest_NetworkException() {
 
 206         impl.updateNetworkA("cloudSiteId", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c",
 
 207                 "networkId", "dvspg-VCE_VPE-mtjnj40avbc", "physicalNetworkName", new ArrayList<>(), new ArrayList<>(),
 
 208                 new HashMap<String, String>(), "messageId", new MsoRequest(),
 
 209                 "http://localhost:" + wireMockPort + "/notificationUrl");
 
 213     public void queryNetworkATest() throws IOException {
 
 214         mockOpenStackResponseAccessQueryNetwork(wireMockServer, wireMockPort);
 
 215         impl.queryNetworkA("mtn13", "tenantId", "networkId", "messageId", new MsoRequest(),
 
 216                 "http://localhost:" + wireMockPort + "/notificationUrl");
 
 220     public void createNetworkATest() throws IOException {
 
 221         wireMockServer.stubFor(post(urlPathEqualTo("/v2.0/tokens")).withRequestBody(containing("tenantId"))
 
 222                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 223                         .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
 
 224                         .withStatus(HttpStatus.SC_OK)));
 
 225         wireMockServer.stubFor(post(urlPathEqualTo("/notificationUrl"))
 
 226                 .withRequestBody(containing("createNetworkNotification"))
 
 227                 .willReturn(aResponse().withBody(
 
 228                         "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:net=\"http://org.onap.so/networkNotify\">\n"
 
 229                                 + "   <soapenv:Header/>\n" + "   <soapenv:Body>\n"
 
 230                                 + "      <net:createNetworkNotificationResponse>\n"
 
 231                                 + "      </net:createNetworkNotificationResponse>\n" + "   </soapenv:Body>\n"
 
 232                                 + "</soapenv:Envelope>")
 
 233                         .withStatus(HttpStatus.SC_OK)));
 
 234         mockOpenStackGetStackCreatedVUSP_200(wireMockServer);
 
 235         mockOpenStackPostStacks_200(wireMockServer);
 
 236         mockOpenStackPostStacks_200(wireMockServer);
 
 237         HashMap<String, String> networkParams = new HashMap<String, String>();
 
 238         impl.createNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c",
 
 239                 "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0", "physicalNetworkName", new ArrayList<>(), false,
 
 240                 false, new ArrayList<>(), networkParams, "messageId", new MsoRequest(),
 
 241                 "http://localhost:" + wireMockPort + "/notificationUrl");
 
 245     public void createNetworkATest_NotifyException() throws IOException {
 
 246         wireMockServer.stubFor(post(urlPathEqualTo("/v2.0/tokens")).withRequestBody(containing("tenantId"))
 
 247                 .willReturn(aResponse().withHeader("Content-Type", "application/json")
 
 248                         .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
 
 249                         .withStatus(HttpStatus.SC_OK)));
 
 250         mockOpenStackGetStackCreatedVUSP_200(wireMockServer);
 
 251         mockOpenStackPostStacks_200(wireMockServer);
 
 252         HashMap<String, String> networkParams = new HashMap<String, String>();
 
 253         networkParams.put("shared", "true");
 
 254         networkParams.put("external", "false");
 
 255         impl.createNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c",
 
 256                 "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0", "physicalNetworkName", new ArrayList<>(), false,
 
 257                 false, new ArrayList<>(), networkParams, "messageId", new MsoRequest(),
 
 258                 "http://localhost:" + wireMockPort + "/notificationUrl");
 
 262     public void createNetworkATest_NetworkException() {
 
 263         impl.createNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c",
 
 264                 "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0", "physicalNetworkName", new ArrayList<>(), false,
 
 265                 false, new ArrayList<>(), new HashMap<String, String>(), "messageId", new MsoRequest(),
 
 266                 "http://localhost:" + wireMockPort + "/notificationUrl");