Merge "Sending workflow data from UI to SO"
[vid.git] / vid-app-common / src / test / java / org / onap / vid / services / ExternalWorkflowServiceImplTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.vid.services;
22
23
24
25 import com.google.common.collect.Lists;
26 import io.joshworks.restclient.http.HttpResponse;
27 import java.util.Collections;
28 import java.util.List;
29
30 import org.assertj.core.api.Assertions;
31 import org.mockito.Mock;
32 import org.mockito.Mockito;
33 import org.mockito.MockitoAnnotations;
34 import org.onap.vid.model.SOWorkflow;
35 import org.onap.vid.model.SOWorkflowParameterDefinition;
36 import org.onap.vid.model.SOWorkflowParameterDefinitions;
37 import org.onap.vid.model.SOWorkflowType;
38 import org.onap.vid.model.SOWorkflows;
39 import org.onap.vid.mso.MsoResponseWrapper2;
40 import org.onap.vid.mso.rest.MockedWorkflowsRestClient;
41 import org.onap.vid.services.ExternalWorkflowsServiceImpl.BadResponseFromMso;
42 import org.testng.annotations.BeforeMethod;
43 import org.testng.annotations.Test;
44
45 public class ExternalWorkflowServiceImplTest {
46
47     @Mock
48     private MockedWorkflowsRestClient client;
49     @Mock
50     private HttpResponse<SOWorkflows> response;
51
52     @Mock
53     private HttpResponse<SOWorkflowParameterDefinitions> parameterDefinitionsHttpResponse;
54
55
56     @BeforeMethod
57     public void init(){
58         MockitoAnnotations.initMocks(this);
59     }
60
61     @Test
62     public void shouldReturnWorkflowsOnValidResponse(){
63         // given
64         ExternalWorkflowsService extWorkflowsService = new ExternalWorkflowsServiceImpl(client);
65         Mockito.when(response.getStatus()).thenReturn(200);
66         Mockito.when(response.getBody()).thenReturn(new SOWorkflows(Collections.singletonList(new SOWorkflow(1L, "xyz"))));
67         MsoResponseWrapper2<SOWorkflows> msoResponseStub = new MsoResponseWrapper2<>(response);
68         Mockito.when(client.getWorkflows("test")).thenReturn(msoResponseStub);
69         // when
70         List<SOWorkflow> workflows = extWorkflowsService.getWorkflows("test");
71         // then
72         Mockito.verify(client).getWorkflows("test");
73         Assertions.assertThat(workflows.get(0).getName()).isEqualTo("xyz");
74     }
75
76     @Test(expectedExceptions = BadResponseFromMso.class)
77     public void shouldThrowBadResponseOnInvalidResponse(){
78         // given
79         ExternalWorkflowsService extWorkflowsService = new ExternalWorkflowsServiceImpl(client);
80         Mockito.when(response.getStatus()).thenReturn(500);
81         Mockito.when(response.getBody()).thenReturn(new SOWorkflows(Collections.singletonList(new SOWorkflow(1L, "xyz"))));
82         MsoResponseWrapper2<SOWorkflows> msoResponseStub = new MsoResponseWrapper2<>(response);
83         Mockito.when(client.getWorkflows("test")).thenReturn(msoResponseStub);
84         // when
85         extWorkflowsService.getWorkflows("test");
86         // then throw exception
87     }
88     @Test
89     public void shouldReturnWorkflowParametersOnValidResponse() {
90         SOWorkflowParameterDefinitions parameters = new SOWorkflowParameterDefinitions(Collections.singletonList(new SOWorkflowParameterDefinition(1L, "sample", "[0-9]", SOWorkflowType.STRING, true)));
91         ExternalWorkflowsService extWorkflowsService = new ExternalWorkflowsServiceImpl(client);
92         Mockito.when(parameterDefinitionsHttpResponse.getStatus()).thenReturn(200);
93         Mockito.when(parameterDefinitionsHttpResponse.getBody()).thenReturn(parameters);
94         MsoResponseWrapper2<SOWorkflowParameterDefinitions> msoResponseWrapper = new MsoResponseWrapper2<>(parameterDefinitionsHttpResponse);
95         Mockito.when(client.getWorkflowParameterDefinitions(1L)).thenReturn(msoResponseWrapper);
96
97
98         SOWorkflowParameterDefinitions workflowParameterDefinitions = extWorkflowsService.getWorkflowParameterDefinitions(1L);
99
100         Assertions.assertThat(workflowParameterDefinitions).isEqualTo(parameters);
101     }
102
103     @Test
104     public void shouldProperlyHandleEmptyParametersList(){
105         ExternalWorkflowsService extWorkflowsService = new ExternalWorkflowsServiceImpl(client);
106         Mockito.when(parameterDefinitionsHttpResponse.getStatus()).thenReturn(200);
107         Mockito.when(parameterDefinitionsHttpResponse.getBody()).thenReturn(new SOWorkflowParameterDefinitions(Lists.newArrayList()));
108
109         MsoResponseWrapper2<SOWorkflowParameterDefinitions> msoResponseWrapper = new MsoResponseWrapper2<>(parameterDefinitionsHttpResponse);
110         Mockito.when(client.getWorkflowParameterDefinitions(1L)).thenReturn(msoResponseWrapper);
111
112
113         SOWorkflowParameterDefinitions workflowParameterDefinitions = extWorkflowsService.getWorkflowParameterDefinitions(1L);
114         Assertions.assertThat(workflowParameterDefinitions.getParameterDefinitions()).isEmpty();
115     }
116 }