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.onap.sdc.workflow.persistence.impl;
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertTrue;
21 import static org.mockito.ArgumentMatchers.isNull;
22 import static org.mockito.Matchers.any;
23 import static org.mockito.Matchers.eq;
24 import static org.mockito.Mockito.doReturn;
25 import static org.mockito.Mockito.verify;
27 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
28 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
29 import com.amdocs.zusammen.datatypes.Id;
30 import com.amdocs.zusammen.datatypes.SessionContext;
31 import com.amdocs.zusammen.datatypes.item.ElementContext;
32 import com.amdocs.zusammen.datatypes.item.Info;
33 import java.util.ArrayList;
34 import java.util.Collection;
35 import java.util.Optional;
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.junit.runner.RunWith;
39 import org.mapstruct.ap.internal.util.Collections;
40 import org.mockito.InjectMocks;
41 import org.mockito.Mock;
42 import org.mockito.Spy;
43 import org.mockito.junit.MockitoJUnitRunner;
44 import org.onap.sdc.workflow.persistence.impl.types.ParameterPropertyName;
45 import org.onap.sdc.workflow.persistence.impl.types.WorkflowElementType;
46 import org.onap.sdc.workflow.persistence.types.ParameterEntity;
47 import org.onap.sdc.workflow.persistence.types.ParameterRole;
48 import org.onap.sdc.workflow.persistence.types.ParameterType;
49 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
50 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
52 @RunWith(MockitoJUnitRunner.class)
53 public class ParameterRepositoryTest {
55 private static final String ITEM1_ID = "item_id_1";
56 private static final String VERSION1_ID = "version_id_1";
57 private static final String PARAMETER1_ID = "parameter_id_1";
58 private static final String PARAMETER2_ID = "parameter_id_2";
59 private static final String PARAMETERS_PARENT_ID = "parameters_id";
63 private ZusammenAdaptor zusammenAdaptorMock;
66 private ParameterRepositoryImpl parameterRepository;
70 SessionContextProviderFactory.getInstance().createInterface().create("test_user", "workflow");
74 public void shouldGetParameterById() {
76 ElementInfo element = new ElementInfo();
77 element.setId(new Id(PARAMETER1_ID));
78 Info info = new Info();
79 info.setName("testInput");
80 info.addProperty(ParameterPropertyName.TYPE.name(), ParameterType.FLOAT.name());
81 info.addProperty(ParameterPropertyName.MANDATORY.name(), true);
82 element.setInfo(info);
83 doReturn(Optional.of(element)).when(zusammenAdaptorMock)
84 .getElementInfo(any(SessionContext.class), any(ElementContext.class),
85 eq(new Id(PARAMETER1_ID)));
86 ParameterEntity result = parameterRepository.get(ITEM1_ID, VERSION1_ID, PARAMETER1_ID);
87 verify(zusammenAdaptorMock)
88 .getElementInfo(any(SessionContext.class), any(ElementContext.class), eq(new Id(PARAMETER1_ID)));
89 assertEquals("testInput", result.getName());
95 public void shouldUpdateParameter() {
96 ParameterEntity parameterEntityToUpdate = new ParameterEntity();
97 parameterEntityToUpdate.setId(PARAMETER1_ID);
98 parameterEntityToUpdate.setName("Input1");
99 parameterEntityToUpdate.setMandatory(true);
100 parameterEntityToUpdate.setType(ParameterType.STRING);
102 parameterRepository.update(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT, parameterEntityToUpdate);
103 verify(zusammenAdaptorMock)
104 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
105 eq("Update WorkflowVersion Parameter"));
110 public void shouldCreateParameterStructure() {
111 parameterRepository.createStructure(ITEM1_ID, VERSION1_ID);
112 verify(zusammenAdaptorMock)
113 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
114 eq("Create WorkflowVersion INPUTS Element"));
115 verify(zusammenAdaptorMock)
116 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
117 eq("Create WorkflowVersion OUTPUTS Element"));
121 public void shouldDeleteParameter() {
122 parameterRepository.delete(ITEM1_ID, VERSION1_ID, PARAMETER1_ID);
123 verify(zusammenAdaptorMock)
124 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
125 eq("Delete Parameter with id parameter_id_1"));
130 public void shouldListParametersByType() {
132 ElementInfo parameter1 = new ElementInfo();
133 parameter1.setId(new Id(PARAMETER1_ID));
134 Info info1 = new Info();
135 info1.setName("input1");
136 info1.addProperty(ParameterPropertyName.TYPE.name(), "INTEGER");
137 info1.addProperty(ParameterPropertyName.MANDATORY.name(), true);
138 parameter1.setInfo(info1);
139 ElementInfo parameter2 = new ElementInfo();
140 parameter2.setId(new Id(PARAMETER2_ID));
141 Info info2 = new Info();
142 info2.setName("input2");
143 info2.addProperty(ParameterPropertyName.TYPE.name(), "STRING");
144 info2.addProperty(ParameterPropertyName.MANDATORY.name(), false);
145 parameter2.setInfo(info2);
146 Collection<ElementInfo> parameters = Collections.asSet(parameter1, parameter2);
147 doReturn(parameters).when(zusammenAdaptorMock)
148 .listElementsByName(any(SessionContext.class), any(ElementContext.class), isNull(),
149 eq(WorkflowElementType.INPUTS.name()));
150 Collection<ParameterEntity> results = parameterRepository.list(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT);
152 verify(zusammenAdaptorMock).listElementsByName(any(SessionContext.class), any(ElementContext.class), isNull(),
153 eq(WorkflowElementType.INPUTS.name()));
154 assertTrue(results.stream().anyMatch(parameterEntity -> parameterEntity.getId().equals(PARAMETER1_ID)));
155 assertTrue(results.stream().anyMatch(parameterEntity -> parameterEntity.getId().equals(PARAMETER2_ID)));
159 public void shouldDeleteAllParametersByType() {
160 ElementInfo parameterParentElement = new ElementInfo();
161 parameterParentElement.setId(new Id(PARAMETERS_PARENT_ID));
162 ElementInfo parameter1 = new ElementInfo();
163 parameter1.setId(new Id(PARAMETER1_ID));
164 ElementInfo parameter2 = new ElementInfo();
165 parameter2.setId(new Id(PARAMETER2_ID));
166 parameterParentElement.setSubElements(new ArrayList<>());
167 parameterParentElement.getSubElements().add(parameter1);
168 parameterParentElement.getSubElements().add(parameter2);
170 Optional<ElementInfo> elementOptional = Optional.of(parameterParentElement);
172 doReturn(elementOptional).when(zusammenAdaptorMock)
173 .getElementInfoByName(any(SessionContext.class), any(ElementContext.class), isNull(),
174 eq(WorkflowElementType.INPUTS.name()));
176 parameterRepository.deleteAll(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT);
177 verify(zusammenAdaptorMock)
178 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
179 eq("Delete all INPUT"));
182 @Test(expected = IllegalStateException.class)
183 public void shouldFailIfParentElementDoesNotExist() {
184 doReturn(Optional.empty()).when(zusammenAdaptorMock)
185 .getElementInfoByName(any(SessionContext.class), any(ElementContext.class), isNull(),
186 eq(WorkflowElementType.INPUTS.name()));
187 parameterRepository.deleteAll(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT);
191 public void shouldCreateParameter() {
192 ZusammenElement zusammenParentElement = new ZusammenElement();
193 zusammenParentElement.setElementId(new Id(PARAMETERS_PARENT_ID));
194 ZusammenElement zusammenElement = new ZusammenElement();
195 zusammenElement.setElementId(new Id(PARAMETER1_ID));
196 zusammenParentElement.addSubElement(zusammenElement);
197 doReturn(zusammenParentElement).when(zusammenAdaptorMock)
198 .saveElement(any(SessionContext.class), any(ElementContext.class),
199 any(ZusammenElement.class), eq("Create WorkflowVersion Parameter Element"));
200 ParameterEntity parameterEntity = new ParameterEntity("test_input_parameter");
201 parameterEntity.setType(ParameterType.INTEGER);
202 parameterEntity.setMandatory(true);
204 ParameterEntity returnedParameter =
205 parameterRepository.create(ITEM1_ID, VERSION1_ID, ParameterRole.INPUT, parameterEntity);
206 verify(zusammenAdaptorMock)
207 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
208 eq("Create WorkflowVersion Parameter Element"));
209 assertEquals(PARAMETER1_ID, returnedParameter.getId());