Added ETSI Delete VNF BB
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / adapter / vnfm / tasks / VnfmAdapterServiceProviderImplTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.ArgumentMatchers.anyString;
27 import static org.mockito.ArgumentMatchers.eq;
28 import static org.mockito.Mockito.when;
29 import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.TestConstants.DUMMY_GENERIC_VND_ID;
30 import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.TestConstants.getVnfmBasicHttpConfigProvider;
31 import java.util.UUID;
32 import org.junit.Test;
33 import org.junit.runner.RunWith;
34 import org.mockito.Mock;
35 import org.mockito.junit.MockitoJUnitRunner;
36 import org.onap.so.rest.exceptions.RestProcessingException;
37 import org.onap.so.rest.service.HttpRestServiceProvider;
38 import org.onap.vnfmadapter.v1.model.CreateVnfRequest;
39 import org.onap.vnfmadapter.v1.model.CreateVnfResponse;
40 import org.onap.vnfmadapter.v1.model.DeleteVnfResponse;
41 import org.springframework.http.HttpStatus;
42 import org.springframework.http.ResponseEntity;
43 import com.google.common.base.Optional;
44
45
46 /**
47  * @author waqas.ikram@est.tech
48  */
49 @RunWith(MockitoJUnitRunner.class)
50 public class VnfmAdapterServiceProviderImplTest {
51
52     private static final String EMPTY_JOB_ID = "";
53
54     private static final CreateVnfRequest CREATE_VNF_REQUEST = new CreateVnfRequest();
55
56     private static final String DUMMY_JOB_ID = UUID.randomUUID().toString();
57
58     @Mock
59     private HttpRestServiceProvider mockedHttpServiceProvider;
60
61     @Mock
62     private ResponseEntity<CreateVnfResponse> mockedResponseEntity;
63
64     @Mock
65     private ResponseEntity<DeleteVnfResponse> deleteVnfResponse;
66
67     @Test
68     public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithBody_validResponse() {
69
70         when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
71                 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
72         when(mockedResponseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
73         when(mockedResponseEntity.hasBody()).thenReturn(true);
74         final CreateVnfResponse response = getCreateVnfResponse(DUMMY_JOB_ID);
75         when(mockedResponseEntity.getBody()).thenReturn(response);
76
77
78         final VnfmAdapterServiceProvider objUnderTest =
79                 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
80
81         final Optional<CreateVnfResponse> actual =
82                 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
83         assertTrue(actual.isPresent());
84         assertEquals(actual.get(), response);
85
86     }
87
88     @Test
89     public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithNoBody_noResponse() {
90         assertWithStatuCode(HttpStatus.ACCEPTED);
91     }
92
93     @Test
94     public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusNotOkWithNoBody_noResponse() {
95         assertWithStatuCode(HttpStatus.UNAUTHORIZED);
96     }
97
98
99     @Test
100     public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithBodyWithInvalidJobId_noResponse() {
101         assertWithJobId(null);
102         assertWithJobId(EMPTY_JOB_ID);
103     }
104
105     @Test
106     public void testInvokeCreateInstantiationRequest_httpServiceProviderThrowException_httpRestServiceProviderNotNull() {
107
108         when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
109                 eq(CreateVnfResponse.class))).thenThrow(RestProcessingException.class);
110
111
112         final VnfmAdapterServiceProvider objUnderTest =
113                 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
114
115         final Optional<CreateVnfResponse> actual =
116                 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
117         assertFalse(actual.isPresent());
118
119     }
120
121   @Test
122   public void testInvokeDeleteRequest() {
123     when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
124         .thenReturn(deleteVnfResponse);
125     when(deleteVnfResponse.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
126     when(deleteVnfResponse.hasBody()).thenReturn(true);
127     final DeleteVnfResponse response = getDeleteVnfResponse(DUMMY_JOB_ID);
128     when(deleteVnfResponse.getBody()).thenReturn(response);
129     final VnfmAdapterServiceProvider objUnderTest =
130         new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
131     final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
132     assertTrue(actual.isPresent());
133   }
134
135   @Test
136   public void testInvokeDeleteRequestNotAccepted() {
137     when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
138         .thenReturn(deleteVnfResponse);
139     when(deleteVnfResponse.getStatusCode()).thenReturn(HttpStatus.BAD_GATEWAY);
140     final VnfmAdapterServiceProvider objUnderTest =
141         new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
142     final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
143     assertFalse(actual.isPresent());
144   }
145
146   @Test
147   public void testInvokeDeleteRequestNoBody() {
148     when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
149         .thenReturn(deleteVnfResponse);
150     when(deleteVnfResponse.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
151     when(deleteVnfResponse.hasBody()).thenReturn(false);
152     final VnfmAdapterServiceProvider objUnderTest =
153         new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
154     final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
155     assertFalse(actual.isPresent());
156   }
157
158   @Test
159   public void testInvokeDeleteRequestNoJobId() {
160     when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
161         .thenReturn(deleteVnfResponse);
162     when(deleteVnfResponse.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
163     when(deleteVnfResponse.hasBody()).thenReturn(true);
164     final DeleteVnfResponse response = getDeleteVnfResponse("");
165     when(deleteVnfResponse.getBody()).thenReturn(response);
166     final VnfmAdapterServiceProvider objUnderTest =
167         new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
168     final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
169     assertFalse(actual.isPresent());
170   }
171
172   @Test
173   public void testInvokeDeleteRequestException() {
174     when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
175         .thenThrow(RestProcessingException.class);
176     final VnfmAdapterServiceProvider objUnderTest =
177         new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
178     final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
179     assertFalse(actual.isPresent());
180   }
181
182
183     private void assertWithJobId(final String jobId) {
184         when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
185                 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
186         when(mockedResponseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
187         when(mockedResponseEntity.hasBody()).thenReturn(true);
188         final CreateVnfResponse response = getCreateVnfResponse(jobId);
189         when(mockedResponseEntity.getBody()).thenReturn(response);
190
191
192         final VnfmAdapterServiceProvider objUnderTest =
193                 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
194
195         final Optional<CreateVnfResponse> actual =
196                 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
197         assertFalse(actual.isPresent());
198     }
199
200     private void assertWithStatuCode(final HttpStatus status) {
201         when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
202                 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
203         when(mockedResponseEntity.getStatusCode()).thenReturn(status);
204         when(mockedResponseEntity.hasBody()).thenReturn(false);
205
206         final VnfmAdapterServiceProvider objUnderTest =
207                 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
208
209         final Optional<CreateVnfResponse> actual =
210                 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
211         assertFalse(actual.isPresent());
212     }
213
214
215
216     private CreateVnfResponse getCreateVnfResponse(final String jobId) {
217         final CreateVnfResponse response = new CreateVnfResponse();
218         response.setJobId(jobId);
219         return response;
220     }
221
222     private DeleteVnfResponse getDeleteVnfResponse(final String jobId) {
223       final DeleteVnfResponse response = new DeleteVnfResponse();
224       response.setJobId(jobId);
225       return response;
226   }
227
228
229     private VnfmAdapterUrlProvider getVnfmAdapterUrlProvider() {
230         return new VnfmAdapterUrlProvider(getVnfmBasicHttpConfigProvider());
231     }
232 }