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.any;
23 import static org.mockito.ArgumentMatchers.eq;
24 import static org.mockito.ArgumentMatchers.isNull;
25 import static org.mockito.Mockito.doReturn;
26 import static org.mockito.Mockito.verify;
27 import static org.onap.sdc.common.zusammen.services.ZusammenElementUtil.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.common.versioning.persistence.zusammen.ZusammenSessionContextCreator;
48 import org.onap.sdc.common.zusammen.services.ZusammenAdaptor;
49 import org.onap.sdc.workflow.persistence.impl.types.WorkflowElementType;
50 import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
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";
59 private static final SessionContext SESSION_CONTEXT = new SessionContext();
63 private ZusammenAdaptor zusammenAdaptorMock;
65 private ZusammenSessionContextCreator contextCreatorMock;
67 private ArtifactRepositoryImpl artifactRepository;
71 doReturn(SESSION_CONTEXT).when(contextCreatorMock).create();
75 public void shouldUpdateArtifact() throws IOException {
77 InputStream inputStreamMock = IOUtils.toInputStream("some test data for my input stream", "UTF-8");
78 ArtifactEntity artifactMock = new ArtifactEntity(FILE_NAME, inputStreamMock);
80 artifactRepository.update(ITEM1_ID, VERSION1_ID, artifactMock);
81 verify(zusammenAdaptorMock)
82 .saveElement(eq(SESSION_CONTEXT), any(ElementContext.class), any(ZusammenElement.class),
83 eq("Update WorkflowVersion Artifact Element"));
87 public void shouldGetArtifactWhenExist() throws IOException {
89 ZusammenElement artifactElement = buildStructuralElement(WorkflowElementType.ARTIFACT.name(), Action.UPDATE);
90 artifactElement.setData(IOUtils.toInputStream("some test data for my input stream", "UTF-8"));
91 artifactElement.getInfo().addProperty(FILE_NAME_PROPERTY, FILE_NAME);
92 Optional<Element> elementOptional = Optional.of(artifactElement);
94 doReturn(elementOptional).when(zusammenAdaptorMock)
95 .getElementByName(eq(SESSION_CONTEXT), any(ElementContext.class), isNull(),
96 eq(WorkflowElementType.ARTIFACT.name()));
98 Optional<ArtifactEntity> result = artifactRepository.get(ITEM1_ID, VERSION1_ID);
99 assertTrue(result.isPresent());
100 assertEquals(FILE_NAME,result.get().getFileName());
101 verify(zusammenAdaptorMock).getElementByName(eq(SESSION_CONTEXT), any(ElementContext.class), isNull(),
102 eq(WorkflowElementType.ARTIFACT.name()));
106 public void shouldReturnOptionalEmptyWhenDoesNotExist() {
108 doReturn(Optional.empty()).when(zusammenAdaptorMock)
109 .getElementByName(eq(SESSION_CONTEXT), any(ElementContext.class), isNull(),
110 eq(WorkflowElementType.ARTIFACT.name()));
112 Optional<ArtifactEntity> result = artifactRepository.get(ITEM1_ID, VERSION1_ID);
113 verify(zusammenAdaptorMock).getElementByName(eq(SESSION_CONTEXT), any(ElementContext.class), isNull(),
114 eq(WorkflowElementType.ARTIFACT.name()));
115 assertFalse(result.isPresent());
119 public void shouldCreateArtifactStructure() {
120 artifactRepository.createStructure(ITEM1_ID, VERSION1_ID);
121 verify(zusammenAdaptorMock)
122 .saveElement(eq(SESSION_CONTEXT), any(ElementContext.class), any(ZusammenElement.class),
123 eq("Create WorkflowVersion Artifact Element"));
127 public void shouldDeleteArtifact() {
128 artifactRepository.delete(ITEM1_ID,VERSION1_ID);
129 verify(zusammenAdaptorMock).saveElement(eq(SESSION_CONTEXT), any(ElementContext.class), any(ZusammenElement.class),
130 eq("Delete WorkflowVersion Artifact Data"));
134 public void shouldReturnTrueIfExists() {
135 ElementInfo elementInfo = new ElementInfo();
136 elementInfo.setId(new Id("test_id"));
137 Info info = new Info();
138 info.addProperty(FILE_NAME_PROPERTY, "test_fileName");
139 elementInfo.setInfo(info);
141 doReturn(Optional.of(elementInfo)).when(zusammenAdaptorMock)
142 .getElementInfoByName(eq(SESSION_CONTEXT), any(ElementContext.class), isNull(),
143 eq(WorkflowElementType.ARTIFACT.name()));
145 assertTrue(artifactRepository.isExist(ITEM1_ID, VERSION1_ID));