00961a16b943a3254d65ef431e75eb9fbbff4373
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.so.adapters.network;
22
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;
46
47 public class MsoNetworkAdapterAsyncImplTest extends BaseRestTestUtils {
48     @Autowired
49     MsoNetworkAdapterAsyncImpl impl;
50
51     @Test
52     public void healthCheckATest() {
53         MsoNetworkAdapterAsyncImpl mNAAimpl = new MsoNetworkAdapterAsyncImpl();
54         mNAAimpl.healthCheckA();
55     }
56
57     @Test
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");
74     }
75
76     @Test
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");
87     }
88
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<>());
103         return nrb;
104     }
105
106     @Test
107     public void rollbackNetworkATestNetworkException() {
108         NetworkRollback nrb = getNetworkRollback("cloudId");
109
110         impl.rollbackNetworkA(nrb, "messageId", "http://localhost");
111     }
112
113     @Test
114     public void noRollbackNetworkATest() {
115         impl.rollbackNetworkA(null, "messageId", "http://localhost");
116     }
117
118
119     @Test
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");
136     }
137
138     @Test
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");
149     }
150
151     @Test
152     public void deleteNetworkATest_NetworkException() {
153         impl.deleteNetworkA("cloudSiteId", "tenantId", "networkType", "modelCustomizationUuid", "networkId",
154                 "messageId", new MsoRequest(), "http://localhost:" + wireMockPort + "/notificationUrl");
155     }
156
157     @Test
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");
183     }
184
185     @Test
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");
202     }
203
204     @Test
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");
210     }
211
212     @Test
213     public void queryNetworkATest() throws IOException {
214         mockOpenStackResponseAccessQueryNetwork(wireMockServer, wireMockPort);
215         impl.queryNetworkA("mtn13", "tenantId", "networkId", "messageId", new MsoRequest(),
216                 "http://localhost:" + wireMockPort + "/notificationUrl");
217     }
218
219     @Test
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");
242     }
243
244     @Test
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");
259     }
260
261     @Test
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");
267     }
268
269 }