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.assertFalse;
21 import static org.junit.Assert.assertTrue;
22 import static org.mockito.ArgumentMatchers.eq;
23 import static org.mockito.Matchers.any;
24 import static org.mockito.Matchers.isNull;
25 import static org.mockito.Mockito.doReturn;
26 import static org.mockito.Mockito.verify;
27 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement;
29 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
30 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
31 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
32 import com.amdocs.zusammen.datatypes.Id;
33 import com.amdocs.zusammen.datatypes.SessionContext;
34 import com.amdocs.zusammen.datatypes.item.Action;
35 import com.amdocs.zusammen.datatypes.item.ElementContext;
36 import com.amdocs.zusammen.datatypes.item.Info;
37 import java.io.IOException;
38 import java.io.InputStream;
39 import java.util.Optional;
40 import org.apache.commons.io.IOUtils;
41 import org.junit.Before;
42 import org.junit.Test;
43 import org.junit.runner.RunWith;
44 import org.mockito.InjectMocks;
45 import org.mockito.Mock;
46 import org.mockito.junit.MockitoJUnitRunner;
47 import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
48 import org.onap.sdc.workflow.persistence.impl.types.WorkflowElementType;
49 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
50 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
52 @RunWith(MockitoJUnitRunner.class)
53 public class ArtifactRepositoryTest {
55 private static final String FILE_NAME_PROPERTY = "fileName";
56 private static final String FILE_NAME = "fileName.txt";
57 private static final String ITEM1_ID = "item_id_1";
58 private static final String VERSION1_ID = "version_id_1";
62 private ZusammenAdaptor zusammenAdaptorMock;
65 private ArtifactRepositoryImpl artifactRepository;
69 SessionContextProviderFactory.getInstance().createInterface().create("test_user", "workflow");
73 public void shouldUpdateArtifact() throws IOException {
75 InputStream inputStreamMock = IOUtils.toInputStream("some test data for my input stream", "UTF-8");
76 ArtifactEntity artifactMock = new ArtifactEntity(FILE_NAME, inputStreamMock);
78 artifactRepository.update(ITEM1_ID, VERSION1_ID, artifactMock);
79 verify(zusammenAdaptorMock)
80 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
81 eq("Update WorkflowVersion Artifact Element"));
85 public void shouldGetArtifactWhenExist() throws IOException {
87 ZusammenElement artifactElement = buildStructuralElement(WorkflowElementType.ARTIFACT.name(), Action.UPDATE);
88 artifactElement.setData(IOUtils.toInputStream("some test data for my input stream", "UTF-8"));
89 artifactElement.getInfo().addProperty(FILE_NAME_PROPERTY, FILE_NAME);
90 Optional<Element> elementOptional = Optional.of(artifactElement);
92 doReturn(elementOptional).when(zusammenAdaptorMock)
93 .getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
94 eq(WorkflowElementType.ARTIFACT.name()));
96 Optional<ArtifactEntity> result = artifactRepository.get(ITEM1_ID, VERSION1_ID);
97 assertTrue(result.isPresent());
98 assertEquals(FILE_NAME,result.get().getFileName());
99 verify(zusammenAdaptorMock).getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
100 eq(WorkflowElementType.ARTIFACT.name()));
104 public void shouldReturnOptionalEmptyWhenDoesNotExist() throws IOException {
106 doReturn(Optional.empty()).when(zusammenAdaptorMock)
107 .getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
108 eq(WorkflowElementType.ARTIFACT.name()));
110 Optional<ArtifactEntity> result = artifactRepository.get(ITEM1_ID, VERSION1_ID);
111 verify(zusammenAdaptorMock).getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
112 eq(WorkflowElementType.ARTIFACT.name()));
113 assertFalse(result.isPresent());
117 public void shouldCreateArtifactStructure() {
118 artifactRepository.createStructure(ITEM1_ID, VERSION1_ID);
119 verify(zusammenAdaptorMock)
120 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
121 eq("Create WorkflowVersion Artifact Element"));
125 public void shouldDeleteArtifact() {
126 artifactRepository.delete(ITEM1_ID,VERSION1_ID);
127 verify(zusammenAdaptorMock).saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
128 eq("Delete WorkflowVersion Artifact Data"));
132 public void shouldReturnTrueIfExists() {
133 ElementInfo elementInfo = new ElementInfo();
134 elementInfo.setId(new Id("test_id"));
135 Info info = new Info();
136 info.addProperty(FILE_NAME_PROPERTY, "test_fileName");
137 elementInfo.setInfo(info);
139 doReturn(Optional.of(elementInfo)).when(zusammenAdaptorMock)
140 .getElementInfoByName(any(SessionContext.class), any(ElementContext.class), isNull(),
141 eq(WorkflowElementType.ARTIFACT.name()));
143 assertTrue(artifactRepository.isExist(ITEM1_ID, VERSION1_ID));