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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.mockito.ArgumentMatchers.anyString;
28 import static org.mockito.ArgumentMatchers.eq;
29 import static org.mockito.Mockito.when;
30 import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.TestConstants.DUMMY_GENERIC_VND_ID;
31 import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.TestConstants.DUMMY_JOB_ID;
32 import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.TestConstants.getVnfmBasicHttpConfigProvider;
33 import org.junit.Test;
34 import org.junit.runner.RunWith;
35 import org.mockito.Mock;
36 import org.mockito.junit.MockitoJUnitRunner;
37 import org.onap.etsi.sol003.adapter.lcm.v1.model.CreateVnfRequest;
38 import org.onap.etsi.sol003.adapter.lcm.v1.model.CreateVnfResponse;
39 import org.onap.etsi.sol003.adapter.lcm.v1.model.DeleteVnfResponse;
40 import org.onap.etsi.sol003.adapter.lcm.v1.model.OperationStateEnum;
41 import org.onap.etsi.sol003.adapter.lcm.v1.model.QueryJobResponse;
42 import org.onap.so.rest.exceptions.RestProcessingException;
43 import org.onap.so.rest.service.HttpRestServiceProvider;
44 import org.springframework.http.HttpStatus;
45 import org.springframework.http.ResponseEntity;
46 import com.google.common.base.Optional;
50 * @author waqas.ikram@est.tech
52 @RunWith(MockitoJUnitRunner.class)
53 public class VnfmAdapterServiceProviderImplTest {
55 private static final String EMPTY_JOB_ID = "";
57 private static final CreateVnfRequest CREATE_VNF_REQUEST = new CreateVnfRequest();
60 private HttpRestServiceProvider mockedHttpServiceProvider;
63 private ResponseEntity<CreateVnfResponse> mockedResponseEntity;
66 private ResponseEntity<DeleteVnfResponse> deleteVnfResponse;
68 private ResponseEntity<QueryJobResponse> mockedQueryJobResponseResponseEntity;
71 public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithBody_validResponse() {
73 when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
74 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
75 when(mockedResponseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
76 when(mockedResponseEntity.hasBody()).thenReturn(true);
77 final CreateVnfResponse response = getCreateVnfResponse(DUMMY_JOB_ID);
78 when(mockedResponseEntity.getBody()).thenReturn(response);
79 final VnfmAdapterServiceProvider objUnderTest =
80 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
81 final Optional<CreateVnfResponse> actual =
82 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
83 assertTrue(actual.isPresent());
84 assertEquals(actual.get(), response);
88 public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithNoBody_noResponse() {
89 assertWithStatuCode(HttpStatus.ACCEPTED);
93 public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusNotOkWithNoBody_noResponse() {
94 assertWithStatuCode(HttpStatus.UNAUTHORIZED);
99 public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithBodyWithInvalidJobId_noResponse() {
100 assertWithJobId(null);
101 assertWithJobId(EMPTY_JOB_ID);
105 public void testInvokeCreateInstantiationRequest_httpServiceProviderThrowException_httpRestServiceProviderNotNull() {
107 when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
108 eq(CreateVnfResponse.class))).thenThrow(RestProcessingException.class);
111 final VnfmAdapterServiceProvider objUnderTest =
112 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
114 final Optional<CreateVnfResponse> actual =
115 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
116 assertFalse(actual.isPresent());
121 public void testInvokeDeleteRequest() {
122 when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
123 .thenReturn(deleteVnfResponse);
124 when(deleteVnfResponse.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
125 when(deleteVnfResponse.hasBody()).thenReturn(true);
126 final DeleteVnfResponse response = getDeleteVnfResponse(DUMMY_JOB_ID);
127 when(deleteVnfResponse.getBody()).thenReturn(response);
128 final VnfmAdapterServiceProvider objUnderTest =
129 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
130 final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
131 assertTrue(actual.isPresent());
135 public void testInvokeDeleteRequestNotAccepted() {
136 when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
137 .thenReturn(deleteVnfResponse);
138 when(deleteVnfResponse.getStatusCode()).thenReturn(HttpStatus.BAD_GATEWAY);
139 final VnfmAdapterServiceProvider objUnderTest =
140 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
141 final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
142 assertFalse(actual.isPresent());
146 public void testInvokeDeleteRequestNoBody() {
147 when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
148 .thenReturn(deleteVnfResponse);
149 when(deleteVnfResponse.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
150 when(deleteVnfResponse.hasBody()).thenReturn(false);
151 final VnfmAdapterServiceProvider objUnderTest =
152 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
153 final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
154 assertFalse(actual.isPresent());
158 public void testInvokeDeleteRequestNoJobId() {
159 when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
160 .thenReturn(deleteVnfResponse);
161 when(deleteVnfResponse.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
162 when(deleteVnfResponse.hasBody()).thenReturn(true);
163 final DeleteVnfResponse response = getDeleteVnfResponse("");
164 when(deleteVnfResponse.getBody()).thenReturn(response);
165 final VnfmAdapterServiceProvider objUnderTest =
166 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
167 final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
168 assertFalse(actual.isPresent());
172 public void testInvokeDeleteRequestException() {
173 when(mockedHttpServiceProvider.deleteHttpRequest(anyString(), eq(DeleteVnfResponse.class)))
174 .thenThrow(RestProcessingException.class);
175 final VnfmAdapterServiceProvider objUnderTest =
176 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
177 final Optional<DeleteVnfResponse> actual = objUnderTest.invokeDeleteRequest(DUMMY_GENERIC_VND_ID);
178 assertFalse(actual.isPresent());
182 public void testGetInstantiateOperationJobStatus_httpServiceProviderReturnsStatusOkWithBody_validResponse() {
184 when(mockedQueryJobResponseResponseEntity.getStatusCode()).thenReturn(HttpStatus.OK);
185 when(mockedQueryJobResponseResponseEntity.hasBody()).thenReturn(true);
186 when(mockedQueryJobResponseResponseEntity.getBody()).thenReturn(getQueryJobResponse());
188 when(mockedHttpServiceProvider.getHttpResponse(eq(TestConstants.JOB_STATUS_EXPECTED_URL),
189 eq(QueryJobResponse.class))).thenReturn(mockedQueryJobResponseResponseEntity);
191 final VnfmAdapterServiceProvider objUnderTest =
192 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
194 final Optional<QueryJobResponse> actual = objUnderTest.getInstantiateOperationJobStatus(DUMMY_JOB_ID);
195 assertTrue(actual.isPresent());
196 final QueryJobResponse actualQueryJobResponse = actual.get();
197 assertNotNull(actualQueryJobResponse);
201 public void testGetInstantiateOperationJobStatus_httpServiceProviderReturnsStatusOkWithOutBody_invalidResponse() {
203 when(mockedQueryJobResponseResponseEntity.getStatusCode()).thenReturn(HttpStatus.OK);
204 when(mockedQueryJobResponseResponseEntity.hasBody()).thenReturn(false);
206 when(mockedHttpServiceProvider.getHttpResponse(eq(TestConstants.JOB_STATUS_EXPECTED_URL),
207 eq(QueryJobResponse.class))).thenReturn(mockedQueryJobResponseResponseEntity);
209 final VnfmAdapterServiceProvider objUnderTest =
210 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
212 final Optional<QueryJobResponse> actual = objUnderTest.getInstantiateOperationJobStatus(DUMMY_JOB_ID);
213 assertFalse(actual.isPresent());
217 public void testGetInstantiateOperationJobStatus_httpServiceProviderReturnsStatusNotOkWithOutBody_invalidResponse() {
219 when(mockedQueryJobResponseResponseEntity.getStatusCode()).thenReturn(HttpStatus.INTERNAL_SERVER_ERROR);
221 when(mockedHttpServiceProvider.getHttpResponse(eq(TestConstants.JOB_STATUS_EXPECTED_URL),
222 eq(QueryJobResponse.class))).thenReturn(mockedQueryJobResponseResponseEntity);
224 final VnfmAdapterServiceProvider objUnderTest =
225 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
227 final Optional<QueryJobResponse> actual = objUnderTest.getInstantiateOperationJobStatus(DUMMY_JOB_ID);
228 assertFalse(actual.isPresent());
231 @Test(expected = RestProcessingException.class)
232 public void testGetInstantiateOperationJobStatus_Exception() {
234 when(mockedHttpServiceProvider.getHttpResponse(eq(TestConstants.JOB_STATUS_EXPECTED_URL),
235 eq(QueryJobResponse.class))).thenThrow(RestProcessingException.class);
237 final VnfmAdapterServiceProvider objUnderTest =
238 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
240 objUnderTest.getInstantiateOperationJobStatus(DUMMY_JOB_ID);
243 private QueryJobResponse getQueryJobResponse() {
244 return new QueryJobResponse().id(DUMMY_JOB_ID).operationState(OperationStateEnum.COMPLETED);
248 private void assertWithJobId(final String jobId) {
249 when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
250 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
251 when(mockedResponseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
252 when(mockedResponseEntity.hasBody()).thenReturn(true);
253 final CreateVnfResponse response = getCreateVnfResponse(jobId);
254 when(mockedResponseEntity.getBody()).thenReturn(response);
257 final VnfmAdapterServiceProvider objUnderTest =
258 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
260 final Optional<CreateVnfResponse> actual =
261 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
262 assertFalse(actual.isPresent());
265 private void assertWithStatuCode(final HttpStatus status) {
266 when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
267 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
268 when(mockedResponseEntity.getStatusCode()).thenReturn(status);
269 when(mockedResponseEntity.hasBody()).thenReturn(false);
271 final VnfmAdapterServiceProvider objUnderTest =
272 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
274 final Optional<CreateVnfResponse> actual =
275 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
276 assertFalse(actual.isPresent());
279 private CreateVnfResponse getCreateVnfResponse(final String jobId) {
280 return new CreateVnfResponse().jobId(jobId);
283 private DeleteVnfResponse getDeleteVnfResponse(final String jobId) {
284 final DeleteVnfResponse response = new DeleteVnfResponse();
285 response.setJobId(jobId);
289 private VnfmAdapterUrlProvider getVnfmAdapterUrlProvider() {
290 return new VnfmAdapterUrlProvider(getVnfmBasicHttpConfigProvider());