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.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;
32 import java.util.UUID;
34 import org.junit.Test;
35 import org.junit.runner.RunWith;
36 import org.mockito.Mock;
37 import org.mockito.junit.MockitoJUnitRunner;
38 import org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.VnfmAdapterServiceProvider;
39 import org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.VnfmAdapterServiceProviderImpl;
40 import org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.VnfmAdapterUrlProvider;
41 import org.onap.so.rest.exceptions.RestProcessingException;
42 import org.onap.so.rest.service.HttpRestServiceProvider;
43 import org.onap.vnfmadapter.v1.model.CreateVnfRequest;
44 import org.onap.vnfmadapter.v1.model.CreateVnfResponse;
45 import org.springframework.http.HttpStatus;
46 import org.springframework.http.ResponseEntity;
48 import com.google.common.base.Optional;
52 * @author waqas.ikram@est.tech
54 @RunWith(MockitoJUnitRunner.class)
55 public class VnfmAdapterServiceProviderImplTest {
57 private static final String EMPTY_JOB_ID = "";
59 private static final CreateVnfRequest CREATE_VNF_REQUEST = new CreateVnfRequest();
61 private static final String DUMMY_JOB_ID = UUID.randomUUID().toString();
64 private HttpRestServiceProvider mockedHttpServiceProvider;
67 private ResponseEntity<CreateVnfResponse> mockedResponseEntity;
70 public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithBody_validResponse() {
72 when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
73 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
74 when(mockedResponseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
75 when(mockedResponseEntity.hasBody()).thenReturn(true);
76 final CreateVnfResponse response = getCreateVnfResponse(DUMMY_JOB_ID);
77 when(mockedResponseEntity.getBody()).thenReturn(response);
80 final VnfmAdapterServiceProvider objUnderTest =
81 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
83 final Optional<CreateVnfResponse> actual =
84 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
85 assertTrue(actual.isPresent());
86 assertEquals(actual.get(), response);
91 public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithNoBody_noResponse() {
92 assertWithStatuCode(HttpStatus.ACCEPTED);
96 public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusNotOkWithNoBody_noResponse() {
97 assertWithStatuCode(HttpStatus.UNAUTHORIZED);
102 public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithBodyWithInvalidJobId_noResponse() {
103 assertWithJobId(null);
104 assertWithJobId(EMPTY_JOB_ID);
108 public void testInvokeCreateInstantiationRequest_httpServiceProviderThrowException_httpRestServiceProviderNotNull() {
110 when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
111 eq(CreateVnfResponse.class))).thenThrow(RestProcessingException.class);
114 final VnfmAdapterServiceProvider objUnderTest =
115 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
117 final Optional<CreateVnfResponse> actual =
118 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
119 assertFalse(actual.isPresent());
124 private void assertWithJobId(final String jobId) {
125 when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
126 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
127 when(mockedResponseEntity.getStatusCode()).thenReturn(HttpStatus.ACCEPTED);
128 when(mockedResponseEntity.hasBody()).thenReturn(true);
129 final CreateVnfResponse response = getCreateVnfResponse(jobId);
130 when(mockedResponseEntity.getBody()).thenReturn(response);
133 final VnfmAdapterServiceProvider objUnderTest =
134 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
136 final Optional<CreateVnfResponse> actual =
137 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
138 assertFalse(actual.isPresent());
141 private void assertWithStatuCode(final HttpStatus status) {
142 when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
143 eq(CreateVnfResponse.class))).thenReturn(mockedResponseEntity);
144 when(mockedResponseEntity.getStatusCode()).thenReturn(status);
145 when(mockedResponseEntity.hasBody()).thenReturn(false);
147 final VnfmAdapterServiceProvider objUnderTest =
148 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
150 final Optional<CreateVnfResponse> actual =
151 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
152 assertFalse(actual.isPresent());
157 private CreateVnfResponse getCreateVnfResponse(final String jobId) {
158 final CreateVnfResponse response = new CreateVnfResponse();
159 response.setJobId(jobId);
164 private VnfmAdapterUrlProvider getVnfmAdapterUrlProvider() {
165 return new VnfmAdapterUrlProvider(getVnfmBasicHttpConfigProvider());