1 package org.onap.sdc.workflow.persistence.impl;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5 import static org.mockito.ArgumentMatchers.isNull;
6 import static org.mockito.Matchers.any;
7 import static org.mockito.Matchers.eq;
8 import static org.mockito.Mockito.doReturn;
9 import static org.mockito.Mockito.verify;
11 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
12 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
13 import com.amdocs.zusammen.datatypes.Id;
14 import com.amdocs.zusammen.datatypes.SessionContext;
15 import com.amdocs.zusammen.datatypes.item.ElementContext;
16 import com.amdocs.zusammen.datatypes.item.Info;
17 import java.util.ArrayList;
18 import java.util.Collection;
19 import java.util.Optional;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.junit.runner.RunWith;
23 import org.mapstruct.ap.internal.util.Collections;
24 import org.mockito.InjectMocks;
25 import org.mockito.Mock;
26 import org.mockito.Spy;
27 import org.mockito.junit.MockitoJUnitRunner;
28 import org.onap.sdc.workflow.persistence.impl.types.ParameterPropertyName;
29 import org.onap.sdc.workflow.persistence.impl.types.WorkflowElementType;
30 import org.onap.sdc.workflow.persistence.types.ParameterEntity;
31 import org.onap.sdc.workflow.persistence.types.ParameterRole;
32 import org.onap.sdc.workflow.persistence.types.ParameterType;
33 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
34 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
36 @RunWith(MockitoJUnitRunner.class)
37 public class ParameterRepositoryTest {
39 private static final String ITEM1_ID = "item_id_1";
40 private static final String VERSION1_ID = "version_id_1";
41 private static final String PARAMETER1_ID = "parameter_id_1";
42 private static final String PARAMETER2_ID = "parameter_id_2";
43 private static final String PARAMETERS_PARENT_ID = "parameters_id";
47 private ZusammenAdaptor zusammenAdaptorMock;
50 private ParameterRepositoryImpl parameterRepository;
54 SessionContextProviderFactory.getInstance().createInterface().create("test_user", "workflow");
58 public void shouldGetParameterById() {
60 ElementInfo element = new ElementInfo();
61 element.setId(new Id(PARAMETER1_ID));
62 Info info = new Info();
63 info.setName("testInput");
64 info.addProperty(ParameterPropertyName.TYPE.name(), ParameterType.FLOAT.name());
65 info.addProperty(ParameterPropertyName.MANDATORY.name(), true);
66 element.setInfo(info);
67 doReturn(Optional.of(element)).when(zusammenAdaptorMock)
68 .getElementInfo(any(SessionContext.class), any(ElementContext.class),
69 eq(new Id(PARAMETER1_ID)));
70 ParameterEntity result = parameterRepository.get(ITEM1_ID, VERSION1_ID, PARAMETER1_ID);
71 verify(zusammenAdaptorMock)
72 .getElementInfo(any(SessionContext.class), any(ElementContext.class), eq(new Id(PARAMETER1_ID)));
73 assertEquals("testInput", result.getName());
79 public void shouldUpdateParameter() {
80 ParameterEntity parameterEntityToUpdate = new ParameterEntity();
81 parameterEntityToUpdate.setId(PARAMETER1_ID);
82 parameterEntityToUpdate.setName("Input1");
83 parameterEntityToUpdate.setMandatory(true);
84 parameterEntityToUpdate.setType(ParameterType.STRING);
86 parameterRepository.update(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT, parameterEntityToUpdate);
87 verify(zusammenAdaptorMock)
88 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
89 eq("Update WorkflowVersion Parameter"));
94 public void shouldCreateParameterStructure() {
95 parameterRepository.createStructure(ITEM1_ID, VERSION1_ID);
96 verify(zusammenAdaptorMock)
97 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
98 eq("Create WorkflowVersion INPUTS Element"));
99 verify(zusammenAdaptorMock)
100 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
101 eq("Create WorkflowVersion OUTPUTS Element"));
105 public void shouldDeleteParameter() {
106 parameterRepository.delete(ITEM1_ID, VERSION1_ID, PARAMETER1_ID);
107 verify(zusammenAdaptorMock)
108 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
109 eq("Delete Parameter with id parameter_id_1"));
114 public void shouldListParametersByType() {
116 ElementInfo parameter1 = new ElementInfo();
117 parameter1.setId(new Id(PARAMETER1_ID));
118 Info info1 = new Info();
119 info1.setName("input1");
120 info1.addProperty(ParameterPropertyName.TYPE.name(), "INTEGER");
121 info1.addProperty(ParameterPropertyName.MANDATORY.name(), true);
122 parameter1.setInfo(info1);
123 ElementInfo parameter2 = new ElementInfo();
124 parameter2.setId(new Id(PARAMETER2_ID));
125 Info info2 = new Info();
126 info2.setName("input2");
127 info2.addProperty(ParameterPropertyName.TYPE.name(), "STRING");
128 info2.addProperty(ParameterPropertyName.MANDATORY.name(), false);
129 parameter2.setInfo(info2);
130 Collection<ElementInfo> parameters = Collections.asSet(parameter1, parameter2);
131 doReturn(parameters).when(zusammenAdaptorMock)
132 .listElementsByName(any(SessionContext.class), any(ElementContext.class), isNull(),
133 eq(WorkflowElementType.INPUTS.name()));
134 Collection<ParameterEntity> results = parameterRepository.list(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT);
136 verify(zusammenAdaptorMock).listElementsByName(any(SessionContext.class), any(ElementContext.class), isNull(),
137 eq(WorkflowElementType.INPUTS.name()));
138 assertTrue(results.stream().anyMatch(parameterEntity -> parameterEntity.getId().equals(PARAMETER1_ID)));
139 assertTrue(results.stream().anyMatch(parameterEntity -> parameterEntity.getId().equals(PARAMETER2_ID)));
143 public void shouldDeleteAllParametersByType() {
144 ElementInfo parameterParentElement = new ElementInfo();
145 parameterParentElement.setId(new Id(PARAMETERS_PARENT_ID));
146 ElementInfo parameter1 = new ElementInfo();
147 parameter1.setId(new Id(PARAMETER1_ID));
148 ElementInfo parameter2 = new ElementInfo();
149 parameter2.setId(new Id(PARAMETER2_ID));
150 parameterParentElement.setSubElements(new ArrayList<>());
151 parameterParentElement.getSubElements().add(parameter1);
152 parameterParentElement.getSubElements().add(parameter2);
154 Optional<ElementInfo> elementOptional = Optional.of(parameterParentElement);
156 doReturn(elementOptional).when(zusammenAdaptorMock)
157 .getElementInfoByName(any(SessionContext.class), any(ElementContext.class), isNull(),
158 eq(WorkflowElementType.INPUTS.name()));
160 parameterRepository.deleteAll(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT);
161 verify(zusammenAdaptorMock)
162 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
163 eq("Delete all INPUT"));
166 @Test(expected = IllegalStateException.class)
167 public void shouldFailIfParentElementDoesNotExist() {
168 doReturn(Optional.empty()).when(zusammenAdaptorMock)
169 .getElementInfoByName(any(SessionContext.class), any(ElementContext.class), isNull(),
170 eq(WorkflowElementType.INPUTS.name()));
171 parameterRepository.deleteAll(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT);
175 public void shouldCreateParameter() {
176 ZusammenElement zusammenParentElement = new ZusammenElement();
177 zusammenParentElement.setElementId(new Id(PARAMETERS_PARENT_ID));
178 ZusammenElement zusammenElement = new ZusammenElement();
179 zusammenElement.setElementId(new Id(PARAMETER1_ID));
180 zusammenParentElement.addSubElement(zusammenElement);
181 doReturn(zusammenParentElement).when(zusammenAdaptorMock)
182 .saveElement(any(SessionContext.class), any(ElementContext.class),
183 any(ZusammenElement.class), eq("Create WorkflowVersion Parameter Element"));
184 ParameterEntity parameterEntity = new ParameterEntity("test_input_parameter");
185 parameterEntity.setType(ParameterType.INTEGER);
186 parameterEntity.setMandatory(true);
188 ParameterEntity returnedParameter =
189 parameterRepository.create(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT, parameterEntity);
190 verify(zusammenAdaptorMock)
191 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
192 eq("Create WorkflowVersion Parameter Element"));
193 assertEquals(PARAMETER1_ID, returnedParameter.getId());