2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.be.components.validation;
19 import static org.mockito.ArgumentMatchers.any;
20 import static org.mockito.Mockito.when;
22 import com.google.common.collect.Sets;
23 import fj.data.Either;
25 import java.util.ArrayList;
26 import java.util.Collection;
27 import java.util.HashMap;
28 import java.util.List;
31 import org.junit.Assert;
32 import org.junit.Before;
33 import org.junit.Test;
34 import org.mockito.Mockito;
35 import org.mockito.MockitoAnnotations;
36 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
37 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
38 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
39 import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition;
40 import org.openecomp.sdc.be.model.ArtifactDefinition;
41 import org.openecomp.sdc.be.model.ComponentInstanceInput;
42 import org.openecomp.sdc.be.model.InputDefinition;
43 import org.openecomp.sdc.be.model.InterfaceDefinition;
44 import org.openecomp.sdc.be.model.Operation;
45 import org.openecomp.sdc.be.model.Component;
46 import org.openecomp.sdc.be.model.Resource;
47 import org.openecomp.sdc.exception.ResponseFormat;
48 import org.openecomp.sdc.test.utils.InterfaceOperationTestUtils;
50 public class InterfaceOperationValidationTest {
52 private final Component component = setUpComponentMock();
53 private ResponseFormatManager responseFormatManagerMock;
55 private final InterfaceOperationValidationUtilTest interfaceOperationValidationUtilTest = new InterfaceOperationValidationUtilTest();
56 private final ListDataDefinition<OperationInputDefinition> operationInputDefinitionList = new ListDataDefinition<>();
57 private final ListDataDefinition<OperationOutputDefinition> operationOutputDefinitionList = new ListDataDefinition<>();
61 MockitoAnnotations.initMocks(this);
62 responseFormatManagerMock = Mockito.mock(ResponseFormatManager.class);
63 when(responseFormatManagerMock.getResponseFormat(any())).thenReturn(new ResponseFormat());
64 when(responseFormatManagerMock.getResponseFormat(any(), any())).thenReturn(new ResponseFormat());
65 when(responseFormatManagerMock.getResponseFormat(any(), any(), any())).thenReturn(new ResponseFormat());
69 public void testValidInterfaceOperation() {
70 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
71 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
72 Collection<Operation> operations = createInterfaceOperationData("op2",
73 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
74 operationOutputDefinitionList,"upgrade");
75 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
76 .validateInterfaceOperations(operations, component, false);
77 Assert.assertTrue(booleanResponseFormatEither.isLeft());
81 public void testInterfaceOperationDescriptionLength() {
82 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
83 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
84 Collection<Operation> operations = createInterfaceOperationData("op2",
85 "interface operation2 - The Spring Initializer provides a project generator to make you " +
86 "productive with the certain technology stack from the beginning. You can create a skeleton project" +
87 "with web, data access (relational and NoSQL data stores), cloud, or messaging support",
88 new ArtifactDefinition(), operationInputDefinitionList, operationOutputDefinitionList,"update");
89 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
90 .validateInterfaceOperations(operations, component, false);
91 Assert.assertTrue(booleanResponseFormatEither.isRight());
97 public void testInterfaceOperationForEmptyType() {
98 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
99 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
100 Collection<Operation> operations = createInterfaceOperationData("op2",
101 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
102 operationOutputDefinitionList, "");
103 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
104 .validateInterfaceOperations(operations, component, false);
105 Assert.assertTrue(booleanResponseFormatEither.isRight());
109 public void testInterfaceOperationForEmptyInputParam() {
110 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
111 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
112 Collection<Operation> operations = createInterfaceOperationData("op2",
113 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
114 operationOutputDefinitionList,"input2");
115 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
116 .validateInterfaceOperations(operations, component, false);
117 Assert.assertTrue(booleanResponseFormatEither.isRight());
121 public void testInterfaceOperationForNonUniqueType() {
122 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
123 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
124 Collection<Operation> operations = createInterfaceOperationData("op2",
125 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
126 operationOutputDefinitionList,"CREATE");
127 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
128 .validateInterfaceOperations(operations, component, false);
129 Assert.assertTrue(booleanResponseFormatEither.isRight());
133 public void testInterfaceOperationTypeLength() {
134 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
135 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
136 Collection<Operation> operations = createInterfaceOperationData("op2",
137 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
138 operationOutputDefinitionList,
139 "interface operation2 - The Spring Initializer provides a project generator to make you " +
140 "productive with the certain technology stack from the beginning. You can create a skeleton project" +
141 "with web, data access (relational and NoSQL data stores), cloud, or messaging support");
142 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
143 .validateInterfaceOperations(operations, component, false);
144 Assert.assertTrue(booleanResponseFormatEither.isRight());
149 public void testInterfaceOperationUniqueInputParamNameInvalid() {
150 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
151 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
152 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label2"));
153 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label2"));
154 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
155 Collection<Operation> operations = createInterfaceOperationData("op2",
156 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
157 operationOutputDefinitionList,"create");
159 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
160 .validateInterfaceOperations(operations, component, false);
161 Assert.assertTrue(booleanResponseFormatEither.isRight());
165 public void testInterfaceOperationUniqueInputParamNameValid() {
166 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
167 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label2"));
168 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
169 Collection<Operation> operations = createInterfaceOperationData("op2",
170 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
171 operationOutputDefinitionList,"update");
174 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
175 .validateInterfaceOperations(operations, component, false);
176 Assert.assertTrue(booleanResponseFormatEither.isLeft());
180 public void testInterfaceOperationInputParamNameEmpty() {
181 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(" "));
182 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
183 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
184 Collection<Operation> operations = createInterfaceOperationData("op2",
185 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
186 operationOutputDefinitionList,"update");
189 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
190 .validateInterfaceOperations(operations, component, false);
191 Assert.assertTrue(booleanResponseFormatEither.isRight());
194 private Set<Operation> createInterfaceOperationData( String uniqueID, String description, ArtifactDefinition artifactDefinition,
195 ListDataDefinition<OperationInputDefinition> inputs,
196 ListDataDefinition<OperationOutputDefinition> outputs, String name) {
197 return Sets.newHashSet(InterfaceOperationTestUtils.createInterfaceOperation(uniqueID, description, artifactDefinition, inputs, outputs, name));
200 private Component setUpComponentMock(){
201 Component component = new Resource();
203 List<InputDefinition> inputs = new ArrayList<>();
204 InputDefinition inputDefinition = new InputDefinition();
205 InputDefinition inputDefinition1 = new InputDefinition();
207 List<ComponentInstanceInput> componentInstanceInputs = new ArrayList<>();
208 ComponentInstanceInput componentInstanceInput1 = new ComponentInstanceInput();
209 componentInstanceInput1.setComponentInstanceName("componentInstance1");
210 componentInstanceInput1.setUniqueId("inputId1");
211 ComponentInstanceInput componentInstanceInput2 = new ComponentInstanceInput();
212 componentInstanceInput2.setComponentInstanceName("componentInstance2");
213 componentInstanceInput2.setUniqueId("inputId2");
215 componentInstanceInputs.add(componentInstanceInput1);
216 componentInstanceInputs.add(componentInstanceInput2);
218 inputDefinition.setUniqueId("inputId1");
219 inputDefinition.setInputs(componentInstanceInputs);
220 inputDefinition1.setUniqueId("uniqueId3");
222 inputs.add(inputDefinition);
223 inputs.add(inputDefinition1);
224 component.setInputs(inputs);
225 component.setInterfaces(createMockInterfaceDefinition());
229 private Map<String, InterfaceDefinition> createMockInterfaceDefinition() {
230 Map<String, Operation> operationMap = InterfaceOperationTestUtils.createMockOperationMap();
231 Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
232 interfaceDefinitionMap.put("int1", InterfaceOperationTestUtils.createInterface("int1", "Interface 1",
233 "lifecycle", "tosca", operationMap));
235 return interfaceDefinitionMap;
238 private class InterfaceOperationValidationUtilTest extends InterfaceOperationValidation {
240 protected ResponseFormatManager getResponseFormatManager() {
241 return responseFormatManagerMock;