2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2023 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.cnfm.tasks;
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.eq;
27 import static org.mockito.Mockito.when;
29 import java.util.Optional;
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.junit.runner.RunWith;
33 import org.mockito.Mock;
34 import org.mockito.Mockito;
35 import org.mockito.junit.MockitoJUnitRunner;
36 import org.onap.so.cnfm.lcm.model.AsInstance;
37 import org.onap.so.cnfm.lcm.model.AsLcmOpOcc;
38 import org.onap.so.cnfm.lcm.model.CreateAsRequest;
39 import org.onap.so.cnfm.lcm.model.InstantiateAsRequest;
40 import org.onap.so.cnfm.lcm.model.TerminateAsRequest;
41 import org.onap.so.rest.service.HttpRestServiceProvider;
42 import org.onap.so.rest.service.HttpRestServiceProviderImpl;
43 import org.springframework.http.HttpHeaders;
44 import org.springframework.http.HttpStatus;
45 import org.springframework.http.ResponseEntity;
48 * @author Raviteja Karumuri (raviteja.karumuri@est.tech)
50 @RunWith(MockitoJUnitRunner.class)
51 public class CnfmHttpServiceProviderImplTest {
54 private CnfmUrlProvider cnfmUrlProvider;
56 private HttpRestServiceProviderImpl httpRestServiceProvider;
58 private ResponseEntity<AsInstance> responseEntity;
60 private ResponseEntity<Void> responseEntityVoid;
62 private ResponseEntity<AsLcmOpOcc> responseEntityAsLCM;
63 private final String createURL = "http://so-cnfm-lcm.onap:9888/so/so-cnfm/v1/api/aslcm/v1/as_instances";
64 private final String instantiateURL = "http://so-cnfm-lcm.onap:9888/so/so-cnfm/v1/api/aslcm/v1/as_instances"
65 + getAsInstance().getAsInstanceid() + "/instantiate";
66 private CnfmHttpServiceProviderImpl cnfmHttpServiceProviderImpl;
67 private final URI uri = URI.create("sample");
68 private final CreateAsRequest createAsRequest = new CreateAsRequest();
69 private final InstantiateAsRequest instantiateAsRequest = new InstantiateAsRequest();
70 private final TerminateAsRequest terminateAsRequest = new TerminateAsRequest();
74 cnfmHttpServiceProviderImpl = new CnfmHttpServiceProviderImpl(cnfmUrlProvider, httpRestServiceProvider);
75 when(httpRestServiceProvider.postHttpRequest(Mockito.any(), Mockito.anyString(), eq(AsInstance.class)))
76 .thenReturn(responseEntity);
80 public void invokeCreateAsRequest_withStatuscode_Success_hasBody() {
82 when(cnfmUrlProvider.getCreateAsRequestUrl()).thenReturn(createURL);
83 when(responseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
84 when(responseEntity.getBody()).thenReturn(getAsInstance());
85 when(responseEntity.hasBody()).thenReturn(true);
86 final Optional<AsInstance> returnedContent = cnfmHttpServiceProviderImpl.invokeCreateAsRequest(createAsRequest);
87 assertEquals(returnedContent.orElseThrow().getAsInstanceid(), getAsInstance().getAsInstanceid());
91 public void invokeCreateAsRequest_withStatuscodeSuccess_hasNoBody() {
93 when(cnfmUrlProvider.getCreateAsRequestUrl()).thenReturn(createURL);
94 when(responseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
95 final Optional<AsInstance> returnedContent = cnfmHttpServiceProviderImpl.invokeCreateAsRequest(createAsRequest);
96 assertFalse(returnedContent.isPresent());
101 public void invokeCreateAsRequest_withStatuscode_Success_hasBody_emptyInstanceID() {
103 AsInstance emptyInstanceID = getAsInstance();
104 emptyInstanceID.setAsInstanceid(null);
105 when(cnfmUrlProvider.getCreateAsRequestUrl()).thenReturn(createURL);
106 when(responseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
107 when(responseEntity.getBody()).thenReturn(emptyInstanceID);
108 when(responseEntity.hasBody()).thenReturn(true);
109 final Optional<AsInstance> returnedContent = cnfmHttpServiceProviderImpl.invokeCreateAsRequest(createAsRequest);
110 assertFalse(returnedContent.isPresent());
114 public void invokeCreateAsRequest_withStatuscode_NotSuccess_hasBody_emptyInstanceID() {
116 AsInstance emptyInstanceID = getAsInstance();
117 emptyInstanceID.setAsInstanceid(null);
118 when(cnfmUrlProvider.getCreateAsRequestUrl()).thenReturn(createURL);
119 when(responseEntity.getStatusCode()).thenReturn(HttpStatus.BAD_REQUEST);
120 final Optional<AsInstance> returnedContent = cnfmHttpServiceProviderImpl.invokeCreateAsRequest(createAsRequest);
121 assertFalse(returnedContent.isPresent());
126 public void invokeInstantiateAsRequest_withStatuscode_Success() {
128 final String asinstanceId = getAsInstance().getAsInstanceid();
129 when(cnfmUrlProvider.getInstantiateAsRequestUrl(asinstanceId)).thenReturn(instantiateURL);
130 when(responseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
131 when(responseEntity.getHeaders()).thenReturn(getHttpHeaders());
132 final Optional<URI> returnedContent =
133 cnfmHttpServiceProviderImpl.invokeInstantiateAsRequest(instantiateAsRequest, asinstanceId);
134 assertEquals(uri.toString(), returnedContent.orElseThrow().toString());
138 public void invokeInstantiateAsRequest_withStatuscode_Success_NoStatusURI() {
140 final String asinstanceId = getAsInstance().getAsInstanceid();
141 final HttpHeaders httpHeaders = getHttpHeaders();
142 httpHeaders.setLocation(null);
143 when(cnfmUrlProvider.getInstantiateAsRequestUrl(asinstanceId)).thenReturn(instantiateURL);
144 when(responseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
145 when(responseEntity.getHeaders()).thenReturn(httpHeaders);
146 final Optional<URI> returnedContent =
147 cnfmHttpServiceProviderImpl.invokeInstantiateAsRequest(instantiateAsRequest, asinstanceId);
148 assertFalse(returnedContent.isPresent());
152 public void invokeInstantiateAsRequest_withStatuscode_NotSuccess_NoStatusURI() {
154 final String asinstanceId = getAsInstance().getAsInstanceid();
155 when(cnfmUrlProvider.getInstantiateAsRequestUrl(asinstanceId)).thenReturn(instantiateURL);
156 when(responseEntity.getStatusCode()).thenReturn(HttpStatus.BAD_REQUEST);
157 final Optional<URI> returnedContent =
158 cnfmHttpServiceProviderImpl.invokeInstantiateAsRequest(instantiateAsRequest, asinstanceId);
159 assertFalse(returnedContent.isPresent());
163 public void test_getOperationJobStatus_statuscode_Accepted() {
165 responseEntityAsLCM = getResponseEntityAsLCM(HttpStatus.ACCEPTED);
166 when(httpRestServiceProvider.getHttpResponse(Mockito.anyString(), eq(AsLcmOpOcc.class)))
167 .thenReturn(responseEntityAsLCM);
168 final Optional<AsLcmOpOcc> returnedContent = cnfmHttpServiceProviderImpl.getOperationJobStatus("sample URL");
169 assertEquals(returnedContent.orElseThrow().getAsInstanceId(), getAsLcmOpOcc().getAsInstanceId());
173 public void test_getOperationJobStatus_statuscode_NotFound() {
175 responseEntityAsLCM = getResponseEntityAsLCM(HttpStatus.NOT_FOUND);
176 when(httpRestServiceProvider.getHttpResponse(Mockito.anyString(), eq(AsLcmOpOcc.class)))
177 .thenReturn(responseEntityAsLCM);
178 final Optional<AsLcmOpOcc> returnedContent = cnfmHttpServiceProviderImpl.getOperationJobStatus("sample URL");
179 assertFalse(returnedContent.isPresent());
183 public void invokeDeleteAsRequest_withStatuscode_Success() {
185 when(cnfmUrlProvider.getDeleteAsRequestUrl(Mockito.anyString())).thenReturn("deleteURL");
186 when(httpRestServiceProvider.deleteHttpRequest(Mockito.anyString(), eq(Void.class)))
187 .thenReturn(responseEntityVoid);
188 when(responseEntityVoid.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
189 final Optional<Boolean> returnedContent = cnfmHttpServiceProviderImpl.invokeDeleteAsRequest("2345");
190 assertTrue(returnedContent.orElseThrow());
194 public void invokeDeleteAsRequest_withStatuscode_BadRequest() {
196 when(cnfmUrlProvider.getDeleteAsRequestUrl(Mockito.anyString())).thenReturn("deleteURL");
197 when(httpRestServiceProvider.deleteHttpRequest(Mockito.anyString(), eq(Void.class)))
198 .thenReturn(responseEntityVoid);
199 when(responseEntityVoid.getStatusCode()).thenReturn(HttpStatus.BAD_REQUEST);
200 final Optional<Boolean> returnedContent = cnfmHttpServiceProviderImpl.invokeDeleteAsRequest("2345");
201 assertTrue(returnedContent.isEmpty());
205 public void invokeTerminateAsRequest_withStatuscode_Success() {
207 when(cnfmUrlProvider.getTerminateAsRequestUrl(Mockito.anyString())).thenReturn("terminateURL");
208 when(httpRestServiceProvider.postHttpRequest(Mockito.any(TerminateAsRequest.class), Mockito.anyString(),
209 eq(Void.class))).thenReturn(responseEntityVoid);
210 when(responseEntityVoid.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
211 when(responseEntityVoid.getHeaders()).thenReturn(getHttpHeaders());
212 final Optional<URI> returnedContent =
213 cnfmHttpServiceProviderImpl.invokeTerminateAsRequest("12356", terminateAsRequest);
214 assertTrue(returnedContent.isPresent());
215 assertEquals(uri.getPath(), returnedContent.orElseThrow().getPath());
219 public void invokeTerminateAsRequest_withStatuscode_Success_NullStatusURI() {
221 final HttpHeaders httpHeaders = getHttpHeaders();
222 httpHeaders.setLocation(null);
223 when(cnfmUrlProvider.getTerminateAsRequestUrl(Mockito.anyString())).thenReturn("terminateURL");
224 when(httpRestServiceProvider.postHttpRequest(Mockito.any(TerminateAsRequest.class), Mockito.anyString(),
225 eq(Void.class))).thenReturn(responseEntityVoid);
226 when(responseEntityVoid.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
227 when(responseEntityVoid.getHeaders()).thenReturn(httpHeaders);
228 final Optional<URI> returnedContent =
229 cnfmHttpServiceProviderImpl.invokeTerminateAsRequest("12356", terminateAsRequest);
230 assertTrue(returnedContent.isEmpty());
234 public void invokeTerminateAsRequest_withStatuscode_BadRequest() {
236 when(cnfmUrlProvider.getTerminateAsRequestUrl(Mockito.anyString())).thenReturn("terminateURL");
237 when(httpRestServiceProvider.postHttpRequest(Mockito.any(TerminateAsRequest.class), Mockito.anyString(),
238 eq(Void.class))).thenReturn(responseEntityVoid);
239 when(responseEntityVoid.getStatusCode()).thenReturn(HttpStatus.BAD_REQUEST);
240 // when(responseEntityVoid.getHeaders()).thenReturn(getHttpHeaders());
241 final Optional<URI> returnedContent =
242 cnfmHttpServiceProviderImpl.invokeTerminateAsRequest("12356", terminateAsRequest);
243 assertTrue(returnedContent.isEmpty());
246 private AsInstance getAsInstance() {
247 AsInstance asInstance = new AsInstance();
248 asInstance.setAsInstanceid("12345");
252 private HttpHeaders getHttpHeaders() {
253 HttpHeaders httpHeaders = new HttpHeaders();
254 httpHeaders.setLocation(uri);
258 private ResponseEntity<AsLcmOpOcc> getResponseEntityAsLCM(HttpStatus httpStatus) {
259 ResponseEntity<AsLcmOpOcc> asLcmOpOccResponseEntity =
260 new ResponseEntity<AsLcmOpOcc>(getAsLcmOpOcc(), httpStatus);
261 return asLcmOpOccResponseEntity;
264 private AsLcmOpOcc getAsLcmOpOcc() {
265 AsLcmOpOcc asLcmOpOcc = new AsLcmOpOcc();
266 asLcmOpOcc.setAsInstanceId("12345");