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 org.apache.http.HttpStatus;
24 import org.junit.Test;
25 import org.onap.so.adapters.vnf.BaseRestTestUtils;
26 import org.onap.so.entity.MsoRequest;
27 import org.onap.so.openstack.beans.NetworkRollback;
28 import org.onap.so.openstack.beans.Subnet;
29 import org.springframework.beans.factory.annotation.Autowired;
31 import java.io.IOException;
32 import java.util.ArrayList;
33 import java.util.HashMap;
35 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
36 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
37 import static com.github.tomakehurst.wiremock.client.WireMock.post;
38 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
39 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
40 import static org.onap.so.bpmn.mock.StubOpenStack.getBodyFromFile;
41 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackCreatedVUSP_200;
42 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackCreated_200;
43 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackDeleteOrUpdateComplete_200;
44 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostStacks_200;
45 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutPublicUrlStackByNameAndID_NETWORK2_200;
46 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccessQueryNetwork;
48 public class MsoNetworkAdapterAsyncImplTest extends BaseRestTestUtils {
50 MsoNetworkAdapterAsyncImpl impl;
53 public void healthCheckATest() {
54 MsoNetworkAdapterAsyncImpl mNAAimpl = new MsoNetworkAdapterAsyncImpl();
55 mNAAimpl.healthCheckA();
59 public void rollbackNetworkATest() throws IOException {
60 stubFor(post(urlPathEqualTo("/v2.0/tokens"))
61 .withRequestBody(containing("tenantId"))
62 .willReturn(aResponse().withHeader("Content-Type", "application/json")
63 .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
64 .withStatus(HttpStatus.SC_OK)));
65 stubFor(post(urlPathEqualTo("/notificationUrl"))
66 .withRequestBody(containing("<completed>true</completed>"))
67 .willReturn(aResponse()
68 .withBody("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:net=\"http://org.onap.so/networkNotify\">\n" +
69 " <soapenv:Header/>\n" +
71 " <net:rollbackNetworkNotificationResponse>\n" +
72 " </net:rollbackNetworkNotificationResponse>\n" +
73 " </soapenv:Body>\n" +
74 "</soapenv:Envelope>")
75 .withStatus(HttpStatus.SC_OK)));
76 NetworkRollback nrb = getNetworkRollback("mtn13");
77 impl.rollbackNetworkA(nrb, "messageId", "http://localhost:"+wireMockPort+"/notificationUrl");
81 public void rollbackNetworkATest_NotifyException() throws IOException {
82 stubFor(post(urlPathEqualTo("/v2.0/tokens"))
83 .withRequestBody(containing("tenantId"))
84 .willReturn(aResponse().withHeader("Content-Type", "application/json")
85 .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
86 .withStatus(HttpStatus.SC_OK)));
87 stubFor(post(urlPathEqualTo("/notificationUrl"))
88 .withRequestBody(containing("<completed>true</completed>"))
89 .willReturn(aResponse()
90 .withStatus(HttpStatus.SC_NOT_FOUND)));
91 NetworkRollback nrb = getNetworkRollback("mtn13");
92 impl.rollbackNetworkA(nrb, "messageId", "http://localhost:"+wireMockPort+"/notificationUrl");
95 private NetworkRollback getNetworkRollback(String cloudId) {
96 NetworkRollback nrb = new NetworkRollback();
97 nrb.setCloudId(cloudId);
98 nrb.setMsoRequest(new MsoRequest());
99 nrb.setModelCustomizationUuid("3bdbb104-476c-483e-9f8b-c095b3d3068c");
100 nrb.setNetworkCreated(true);
101 nrb.setNetworkId("networkId");
102 nrb.setNetworkName("networkName");
103 nrb.setNetworkStackId("networkStackId");
104 nrb.setNetworkType("networkType");
105 nrb.setNeutronNetworkId("neutronNetworkId");
106 nrb.setPhysicalNetwork("physicalNetwork");
107 nrb.setTenantId("tenantId");
108 nrb.setVlans(new ArrayList<>());
113 public void rollbackNetworkATestNetworkException() {
114 NetworkRollback nrb = getNetworkRollback("cloudId");
116 impl.rollbackNetworkA(nrb, "messageId", "http://localhost");
120 public void noRollbackNetworkATest() {
121 impl.rollbackNetworkA(null, "messageId", "http://localhost");
126 public void deleteNetworkATest() throws IOException {
127 stubFor(post(urlPathEqualTo("/v2.0/tokens"))
128 .withRequestBody(containing("tenantId"))
129 .willReturn(aResponse().withHeader("Content-Type", "application/json")
130 .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
131 .withStatus(HttpStatus.SC_OK)));
132 stubFor(post(urlPathEqualTo("/notificationUrl"))
133 .withRequestBody(containing("<completed>true</completed>"))
134 .willReturn(aResponse()
135 .withBody("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:net=\"http://org.onap.so/networkNotify\">\n" +
136 " <soapenv:Header/>\n" +
137 " <soapenv:Body>\n" +
138 " <net:deleteNetworkNotificationResponse>\n" +
139 " </net:deleteNetworkNotificationResponse>\n" +
140 " </soapenv:Body>\n" +
141 "</soapenv:Envelope>")
142 .withStatus(HttpStatus.SC_OK)));
143 impl.deleteNetworkA("mtn13", "tenantId", "networkType", "modelCustomizationUuid", "networkId",
144 "messageId", new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl");
148 public void deleteNetworkATest_NotifyException() throws IOException {
149 stubFor(post(urlPathEqualTo("/v2.0/tokens"))
150 .withRequestBody(containing("tenantId"))
151 .willReturn(aResponse().withHeader("Content-Type", "application/json")
152 .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
153 .withStatus(HttpStatus.SC_OK)));
154 stubFor(post(urlPathEqualTo("/notificationUrl"))
155 .withRequestBody(containing("<completed>true</completed>"))
156 .willReturn(aResponse()
157 .withStatus(HttpStatus.SC_NOT_FOUND)));
158 impl.deleteNetworkA("mtn13", "tenantId", "networkType", "modelCustomizationUuid", "networkId",
159 "messageId", new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl");
163 public void deleteNetworkATest_NetworkException() {
164 impl.deleteNetworkA("cloudSiteId", "tenantId", "networkType", "modelCustomizationUuid", "networkId",
165 "messageId", new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl");
169 public void updateNetworkATest() throws IOException {
170 stubFor(post(urlPathEqualTo("/v2.0/tokens"))
171 .withRequestBody(containing("tenantId"))
172 .willReturn(aResponse().withHeader("Content-Type", "application/json")
173 .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
174 .withStatus(HttpStatus.SC_OK)));
175 mockOpenStackGetStackCreated_200("OpenstackResponse_Stack_Created.json", "dvspg-VCE_VPE-mtjnj40avbc");
176 mockOpenStackGetStackDeleteOrUpdateComplete_200("OpenstackResponse_Stack_UpdateComplete.json");
177 mockOpenStackPutPublicUrlStackByNameAndID_NETWORK2_200();
178 stubFor(post(urlPathEqualTo("/notificationUrl"))
179 .withRequestBody(containing("updateNetworkNotification"))
180 .willReturn(aResponse()
181 .withBody("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:net=\"http://org.onap.so/networkNotify\">\n" +
182 " <soapenv:Header/>\n" +
183 " <soapenv:Body>\n" +
184 " <net:updateNetworkNotificationResponse>\n" +
185 " </net:updateNetworkNotificationResponse>\n" +
186 " </soapenv:Body>\n" +
187 "</soapenv:Envelope>")
188 .withStatus(HttpStatus.SC_OK)));
189 HashMap<String,String> networkParams = new HashMap<String,String>();
190 networkParams.put("shared", "true");
191 networkParams.put("external", "false");
192 impl.updateNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c", "dvspg-VCE_VPE-mtjnj40avbc",
193 "dvspg-VCE_VPE-mtjnj40avbc", "physicalNetworkName", new ArrayList<>(), new ArrayList<Subnet>(), networkParams, "messageId",
194 new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl");
198 public void updateNetworkATest_NotifyExcpetion() throws IOException {
199 stubFor(post(urlPathEqualTo("/v2.0/tokens"))
200 .withRequestBody(containing("tenantId"))
201 .willReturn(aResponse().withHeader("Content-Type", "application/json")
202 .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
203 .withStatus(HttpStatus.SC_OK)));
204 mockOpenStackGetStackCreated_200("OpenstackResponse_Stack_Created.json", "dvspg-VCE_VPE-mtjnj40avbc");
205 mockOpenStackGetStackDeleteOrUpdateComplete_200("OpenstackResponse_Stack_UpdateComplete.json");
206 mockOpenStackPutPublicUrlStackByNameAndID_NETWORK2_200();
207 HashMap<String,String> networkParams = new HashMap<String,String>();
208 networkParams.put("shared", "true");
209 networkParams.put("external", "false");
210 impl.updateNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c", "dvspg-VCE_VPE-mtjnj40avbc",
211 "dvspg-VCE_VPE-mtjnj40avbc", "physicalNetworkName", new ArrayList<>(), new ArrayList<>(), networkParams, "messageId",
212 new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl"); }
215 public void updateNetworkATest_NetworkException() {
216 impl.updateNetworkA("cloudSiteId", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c", "networkId",
217 "dvspg-VCE_VPE-mtjnj40avbc", "physicalNetworkName", new ArrayList<>(), new ArrayList<>(), new HashMap<String,String>(), "messageId",
218 new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl");
222 public void queryNetworkATest() throws IOException {
223 mockOpenStackResponseAccessQueryNetwork(wireMockPort);
224 impl.queryNetworkA("mtn13", "tenantId", "networkId", "messageId", new MsoRequest(),
225 "http://localhost:"+wireMockPort+"/notificationUrl");
229 public void createNetworkATest() throws IOException {
230 stubFor(post(urlPathEqualTo("/v2.0/tokens"))
231 .withRequestBody(containing("tenantId"))
232 .willReturn(aResponse().withHeader("Content-Type", "application/json")
233 .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
234 .withStatus(HttpStatus.SC_OK)));
235 stubFor(post(urlPathEqualTo("/notificationUrl"))
236 .withRequestBody(containing("createNetworkNotification"))
237 .willReturn(aResponse()
238 .withBody("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:net=\"http://org.onap.so/networkNotify\">\n" +
239 " <soapenv:Header/>\n" +
240 " <soapenv:Body>\n" +
241 " <net:createNetworkNotificationResponse>\n" +
242 " </net:createNetworkNotificationResponse>\n" +
243 " </soapenv:Body>\n" +
244 "</soapenv:Envelope>")
245 .withStatus(HttpStatus.SC_OK)));
246 mockOpenStackGetStackCreatedVUSP_200();
247 mockOpenStackPostStacks_200();
248 mockOpenStackPostStacks_200();
249 HashMap<String,String> networkParams = new HashMap<String,String>();
250 impl.createNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
251 "physicalNetworkName", new ArrayList<>(), false, false, new ArrayList<>(), networkParams, "messageId",
252 new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl");
256 public void createNetworkATest_NotifyException() throws IOException {
257 stubFor(post(urlPathEqualTo("/v2.0/tokens"))
258 .withRequestBody(containing("tenantId"))
259 .willReturn(aResponse().withHeader("Content-Type", "application/json")
260 .withBody(getBodyFromFile("OpenstackResponse_Access.json", wireMockPort, "/mockPublicUrl"))
261 .withStatus(HttpStatus.SC_OK)));
262 mockOpenStackGetStackCreatedVUSP_200();
263 mockOpenStackPostStacks_200();
264 HashMap<String,String> networkParams = new HashMap<String,String>();
265 networkParams.put("shared", "true");
266 networkParams.put("external", "false");
267 impl.createNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
268 "physicalNetworkName", new ArrayList<>(), false, false, new ArrayList<>(), networkParams, "messageId",
269 new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl");
273 public void createNetworkATest_NetworkException() {
274 impl.createNetworkA("mtn13", "tenantId", "networkType", "3bdbb104-476c-483e-9f8b-c095b3d3068c", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
275 "physicalNetworkName", new ArrayList<>(), false, false, new ArrayList<>(), new HashMap<String,String>(), "messageId",
276 new MsoRequest(), "http://localhost:"+wireMockPort+"/notificationUrl");