+ @Test
+ void testCreateOutputsInGraph_OK() {
+ final Map<String, OutputDefinition> outputs = new HashMap<>();
+ final var out_1 = new OutputDefinition();
+ out_1.setName("out-1");
+ out_1.setValue("{ get_attribute: [ instanceId, attribName ] }");
+ final var out_2 = new OutputDefinition();
+ out_2.setName("out-2");
+ out_2.setValue("{ get_attribute: [ SELF, oneMoreAttribute ] }");
+ outputs.put(out_1.getName(), out_1);
+ outputs.put(out_2.getName(), out_2);
+
+ final List<OutputDefinition> serviceOutputs = new ArrayList<>();
+ final var out_3 = new OutputDefinition();
+ out_3.setName("out-3");
+ serviceOutputs.add(out_3);
+ service.setOutputs(serviceOutputs);
+
+ final List<OutputDefinition> list = Arrays.asList(out_1, out_2, out_3);
+ when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service));
+ when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK);
+ when(attributeDeclarationOrchestrator.declareAttributesToOutputs(eq(service), any(ComponentInstOutputsMap.class)))
+ .thenReturn(Either.left(list));
+ when(toscaOperationFacadeMock.addOutputsToComponent(anyMap(), anyString())).thenReturn(Either.left(list));
+
+ final var result = testInstance.createOutputsInGraph(outputs, service, USER_ID);
+ assertTrue(result.isLeft());
+ assertEquals(3, result.left().value().size());
+ assertEquals(list, result.left().value());
+ }
+
+ @Test
+ void testCreateOutputsInGraph_NegativeCreateAndAssociateOutputsStatus() {
+ final Map<String, OutputDefinition> outputs = new HashMap<>();
+ final var out_1 = new OutputDefinition();
+ out_1.setName("out-1");
+ out_1.setValue("{ get_attribute: [ instanceId, attribName ] }");
+ final var out_2 = new OutputDefinition();
+ out_2.setName("out-2");
+ out_2.setValue("{ get_attribute: [ SELF, oneMoreAttribute ] }");
+ outputs.put(out_1.getName(), out_1);
+ outputs.put(out_2.getName(), out_2);
+
+ final List<OutputDefinition> serviceOutputs = new ArrayList<>();
+ final var out_3 = new OutputDefinition();
+ out_3.setName("out-3");
+ serviceOutputs.add(out_3);
+ service.setOutputs(serviceOutputs);
+
+ final var list = Arrays.asList(out_1, out_2, out_3);
+ when(toscaOperationFacadeMock.getToscaElement(eq(COMPONENT_ID), any(ComponentParametersView.class))).thenReturn(Either.left(service));
+ when(graphLockOperation.lockComponent(COMPONENT_ID, NodeTypeEnum.Service)).thenReturn(StorageOperationStatus.OK);
+ when(attributeDeclarationOrchestrator.declareAttributesToOutputs(eq(service), any(ComponentInstOutputsMap.class)))
+ .thenReturn(Either.left(list));
+ when(toscaOperationFacadeMock.addOutputsToComponent(anyMap(), eq(COMPONENT_ID)))
+ .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
+ when(componentsUtilsMock.convertFromStorageResponse(StorageOperationStatus.GENERAL_ERROR)).thenReturn(ActionStatus.GENERAL_ERROR);
+ when(componentsUtilsMock.getResponseFormat(StorageOperationStatus.GENERAL_ERROR))
+ .thenReturn(new ResponseFormat(Status.INTERNAL_SERVER_ERROR.getStatusCode()));
+
+ final var result = testInstance.createOutputsInGraph(outputs, service, USER_ID);
+ assertNotNull(result);
+ assertTrue(result.isRight());
+ assertEquals(500, result.right().value().getStatus());
+ }