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