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 com.google.common.collect.Sets;
20 import fj.data.Either;
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.mockito.InjectMocks;
25 import org.mockito.Mock;
26 import org.mockito.Mockito;
27 import org.mockito.MockitoAnnotations;
28 import org.openecomp.sdc.be.components.InterfaceOperationTestUtils;
29 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
30 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
31 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
32 import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition;
33 import org.openecomp.sdc.be.model.*;
34 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
35 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
36 import org.openecomp.sdc.exception.ResponseFormat;
38 import java.util.Collection;
39 import java.util.HashMap;
43 import static org.mockito.ArgumentMatchers.any;
44 import static org.mockito.Mockito.when;
46 public class InterfaceOperationValidationTest implements InterfaceOperationTestUtils {
48 private Resource resource = (Resource) getToscaFullElement().left().value();
50 ResponseFormatManager mock;
52 ToscaOperationFacade toscaOperationFacade;
55 InterfaceOperationValidationUtilTest interfaceOperationValidationUtilTest = new InterfaceOperationValidationUtilTest();
56 private static final String RESOURCE_ID = "resource1";
57 ListDataDefinition<OperationInputDefinition> operationInputDefinitionList = new ListDataDefinition<>();
58 ListDataDefinition<OperationOutputDefinition> operationOutputDefinitionList = new ListDataDefinition<>();
61 MockitoAnnotations.initMocks(this);
62 mock = Mockito.mock(ResponseFormatManager.class);
63 when(toscaOperationFacade.getToscaElement(any(), any(ComponentParametersView.class))).thenReturn(Either.left(resource));
64 when(mock.getResponseFormat(any())).thenReturn(new ResponseFormat());
65 when(mock.getResponseFormat(any(), any())).thenReturn(new ResponseFormat());
66 when(mock.getResponseFormat(any(), any(), any())).thenReturn(new ResponseFormat());
71 public void testValidInterfaceOperation() {
72 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
73 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
74 Collection<Operation> operations = createInterfaceOperationData("op2",
75 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
76 operationOutputDefinitionList,"upgrade");
77 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
78 .validateInterfaceOperations(operations, RESOURCE_ID, false);
79 Assert.assertTrue(booleanResponseFormatEither.isLeft());
83 public void testInterfaceOperationDescriptionLength() {
84 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
85 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
86 Collection<Operation> operations = createInterfaceOperationData("op2",
87 "interface operation2 - The Spring Initializer provides a project generator to make you " +
88 "productive with the certain technology stack from the beginning. You can create a skeleton project" +
89 "with web, data access (relational and NoSQL datastores), cloud, or messaging support",
90 new ArtifactDefinition(), operationInputDefinitionList, operationOutputDefinitionList,"update");
91 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
92 .validateInterfaceOperations(operations, RESOURCE_ID, false);
93 Assert.assertTrue(booleanResponseFormatEither.isRight());
99 public void testInterfaceOperationForEmptyType() {
100 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
101 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
102 Collection<Operation> operations = createInterfaceOperationData("op2",
103 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
104 operationOutputDefinitionList, "");
105 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
106 .validateInterfaceOperations(operations, RESOURCE_ID, false);
107 Assert.assertTrue(booleanResponseFormatEither.isRight());
111 public void testInterfaceOperationForEmptyInputParam() {
112 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
113 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
114 Collection<Operation> operations = createInterfaceOperationData("op2",
115 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
116 operationOutputDefinitionList,"input2");
117 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
118 .validateInterfaceOperations(operations, RESOURCE_ID, false);
119 Assert.assertTrue(booleanResponseFormatEither.isRight());
123 public void testInterfaceOperationForNonUniqueType() {
124 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
125 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
126 Collection<Operation> operations = createInterfaceOperationData("op2",
127 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
128 operationOutputDefinitionList,"CREATE");
129 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
130 .validateInterfaceOperations(operations, RESOURCE_ID, false);
131 Assert.assertTrue(booleanResponseFormatEither.isRight());
135 public void testInterfaceOperationTypeLength() {
136 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
137 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
138 Collection<Operation> operations = createInterfaceOperationData("op2",
139 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
140 operationOutputDefinitionList,
141 "interface operation2 - The Spring Initializer provides a project generator to make you " +
142 "productive with the certain technology stack from the beginning. You can create a skeleton project" +
143 "with web, data access (relational and NoSQL datastores), cloud, or messaging support");
144 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
145 .validateInterfaceOperations(operations, RESOURCE_ID, false);
146 Assert.assertTrue(booleanResponseFormatEither.isRight());
151 public void testInterfaceOperationUniqueInputParamNameInvalid() {
152 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
153 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
154 operationInputDefinitionList.add(createMockOperationInputDefinition("label2"));
155 operationInputDefinitionList.add(createMockOperationInputDefinition("label2"));
156 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
157 Collection<Operation> operations = createInterfaceOperationData("op2",
158 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
159 operationOutputDefinitionList,"create");
161 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
162 .validateInterfaceOperations(operations, RESOURCE_ID, false);
163 Assert.assertTrue(booleanResponseFormatEither.isRight());
167 public void testInterfaceOperationUniqueInputParamNameValid() {
168 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
169 operationInputDefinitionList.add(createMockOperationInputDefinition("label2"));
170 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
171 Collection<Operation> operations = createInterfaceOperationData("op2",
172 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
173 operationOutputDefinitionList,"update");
176 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
177 .validateInterfaceOperations(operations, RESOURCE_ID, false);
178 Assert.assertTrue(booleanResponseFormatEither.isLeft());
182 public void testInterfaceOperationeInputParamNameEmpty() {
183 operationInputDefinitionList.add(createMockOperationInputDefinition(" "));
184 operationInputDefinitionList.add(createMockOperationInputDefinition("label1"));
185 operationOutputDefinitionList.add(createMockOperationOutputDefinition("label1"));
186 Collection<Operation> operations = createInterfaceOperationData("op2",
187 "interface operation2",new ArtifactDefinition(), operationInputDefinitionList,
188 operationOutputDefinitionList,"update");
191 Either<Boolean, ResponseFormat> booleanResponseFormatEither = interfaceOperationValidationUtilTest
192 .validateInterfaceOperations(operations, RESOURCE_ID, false);
193 Assert.assertTrue(booleanResponseFormatEither.isRight());
196 private Set<Operation> createInterfaceOperationData( String uniqueID, String description, ArtifactDefinition artifactDefinition,
197 ListDataDefinition<OperationInputDefinition> inputs,
198 ListDataDefinition<OperationOutputDefinition> outputs, String name) {
199 return Sets.newHashSet(createInterfaceOperation(uniqueID, description, artifactDefinition, inputs, outputs, name));
202 private <T extends Component> Either<T, StorageOperationStatus> getToscaFullElement() {
204 return Either.left((T) setUpResourceMock());
207 private Resource setUpResourceMock(){
208 Resource resource = new Resource();
209 resource.setInterfaces(createMockInterfaceDefinition());
214 private Map<String, InterfaceDefinition> createMockInterfaceDefinition() {
215 Map<String, Operation> operationMap = createMockOperationMap();
216 Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
217 interfaceDefinitionMap.put("int1", createInterface("int1", "Interface 1",
218 "lifecycle", "tosca", operationMap));
220 return interfaceDefinitionMap;
223 private class InterfaceOperationValidationUtilTest extends InterfaceOperationValidation {
225 protected ResponseFormatManager getResponseFormatManager() {