Created new BB for so-etsi
[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
32 import java.util.UUID;
33
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;
47
48 import com.google.common.base.Optional;
49
50
51 /**
52  * @author waqas.ikram@est.tech
53  */
54 @RunWith(MockitoJUnitRunner.class)
55 public class VnfmAdapterServiceProviderImplTest {
56
57     private static final String EMPTY_JOB_ID = "";
58
59     private static final CreateVnfRequest CREATE_VNF_REQUEST = new CreateVnfRequest();
60
61     private static final String DUMMY_JOB_ID = UUID.randomUUID().toString();
62
63     @Mock
64     private HttpRestServiceProvider mockedHttpServiceProvider;
65
66     @Mock
67     private ResponseEntity<CreateVnfResponse> mockedResponseEntity;
68
69     @Test
70     public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithBody_validResponse() {
71
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);
78
79
80         final VnfmAdapterServiceProvider objUnderTest =
81                 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
82
83         final Optional<CreateVnfResponse> actual =
84                 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
85         assertTrue(actual.isPresent());
86         assertEquals(actual.get(), response);
87
88     }
89
90     @Test
91     public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithNoBody_noResponse() {
92         assertWithStatuCode(HttpStatus.ACCEPTED);
93     }
94
95     @Test
96     public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusNotOkWithNoBody_noResponse() {
97         assertWithStatuCode(HttpStatus.UNAUTHORIZED);
98     }
99
100
101     @Test
102     public void testInvokeCreateInstantiationRequest_httpServiceProviderReturnsStatusAcceptedWithBodyWithInvalidJobId_noResponse() {
103         assertWithJobId(null);
104         assertWithJobId(EMPTY_JOB_ID);
105     }
106
107     @Test
108     public void testInvokeCreateInstantiationRequest_httpServiceProviderThrowException_httpRestServiceProviderNotNull() {
109
110         when(mockedHttpServiceProvider.postHttpRequest(eq(CREATE_VNF_REQUEST), anyString(),
111                 eq(CreateVnfResponse.class))).thenThrow(RestProcessingException.class);
112
113
114         final VnfmAdapterServiceProvider objUnderTest =
115                 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
116
117         final Optional<CreateVnfResponse> actual =
118                 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
119         assertFalse(actual.isPresent());
120
121     }
122
123
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);
131
132
133         final VnfmAdapterServiceProvider objUnderTest =
134                 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
135
136         final Optional<CreateVnfResponse> actual =
137                 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
138         assertFalse(actual.isPresent());
139     }
140
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);
146
147         final VnfmAdapterServiceProvider objUnderTest =
148                 new VnfmAdapterServiceProviderImpl(getVnfmAdapterUrlProvider(), mockedHttpServiceProvider);
149
150         final Optional<CreateVnfResponse> actual =
151                 objUnderTest.invokeCreateInstantiationRequest(DUMMY_GENERIC_VND_ID, CREATE_VNF_REQUEST);
152         assertFalse(actual.isPresent());
153     }
154
155
156
157     private CreateVnfResponse getCreateVnfResponse(final String jobId) {
158         final CreateVnfResponse response = new CreateVnfResponse();
159         response.setJobId(jobId);
160         return response;
161     }
162
163
164     private VnfmAdapterUrlProvider getVnfmAdapterUrlProvider() {
165         return new VnfmAdapterUrlProvider(getVnfmBasicHttpConfigProvider());
166     }
167 }