e435909f59785f5bd12952cec3ab0fa13eac27ad
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 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.so.bpmn.infrastructure.sdnc.tasks;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.Mockito.doNothing;
25 import static org.mockito.Mockito.doReturn;
26 import static org.mockito.Mockito.doThrow;
27 import java.io.IOException;
28 import java.io.StringReader;
29 import java.nio.file.Files;
30 import java.nio.file.Paths;
31 import javax.xml.parsers.DocumentBuilder;
32 import javax.xml.parsers.DocumentBuilderFactory;
33 import org.camunda.bpm.engine.delegate.BpmnError;
34 import org.camunda.bpm.engine.delegate.DelegateExecution;
35 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
36 import org.junit.Before;
37 import org.junit.Rule;
38 import org.junit.Test;
39 import org.junit.rules.ExpectedException;
40 import org.junit.runner.RunWith;
41 import org.mockito.InjectMocks;
42 import org.mockito.Mock;
43 import org.mockito.Spy;
44 import org.mockito.runners.MockitoJUnitRunner;
45 import org.onap.sdnc.northbound.client.model.GenericResourceApiServiceOperationInformation;
46 import org.onap.so.client.exception.BadResponseException;
47 import org.onap.so.client.exception.ExceptionBuilder;
48 import org.onap.so.client.exception.MapperException;
49 import org.onap.so.client.sdnc.SDNCClient;
50 import org.onap.so.client.sdnc.beans.SDNCRequest;
51 import org.onap.so.client.sdnc.endpoint.SDNCTopology;
52 import org.onap.logging.filter.base.ONAPComponents;
53 import org.w3c.dom.Document;
54 import org.xml.sax.InputSource;
55 import com.fasterxml.jackson.core.JsonParseException;
56 import com.fasterxml.jackson.databind.JsonMappingException;
57 import com.fasterxml.jackson.databind.ObjectMapper;
58
59 @RunWith(MockitoJUnitRunner.class)
60 public class SDNCRequestTasksTest extends SDNCRequestTasks {
61
62     @Rule
63     public ExpectedException expectedException = ExpectedException.none();
64
65     @InjectMocks
66     SDNCRequestTasks sndcRequestTasks = new SDNCRequestTasks();
67
68     @Mock
69     SDNCClient sdncClient;
70
71     @Spy
72     private ExceptionBuilder exceptionBuilder;
73
74     protected DelegateExecution delegateExecution;
75
76
77     @Before
78     public void setup() {
79         delegateExecution = new DelegateExecutionFake();
80         delegateExecution.setVariable("SDNCRequest", createSDNCRequest());
81     }
82
83     @Test
84     public void createCorrelationVariables_Test() {
85         sndcRequestTasks.createCorrelationVariables(delegateExecution);
86         assertEquals("correlationValue", delegateExecution.getVariable("correlationName_CORRELATOR"));
87     }
88
89     @Test
90     public void callSDNC_Final_Test() throws MapperException, BadResponseException, IOException {
91         final String sdncResponse =
92                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/SDNCClientPut200Response.json")));
93         doReturn(sdncResponse).when(sdncClient).post(createSDNCRequest().getSDNCPayload(), SDNCTopology.CONFIGURATION);
94         sndcRequestTasks.callSDNC(delegateExecution);
95         assertEquals(true, delegateExecution.getVariable("isSDNCCompleted"));
96     }
97
98     @Test
99     public void callSDNC_Not_Final_Test() throws MapperException, BadResponseException, IOException {
100         final String sdncResponse = new String(
101                 Files.readAllBytes(Paths.get("src/test/resources/__files/SDNCClientPut200ResponseNotFinal.json")));
102         doReturn(sdncResponse).when(sdncClient).post(createSDNCRequest().getSDNCPayload(), SDNCTopology.CONFIGURATION);
103         sndcRequestTasks.callSDNC(delegateExecution);
104         assertEquals(false, delegateExecution.getVariable("isSDNCCompleted"));
105     }
106
107     @Test
108     public void callSDNC_Error_Test() throws MapperException, BadResponseException {
109         doThrow(MapperException.class).when(sdncClient).post(createSDNCRequest().getSDNCPayload(),
110                 SDNCTopology.CONFIGURATION);
111         doReturn("processKey").when(exceptionBuilder).getProcessKey(delegateExecution);
112         expectedException.expect(BpmnError.class);
113         sndcRequestTasks.callSDNC(delegateExecution);
114     }
115
116     @Test
117     public void convertIndicatorToBoolean_True_Test() throws MapperException, BadResponseException {
118         boolean testValue = sndcRequestTasks.convertIndicatorToBoolean("Y");
119         assertEquals(true, testValue);
120     }
121
122     @Test
123     public void convertIndicatorToBoolean_False_Test() throws MapperException, BadResponseException {
124         boolean testValue = sndcRequestTasks.convertIndicatorToBoolean("N");
125         assertEquals(false, testValue);
126     }
127
128     @Test
129     public void HandleTimeout_Test() throws MapperException, BadResponseException {
130         doReturn("processKey").when(exceptionBuilder).getProcessKey(delegateExecution);
131         expectedException.expect(BpmnError.class);
132         sndcRequestTasks.handleTimeOutException(delegateExecution);
133     }
134
135     @Test
136     public void processCallBack_Final_Test() throws MapperException, BadResponseException, IOException {
137         final String sdncResponse =
138                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/SDNC_Async_Request2.xml")));
139         delegateExecution.setVariable("correlationName_MESSAGE", sdncResponse);
140         sndcRequestTasks.processCallback(delegateExecution);
141         assertEquals(true, delegateExecution.getVariable(IS_CALLBACK_COMPLETED));
142     }
143
144     @Test
145     public void getXmlElementTest() throws Exception {
146         final String sdncResponse =
147                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/SDNC_Async_Request2.xml")));
148         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
149         DocumentBuilder db;
150         db = dbf.newDocumentBuilder();
151         Document doc = db.parse(new InputSource(new StringReader(sdncResponse)));
152
153         String finalMessageIndicator = getXmlElement(doc, "//*:ack-final-indicator");
154         String responseCode = getXmlElement(doc, "/input/response-code");
155         String responseMessage = getXmlElement(doc, "/input/response-message");
156
157         assertEquals("Y", finalMessageIndicator);
158         assertEquals("200", responseCode);
159         assertEquals("Success", responseMessage);
160     }
161
162     public SDNCRequest createSDNCRequest() {
163         SDNCRequest request = new SDNCRequest();
164         request.setCorrelationName("correlationName");
165         request.setCorrelationValue("correlationValue");
166         request.setTopology(SDNCTopology.CONFIGURATION);
167         ObjectMapper mapper = new ObjectMapper();
168         try {
169             GenericResourceApiServiceOperationInformation sdncReq = mapper.readValue(
170                     Files.readAllBytes(Paths.get("src/test/resources/__files/SDNC_Client_Request.json")),
171                     GenericResourceApiServiceOperationInformation.class);
172             request.setSDNCPayload(sdncReq);
173         } catch (JsonParseException e) {
174
175         } catch (JsonMappingException e) {
176
177         } catch (IOException e) {
178
179         }
180
181         return request;
182     }
183
184 }