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;
24 import java.util.Collection;
25 import java.util.HashMap;
28 import org.junit.Assert;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.mockito.Mockito;
32 import org.mockito.MockitoAnnotations;
33 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
34 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
35 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
36 import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition;
37 import org.openecomp.sdc.be.model.ArtifactDefinition;
38 import org.openecomp.sdc.be.model.InterfaceDefinition;
39 import org.openecomp.sdc.be.model.Operation;
40 import org.openecomp.sdc.be.model.Resource;
41 import org.openecomp.sdc.exception.ResponseFormat;
42 import org.openecomp.sdc.test.utils.InterfaceOperationTestUtils;
44 public class InterfaceOperationValidationTest {
46 private Resource resource = setUpResourceMock();
47 ResponseFormatManager responseFormatManagerMock;
49 InterfaceOperationValidationUtilTest interfaceOperationValidationUtilTest = new InterfaceOperationValidationUtilTest();
50 ListDataDefinition<OperationInputDefinition> operationInputDefinitionList = new ListDataDefinition<>();
51 ListDataDefinition<OperationOutputDefinition> operationOutputDefinitionList = new ListDataDefinition<>();
55 MockitoAnnotations.initMocks(this);
56 responseFormatManagerMock = Mockito.mock(ResponseFormatManager.class);
57 when(responseFormatManagerMock.getResponseFormat(any())).thenReturn(new ResponseFormat());
58 when(responseFormatManagerMock.getResponseFormat(any(), any())).thenReturn(new ResponseFormat());
59 when(responseFormatManagerMock.getResponseFormat(any(), any(), any())).thenReturn(new ResponseFormat());
63 public void testValidInterfaceOperation() {
64 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
65 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
66 Collection<Operation> operations = createInterfaceOperationData("op2",
67 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
68 operationOutputDefinitionList,"upgrade");
69 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
70 .validateInterfaceOperations(operations, resource, false);
71 Assert.assertTrue(booleanResponseFormatEither.isLeft());
75 public void testInterfaceOperationDescriptionLength() {
76 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
77 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
78 Collection<Operation> operations = createInterfaceOperationData("op2",
79 "interface operation2 - The Spring Initializer provides a project generator to make you " +
80 "productive with the certain technology stack from the beginning. You can create a skeleton project" +
81 "with web, data access (relational and NoSQL datastores), cloud, or messaging support",
82 new ArtifactDefinition(), operationInputDefinitionList, operationOutputDefinitionList,"update");
83 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
84 .validateInterfaceOperations(operations, resource, false);
85 Assert.assertTrue(booleanResponseFormatEither.isRight());
91 public void testInterfaceOperationForEmptyType() {
92 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
93 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
94 Collection<Operation> operations = createInterfaceOperationData("op2",
95 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
96 operationOutputDefinitionList, "");
97 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
98 .validateInterfaceOperations(operations, resource, false);
99 Assert.assertTrue(booleanResponseFormatEither.isRight());
103 public void testInterfaceOperationForEmptyInputParam() {
104 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
105 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
106 Collection<Operation> operations = createInterfaceOperationData("op2",
107 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
108 operationOutputDefinitionList,"input2");
109 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
110 .validateInterfaceOperations(operations, resource, false);
111 Assert.assertTrue(booleanResponseFormatEither.isRight());
115 public void testInterfaceOperationForNonUniqueType() {
116 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
117 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
118 Collection<Operation> operations = createInterfaceOperationData("op2",
119 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
120 operationOutputDefinitionList,"CREATE");
121 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
122 .validateInterfaceOperations(operations, resource, false);
123 Assert.assertTrue(booleanResponseFormatEither.isRight());
127 public void testInterfaceOperationTypeLength() {
128 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
129 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
130 Collection<Operation> operations = createInterfaceOperationData("op2",
131 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
132 operationOutputDefinitionList,
133 "interface operation2 - The Spring Initializer provides a project generator to make you " +
134 "productive with the certain technology stack from the beginning. You can create a skeleton project" +
135 "with web, data access (relational and NoSQL datastores), cloud, or messaging support");
136 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
137 .validateInterfaceOperations(operations, resource, false);
138 Assert.assertTrue(booleanResponseFormatEither.isRight());
143 public void testInterfaceOperationUniqueInputParamNameInvalid() {
144 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
145 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
146 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label2"));
147 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label2"));
148 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
149 Collection<Operation> operations = createInterfaceOperationData("op2",
150 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
151 operationOutputDefinitionList,"create");
153 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
154 .validateInterfaceOperations(operations, resource, false);
155 Assert.assertTrue(booleanResponseFormatEither.isRight());
159 public void testInterfaceOperationUniqueInputParamNameValid() {
160 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
161 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label2"));
162 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
163 Collection<Operation> operations = createInterfaceOperationData("op2",
164 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
165 operationOutputDefinitionList,"update");
168 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
169 .validateInterfaceOperations(operations, resource, false);
170 Assert.assertTrue(booleanResponseFormatEither.isLeft());
174 public void testInterfaceOperationeInputParamNameEmpty() {
175 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(" "));
176 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition("label1"));
177 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition("label1"));
178 Collection<Operation> operations = createInterfaceOperationData("op2",
179 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
180 operationOutputDefinitionList,"update");
183 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
184 .validateInterfaceOperations(operations, resource, false);
185 Assert.assertTrue(booleanResponseFormatEither.isRight());
188 private Set<Operation> createInterfaceOperationData( String uniqueID, String description, ArtifactDefinition artifactDefinition,
189 ListDataDefinition<OperationInputDefinition> inputs,
190 ListDataDefinition<OperationOutputDefinition> outputs, String name) {
191 return Sets.newHashSet(InterfaceOperationTestUtils.createInterfaceOperation(uniqueID, description, artifactDefinition, inputs, outputs, name));
194 private Resource setUpResourceMock(){
195 Resource resource = new Resource();
196 resource.setInterfaces(createMockInterfaceDefinition());
200 private Map<String, InterfaceDefinition> createMockInterfaceDefinition() {
201 Map<String, Operation> operationMap = InterfaceOperationTestUtils.createMockOperationMap();
202 Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
203 interfaceDefinitionMap.put("int1", InterfaceOperationTestUtils.createInterface("int1", "Interface 1",
204 "lifecycle", "tosca", operationMap));
206 return interfaceDefinitionMap;
209 private class InterfaceOperationValidationUtilTest extends InterfaceOperationValidation {
211 protected ResponseFormatManager getResponseFormatManager() {
212 return responseFormatManagerMock;