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;
21 import static org.openecomp.sdc.test.utils.InterfaceOperationTestUtils.createMockOperation;
23 import java.util.Arrays;
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.List;
29 import org.junit.Assert;
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.mockito.Mockito;
33 import org.mockito.MockitoAnnotations;
34 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
35 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
36 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
37 import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
38 import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition;
39 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
40 import org.openecomp.sdc.be.model.ArtifactDefinition;
41 import org.openecomp.sdc.be.model.Component;
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.exception.ResponseFormat;
46 import org.openecomp.sdc.test.utils.InterfaceOperationTestUtils;
48 public class InterfaceOperationValidationTest {
50 private static final String resourceId = "resourceId";
51 private static final String operationId = "operationId";
52 private static final String operationId2 = "operationId2";
53 private static final String interfaceType1 = "org.test.lifecycle.standard.interfaceType.first";
54 private static final String interfaceType2 = "org.test.lifecycle.standard.interfaceType.second";
55 private static final String interfaceType3 = "org.test.lifecycle.standard.interfaceType.third";
56 private static final String operationType1 = "createOperation";
57 private static final String operationType2 = "updateOperation";
58 private static final String inputName1 = "Input1";
59 private static final String outputName1 = "Output1";
60 private static final String outputName2 = "Output2";
62 private final InterfaceOperationValidationUtilTest interfaceOperationValidationUtilTest =
63 new InterfaceOperationValidationUtilTest();
64 private final ListDataDefinition<OperationInputDefinition> operationInputDefinitionList =
65 new ListDataDefinition<>();
66 private final ListDataDefinition<OperationOutputDefinition> operationOutputDefinitionList =
67 new ListDataDefinition<>();
69 private Component component;
70 private ResponseFormatManager responseFormatManagerMock;
75 MockitoAnnotations.initMocks(this);
76 responseFormatManagerMock = Mockito.mock(ResponseFormatManager.class);
77 when(responseFormatManagerMock.getResponseFormat(any())).thenReturn(new ResponseFormat());
78 when(responseFormatManagerMock.getResponseFormat(any(), any())).thenReturn(new ResponseFormat());
79 when(responseFormatManagerMock.getResponseFormat(any(), any(), any())).thenReturn(new ResponseFormat());
81 component = new ResourceBuilder()
82 .setComponentType(ComponentTypeEnum.RESOURCE)
83 .setUniqueId(resourceId)
86 component.setInterfaces(InterfaceOperationTestUtils.createMockInterfaceDefinitionMap(interfaceType1,
87 operationId, operationType1));
88 component.setInputs(createInputsForComponent());
92 public void shouldPassOperationValidationForHappyScenario() {
93 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
94 operationOutputDefinitionList
95 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
96 InterfaceDefinition interfaceDefinition =
97 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
98 operationInputDefinitionList, operationOutputDefinitionList, "upgrade");
99 Assert.assertTrue(interfaceOperationValidationUtilTest
100 .validateInterfaceOperations(interfaceDefinition, component,
101 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false)
106 public void shouldFailWhenOperationNameIsEmpty() {
107 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
108 operationOutputDefinitionList
109 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
110 InterfaceDefinition interfaceDefinition =
111 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
112 operationInputDefinitionList, operationOutputDefinitionList, "");
113 Assert.assertTrue(interfaceOperationValidationUtilTest
114 .validateInterfaceOperations(interfaceDefinition, component,
115 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight());
119 public void shouldFailWhenOperationNamesAreNotUniqueForCreate() {
120 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
121 operationOutputDefinitionList
122 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
123 InterfaceDefinition interfaceDefinition = createInterfaceOperationData(operationId, operationId2,
124 new ArtifactDefinition(), operationInputDefinitionList, operationOutputDefinitionList, operationType1);
125 Assert.assertTrue(interfaceOperationValidationUtilTest
126 .validateInterfaceOperations(interfaceDefinition, component,
127 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight());
131 public void shouldNotFailWhenOperationNamesAreNotUniqueForUpdate() {
132 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
133 operationOutputDefinitionList
134 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
135 InterfaceDefinition interfaceDefinition =
136 createInterfaceOperationData(operationId, operationId2, new ArtifactDefinition(),
137 operationInputDefinitionList, operationOutputDefinitionList, operationId);
138 Assert.assertTrue(interfaceOperationValidationUtilTest
139 .validateInterfaceOperations(interfaceDefinition, component,
140 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), true).isLeft());
144 public void shouldFailWhenOperationNameLengthIsInvalid() {
145 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
146 operationOutputDefinitionList
147 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
148 InterfaceDefinition interfaceDefinition =
149 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
150 operationInputDefinitionList,operationOutputDefinitionList,
152 "interface operation2 - The Spring Initializer provides a project generator to make you "
153 + "productive with the certain technology stack from the beginning. "
154 + "You can create a "
155 + "skeleton project with web, data access (relational and NoSQL data stores), "
157 + "or messaging support");
158 Assert.assertTrue(interfaceOperationValidationUtilTest
159 .validateInterfaceOperations(interfaceDefinition, component,
160 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight());
164 public void shouldFailWhenOperationInputParamNamesAreNotUnique() {
165 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
166 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
167 operationInputDefinitionList
168 .add(InterfaceOperationTestUtils.createMockOperationInputDefinition(outputName1, 1));
169 operationOutputDefinitionList
170 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
171 InterfaceDefinition interfaceDefinition =
172 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
173 operationInputDefinitionList, operationOutputDefinitionList, "create");
174 Assert.assertTrue(interfaceOperationValidationUtilTest
175 .validateInterfaceOperations(interfaceDefinition, component,
176 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight());
180 public void shouldPassWhenOperationInputParamNamesAreUnique() {
181 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
182 operationInputDefinitionList
183 .add(InterfaceOperationTestUtils.createMockOperationInputDefinition(outputName1, 1));
184 operationOutputDefinitionList
185 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
186 InterfaceDefinition interfaceDefinition =
187 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
188 operationInputDefinitionList, operationOutputDefinitionList, "update");
189 Assert.assertTrue(interfaceOperationValidationUtilTest
190 .validateInterfaceOperations(interfaceDefinition, component,
191 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isLeft());
195 public void shouldPassWhenOperationInputParamNamesHasSubProperty() {
196 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
197 operationOutputDefinitionList
198 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
199 InterfaceDefinition interfaceDefinition =
200 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
201 operationInputDefinitionList, operationOutputDefinitionList, "update");
202 operationInputDefinitionList.getListToscaDataDefinition().get(0).setInputId(
203 operationInputDefinitionList.getListToscaDataDefinition().get(0).getInputId().concat(".subproperty"));
204 Assert.assertTrue(interfaceOperationValidationUtilTest
205 .validateInterfaceOperations(interfaceDefinition, component,
206 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isLeft());
210 public void shouldFailWhenOperationInputParamNameEmpty() {
211 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(" ", 1));
212 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
213 operationOutputDefinitionList
214 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
215 InterfaceDefinition interfaceDefinition =
216 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
217 operationInputDefinitionList, operationOutputDefinitionList, "update");
218 Assert.assertTrue(interfaceOperationValidationUtilTest
219 .validateInterfaceOperations(interfaceDefinition, component,
220 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight());
224 public void shouldFailWhenOperationOutputParamNameEmpty() {
225 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
226 operationOutputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(" "));
227 InterfaceDefinition interfaceDefinition =
228 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
229 operationInputDefinitionList, operationOutputDefinitionList, "update");
230 Assert.assertTrue(interfaceOperationValidationUtilTest
231 .validateInterfaceOperations(interfaceDefinition, component,
232 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight());
236 public void shouldPassWhenInterfaceOperationOutputParamNamesUnique() {
237 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
238 operationOutputDefinitionList
239 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(inputName1));
240 operationOutputDefinitionList
241 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
242 InterfaceDefinition interfaceDefinition =
243 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
244 operationInputDefinitionList, operationOutputDefinitionList, "update");
245 Assert.assertTrue(interfaceOperationValidationUtilTest
246 .validateInterfaceOperations(interfaceDefinition, component,
247 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isLeft());
251 public void shouldFailWhenOperationOutputParamNamesAreNotUnique() {
252 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
253 operationOutputDefinitionList
254 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(inputName1));
255 operationOutputDefinitionList
256 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
257 operationOutputDefinitionList
258 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
259 InterfaceDefinition interfaceDefinition =
260 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
261 operationInputDefinitionList, operationOutputDefinitionList, "update");
262 Assert.assertTrue(interfaceOperationValidationUtilTest
263 .validateInterfaceOperations(interfaceDefinition, component,
264 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight());
268 public void shouldPassWhenOperationInputParamExistInComponentProperty() {
269 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
270 operationOutputDefinitionList
271 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
272 InterfaceDefinition interfaceDefinition =
273 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
274 operationInputDefinitionList, operationOutputDefinitionList, "update");
275 Assert.assertTrue(interfaceOperationValidationUtilTest
276 .validateInterfaceOperations(interfaceDefinition, component,
277 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isLeft());
281 public void shouldFailWhenOperationInputParamDoesntExistInComponentProperty() {
282 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
283 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 2));
284 operationOutputDefinitionList
285 .add(InterfaceOperationTestUtils.createMockOperationOutputDefinition(outputName1));
286 InterfaceDefinition interfaceDefinition =
287 createInterfaceOperationData(operationId2, operationId2, new ArtifactDefinition(),
288 operationInputDefinitionList, operationOutputDefinitionList, "update");
289 Assert.assertTrue(interfaceOperationValidationUtilTest
290 .validateInterfaceOperations(interfaceDefinition, component,
291 component.getInterfaces().get(interfaceType1), Collections.emptyMap(), false).isRight());
295 public void shouldFailValidateAllowedOperationCountOnLocalInterfaceType() {
296 InterfaceDefinition inputInterfaceDefinition =
297 InterfaceOperationTestUtils.createMockInterface(interfaceType1
298 , operationId, operationType1);
299 Assert.assertTrue(interfaceOperationValidationUtilTest
300 .validateInterfaceOperations(inputInterfaceDefinition, component,
301 component.getInterfaces().get(interfaceType1),
302 InterfaceOperationTestUtils.createMockInterfaceTypeMap(
303 interfaceType2, operationType1), false).isRight());
307 public void shouldFailValidateAllowedOperationsOnGlobalInterfaceType() {
308 InterfaceDefinition inputInterfaceDefinition =
309 InterfaceOperationTestUtils.createMockInterface(interfaceType1
310 , operationId, operationType1);
311 Assert.assertTrue(interfaceOperationValidationUtilTest
312 .validateInterfaceOperations(inputInterfaceDefinition, component,
313 component.getInterfaces().get(interfaceType1),
314 InterfaceOperationTestUtils.createMockInterfaceTypeMap(
315 interfaceType1, operationType1), false).isRight());
319 public void shouldPassValidateAllowedOperationsOnGlobalInterfaceType() {
320 InterfaceDefinition inputInterfaceDefinition =
321 InterfaceOperationTestUtils.createMockInterface(interfaceType2,
322 operationId2, operationType2);
323 Assert.assertTrue(interfaceOperationValidationUtilTest
324 .validateInterfaceOperations(inputInterfaceDefinition, component,
325 component.getInterfaces().get(interfaceType1),
326 InterfaceOperationTestUtils.createMockInterfaceTypeMap(
327 interfaceType2, operationType2), false).isLeft());
331 public void shouldFailValidateOperationNameUniquenessInCollection() {
332 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType1,
333 operationId, operationType1);
334 inputInterfaceDefinition.getOperations().put(operationId,
335 createMockOperation(operationId, operationType1));
336 Assert.assertTrue(interfaceOperationValidationUtilTest
337 .validateInterfaceOperations(inputInterfaceDefinition, component,
338 component.getInterfaces().get(interfaceType1),
339 InterfaceOperationTestUtils.createMockInterfaceTypeMap(
340 interfaceType1, operationType1 ), false).isRight());
344 public void shouldPassValidateWhenInputIsMappedToValidOutput() {
345 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType2,
346 operationId, operationType1);
347 inputInterfaceDefinition.getOperationsMap().values()
348 .forEach(operation -> operation.getInputs().getListToscaDataDefinition()
349 .forEach(operationInputDefinition -> operationInputDefinition.setInputId(interfaceType1 +
350 "." + operationType1 + "." + outputName1)));
351 Assert.assertTrue(interfaceOperationValidationUtilTest.validateInterfaceOperations(inputInterfaceDefinition,
352 component, null, Collections.emptyMap(), false).isLeft());
356 public void shouldPassValidateWhenOutputNameIsUnchanged() {
357 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType2,
358 operationId, operationType1);
359 InterfaceDefinition inputParamOutputMappedInterface = InterfaceOperationTestUtils.createMockInterface(
360 interfaceType2, operationId, operationType1);
361 inputParamOutputMappedInterface.getOperationsMap().values()
362 .forEach(operation -> operation.getInputs().getListToscaDataDefinition()
363 .forEach(operationInputDefinition -> operationInputDefinition.setInputId(interfaceType2 +
364 "." + operationType2 + "." + outputName1)));
365 component.getInterfaces().put(interfaceType2, inputParamOutputMappedInterface);
366 component.getInterfaces().put(interfaceType3, InterfaceOperationTestUtils.createMockInterface(interfaceType3,
367 operationId, operationType2));
368 Assert.assertTrue(interfaceOperationValidationUtilTest.validateInterfaceOperations(inputInterfaceDefinition,
369 component, component.getInterfaces().get(interfaceType1),
370 Collections.emptyMap(), true).isLeft());
374 public void shouldPassValidateWhenDeletedOutputIsUnMapped() {
375 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType2,
376 operationId, operationType1);
377 inputInterfaceDefinition.getOperationsMap().values()
378 .forEach(operation -> operation.getOutputs().getListToscaDataDefinition()
379 .forEach(operationOutputDefinition -> operationOutputDefinition.setName(outputName2)));
380 component.getInterfaces().put(interfaceType3, InterfaceOperationTestUtils.createMockInterface(
381 interfaceType3, operationId, operationType2));
382 component.getInterfaces().put(interfaceType2, InterfaceOperationTestUtils.createMockInterface(interfaceType2,
383 operationId, operationType1));
384 Assert.assertTrue(interfaceOperationValidationUtilTest.validateInterfaceOperations(inputInterfaceDefinition,
385 component, component.getInterfaces().get(interfaceType2),
386 Collections.emptyMap(), true).isLeft());
390 public void shouldPassValidateNoOutputsInExistingInterfaceOperation() {
391 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType1,
392 operationId, operationType1);
393 inputInterfaceDefinition.getOperationsMap().values()
394 .forEach(operation -> operation.getOutputs().getListToscaDataDefinition()
395 .forEach(operationOutputDefinition -> operationOutputDefinition.setName(outputName2)));
396 operationInputDefinitionList.add(InterfaceOperationTestUtils.createMockOperationInputDefinition(inputName1, 1));
397 InterfaceDefinition noOutputInterface = createInterfaceOperationData(operationId, "desc",
398 new ArtifactDefinition(), operationInputDefinitionList, null, operationType1);
399 component.getInterfaces().put(interfaceType1, noOutputInterface);
400 component.getInterfaces().put(interfaceType3, InterfaceOperationTestUtils.createMockInterface(
401 interfaceType3, operationId, operationType2));
402 Assert.assertTrue(interfaceOperationValidationUtilTest.validateInterfaceOperations(inputInterfaceDefinition,
403 component, component.getInterfaces().get(interfaceType1),
404 Collections.emptyMap(), true).isLeft());
408 public void shouldFailValidateMappedOutputDoesNotExistInComponent() {
409 //Input parameter is mapped to invalid output (which does not exist in any of the other operations)
410 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType2,
411 operationId, operationType1);
412 inputInterfaceDefinition.getOperationsMap().values()
413 .forEach(operation -> operation.getInputs().getListToscaDataDefinition()
414 .forEach(operationInputDefinition -> operationInputDefinition.setInputId(outputName2)));
416 Assert.assertTrue(interfaceOperationValidationUtilTest.validateInterfaceOperations(inputInterfaceDefinition,
417 component, null, Collections.emptyMap(), false).isRight());
421 public void shouldFailValidateComponentFirstInterfaceInvalidInputMapping() {
422 //Input parameter is mapped to invalid output (which does not exist in any of the other operations)
423 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType2,
424 operationId, operationType1);
425 inputInterfaceDefinition.getOperationsMap().values()
426 .forEach(operation -> operation.getInputs().getListToscaDataDefinition()
427 .forEach(operationInputDefinition -> operationInputDefinition.setInputId(outputName2)));
428 component.setInterfaces(null);
429 Assert.assertTrue(interfaceOperationValidationUtilTest.validateInterfaceOperations(inputInterfaceDefinition,
430 component, null, Collections.emptyMap(), false).isRight());
435 public void shouldFailValidateMappedOutputDeletion() {
436 //Input interface from user with new output name (Output2)
437 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType2,
438 operationId, operationType1);
439 inputInterfaceDefinition.getOperationsMap().values()
440 .forEach(operation -> operation.getOutputs().getListToscaDataDefinition()
441 .forEach(operationOutputDefinition -> operationOutputDefinition.setName(outputName2)));
443 InterfaceDefinition inputParamOutputMappedInterface = InterfaceOperationTestUtils.createMockInterface(
444 interfaceType3, operationId, operationType2);
445 inputParamOutputMappedInterface.getOperationsMap().values()
446 .forEach(operation -> operation.getInputs().getListToscaDataDefinition()
447 .forEach(operationInputDefinition -> operationInputDefinition.setInputId(interfaceType2 +
448 "." + operationType1 + "." + outputName1)));
449 component.getInterfaces().put(interfaceType3, inputParamOutputMappedInterface);
450 component.getInterfaces().put(interfaceType2, InterfaceOperationTestUtils.createMockInterface(interfaceType2,
451 operationId, operationType1));
452 Assert.assertTrue(interfaceOperationValidationUtilTest.validateInterfaceOperations(inputInterfaceDefinition,
453 component, component.getInterfaces().get(interfaceType2),
454 Collections.emptyMap(), true).isRight());
458 public void shouldFailValidateAllMappedOutputsDeleted() {
459 //Input interface from user with all outputs deleted
460 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType2,
461 operationId, operationType1);
462 Map<String, Operation> operationsMap = inputInterfaceDefinition.getOperationsMap();
463 for (Map.Entry<String, Operation> operationEntry : operationsMap.entrySet()) {
464 operationEntry.getValue().setOutputs(null);
466 inputInterfaceDefinition.setOperationsMap(operationsMap);
468 InterfaceDefinition inputParamOutputMappedInterface = InterfaceOperationTestUtils.createMockInterface(
469 interfaceType3, operationId, operationType2);
470 inputParamOutputMappedInterface.getOperationsMap().values()
471 .forEach(operation -> operation.getInputs().getListToscaDataDefinition()
472 .forEach(operationInputDefinition -> operationInputDefinition.setInputId(interfaceType2 +
473 "." + operationType1 + "." + outputName1)));
474 component.getInterfaces().put(interfaceType3, inputParamOutputMappedInterface);
475 component.getInterfaces().put(interfaceType2, InterfaceOperationTestUtils.createMockInterface(interfaceType2,
476 operationId, operationType1));
477 Assert.assertTrue(interfaceOperationValidationUtilTest.validateInterfaceOperations(inputInterfaceDefinition,
478 component, component.getInterfaces().get(interfaceType2),
479 Collections.emptyMap(), true).isRight());
484 public void shouldFailValidateDeleteOperationOperationWithMappedOutput() {
485 InterfaceDefinition inputInterfaceDefinition = InterfaceOperationTestUtils.createMockInterface(interfaceType2,
486 operationId, operationType1);
487 InterfaceDefinition inputParamOutputMappedInterface = InterfaceOperationTestUtils.createMockInterface(
488 interfaceType3, operationId, operationType2);
489 inputParamOutputMappedInterface.getOperationsMap().values()
490 .forEach(operation -> operation.getInputs().getListToscaDataDefinition()
491 .forEach(operationInputDefinition -> operationInputDefinition.setInputId(interfaceType2 +
492 "." + operationType1 + "." + outputName1)));
493 component.getInterfaces().put(interfaceType3, inputParamOutputMappedInterface);
494 component.getInterfaces().put(interfaceType2, InterfaceOperationTestUtils.createMockInterface(interfaceType2,
495 operationId, operationType1));
496 Assert.assertTrue(interfaceOperationValidationUtilTest.validateDeleteOperationContainsNoMappedOutput(
497 inputInterfaceDefinition.getOperationsMap().get(operationId), component,
498 inputInterfaceDefinition).isRight());
501 private InterfaceDefinition createInterfaceOperationData(String uniqueID, String description,
502 ArtifactDefinition artifactDefinition,
503 ListDataDefinition<OperationInputDefinition> inputs,
504 ListDataDefinition<OperationOutputDefinition> outputs,
506 Operation operation = new Operation();
507 operation.setUniqueId(uniqueID);
508 operation.setDescription(description);
509 operation.setImplementation(artifactDefinition);
510 operation.setInputs(inputs);
511 operation.setOutputs(outputs);
512 operation.setName(name);
513 Map<String, Operation> operationMap = new HashMap<>();
514 operationMap.put(operation.getUniqueId(), operation);
515 InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
516 interfaceDefinition.setType(interfaceType2);
517 interfaceDefinition.setOperationsMap(operationMap);
518 return interfaceDefinition;
521 private List<InputDefinition> createInputsForComponent() {
522 String componentInputName = "ComponentInput1";
523 InputDefinition inputDefinition1 = new InputDefinition();
524 inputDefinition1.setName(componentInputName);
525 inputDefinition1.setInputId(componentInputName + "_inputId");
526 inputDefinition1.setUniqueId(componentInputName + "_uniqueId");
527 inputDefinition1.setValue(componentInputName + "_value");
528 inputDefinition1.setDefaultValue(componentInputName + "_defaultValue");
530 String componentInputName2 = "ComponentInput2";
531 InputDefinition inputDefinition2 = new InputDefinition();
532 inputDefinition2.setName(componentInputName2);
533 inputDefinition2.setInputId(componentInputName2 + "_inputId");
534 inputDefinition2.setUniqueId(componentInputName2 + "_uniqueId");
535 inputDefinition2.setValue(componentInputName2 + "_value");
536 inputDefinition2.setDefaultValue(componentInputName2 + "_defaultValue");
538 return Arrays.asList(inputDefinition1, inputDefinition2);
541 private class InterfaceOperationValidationUtilTest extends InterfaceOperationValidation {
543 protected ResponseFormatManager getResponseFormatManager() {
544 return responseFormatManagerMock;