Unit Test coverage
[sdc/sdc-workflow-designer.git] / workflow-designer-be / src / test / java / org / onap / sdc / workflow / persistence / impl / ArtifactRepositoryTest.java
1 package org.onap.sdc.workflow.persistence.impl;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertTrue;
6 import static org.mockito.ArgumentMatchers.eq;
7 import static org.mockito.Matchers.any;
8 import static org.mockito.Matchers.isNull;
9 import static org.mockito.Mockito.doReturn;
10 import static org.mockito.Mockito.verify;
11 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement;
12
13 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
14 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
15 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
16 import com.amdocs.zusammen.datatypes.Id;
17 import com.amdocs.zusammen.datatypes.SessionContext;
18 import com.amdocs.zusammen.datatypes.item.Action;
19 import com.amdocs.zusammen.datatypes.item.ElementContext;
20 import com.amdocs.zusammen.datatypes.item.Info;
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.util.Optional;
24 import org.apache.commons.io.IOUtils;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.InjectMocks;
29 import org.mockito.Mock;
30 import org.mockito.junit.MockitoJUnitRunner;
31 import org.onap.sdc.workflow.persistence.types.ArtifactEntity;
32 import org.onap.sdc.workflow.persistence.impl.types.WorkflowElementType;
33 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
34 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
35
36 @RunWith(MockitoJUnitRunner.class)
37 public class ArtifactRepositoryTest {
38
39     private static final String FILE_NAME_PROPERTY = "fileName";
40     private static final String FILE_NAME = "fileName.txt";
41     private static final String ITEM1_ID = "item_id_1";
42     private static final String VERSION1_ID = "version_id_1";
43
44
45     @Mock
46     private ZusammenAdaptor zusammenAdaptorMock;
47
48     @InjectMocks
49     private ArtifactRepositoryImpl artifactRepository;
50
51     @Before
52     public void setUp() {
53         SessionContextProviderFactory.getInstance().createInterface().create("test_user", "workflow");
54     }
55
56     @Test
57     public void shouldUpdateArtifact() throws IOException {
58
59         InputStream inputStreamMock = IOUtils.toInputStream("some test data for my input stream", "UTF-8");
60         ArtifactEntity artifactMock = new ArtifactEntity(FILE_NAME, inputStreamMock);
61
62         artifactRepository.update(ITEM1_ID, VERSION1_ID, artifactMock);
63         verify(zusammenAdaptorMock)
64                 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
65                         eq("Update WorkflowVersion Artifact Element"));
66     }
67
68     @Test
69     public void shouldGetArtifactWhenExist() throws IOException {
70
71         ZusammenElement artifactElement = buildStructuralElement(WorkflowElementType.ARTIFACT.name(), Action.UPDATE);
72         artifactElement.setData(IOUtils.toInputStream("some test data for my input stream", "UTF-8"));
73         artifactElement.getInfo().addProperty(FILE_NAME_PROPERTY, FILE_NAME);
74         Optional<Element> elementOptional = Optional.of(artifactElement);
75
76         doReturn(elementOptional).when(zusammenAdaptorMock)
77                                  .getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
78                                          eq(WorkflowElementType.ARTIFACT.name()));
79
80         Optional<ArtifactEntity> result = artifactRepository.get(ITEM1_ID, VERSION1_ID);
81         assertTrue(result.isPresent());
82         assertEquals(FILE_NAME,result.get().getFileName());
83         verify(zusammenAdaptorMock).getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
84                 eq(WorkflowElementType.ARTIFACT.name()));
85     }
86
87     @Test
88     public void shouldReturnOptionalEmptyWhenDoesNotExist() throws IOException {
89
90         doReturn(Optional.empty()).when(zusammenAdaptorMock)
91                                  .getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
92                                          eq(WorkflowElementType.ARTIFACT.name()));
93
94         Optional<ArtifactEntity> result = artifactRepository.get(ITEM1_ID, VERSION1_ID);
95         verify(zusammenAdaptorMock).getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
96                 eq(WorkflowElementType.ARTIFACT.name()));
97         assertFalse(result.isPresent());
98     }
99
100     @Test
101     public void shouldCreateArtifactStructure() {
102         artifactRepository.createStructure(ITEM1_ID, VERSION1_ID);
103         verify(zusammenAdaptorMock)
104                 .saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
105                         eq("Create WorkflowVersion Artifact Element"));
106     }
107
108     @Test
109     public void shouldDeleteArtifact() {
110         artifactRepository.delete(ITEM1_ID,VERSION1_ID);
111         verify(zusammenAdaptorMock).saveElement(any(SessionContext.class), any(ElementContext.class), any(ZusammenElement.class),
112                 eq("Delete WorkflowVersion Artifact Data"));
113     }
114
115     @Test
116     public void shouldReturnTrueIfExists() {
117         ElementInfo elementInfo = new ElementInfo();
118         elementInfo.setId(new Id("test_id"));
119         Info info = new Info();
120         info.addProperty(FILE_NAME_PROPERTY, "test_fileName");
121         elementInfo.setInfo(info);
122
123         doReturn(Optional.of(elementInfo)).when(zusammenAdaptorMock)
124                              .getElementInfoByName(any(SessionContext.class), any(ElementContext.class), isNull(),
125                                      eq(WorkflowElementType.ARTIFACT.name()));
126
127         assertTrue(artifactRepository.isExist(ITEM1_ID, VERSION1_ID));
128     }
129
130 }