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