Use versioning, zusammen and session libs from sdc-common-be
[sdc/sdc-workflow-designer.git] / workflow-designer-be / src / test / java / org / onap / sdc / workflow / persistence / impl / ArtifactRepositoryTest.java
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.onap.sdc.workflow.persistence.impl;
18
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;
28
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;
51
52 @RunWith(MockitoJUnitRunner.class)
53 public class ArtifactRepositoryTest {
54
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();
60
61
62     @Mock
63     private ZusammenAdaptor zusammenAdaptorMock;
64     @Mock
65     private ZusammenSessionContextCreator contextCreatorMock;
66     @InjectMocks
67     private ArtifactRepositoryImpl artifactRepository;
68
69     @Before
70     public void setUp() {
71         doReturn(SESSION_CONTEXT).when(contextCreatorMock).create();
72     }
73
74     @Test
75     public void shouldUpdateArtifact() throws IOException {
76
77         InputStream inputStreamMock = IOUtils.toInputStream("some test data for my input stream", "UTF-8");
78         ArtifactEntity artifactMock = new ArtifactEntity(FILE_NAME, inputStreamMock);
79
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"));
84     }
85
86     @Test
87     public void shouldGetArtifactWhenExist() throws IOException {
88
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);
93
94         doReturn(elementOptional).when(zusammenAdaptorMock)
95                                  .getElementByName(eq(SESSION_CONTEXT), any(ElementContext.class), isNull(),
96                                          eq(WorkflowElementType.ARTIFACT.name()));
97
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()));
103     }
104
105     @Test
106     public void shouldReturnOptionalEmptyWhenDoesNotExist() {
107
108         doReturn(Optional.empty()).when(zusammenAdaptorMock)
109                                  .getElementByName(eq(SESSION_CONTEXT), any(ElementContext.class), isNull(),
110                                          eq(WorkflowElementType.ARTIFACT.name()));
111
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());
116     }
117
118     @Test
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"));
124     }
125
126     @Test
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"));
131     }
132
133     @Test
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);
140
141         doReturn(Optional.of(elementInfo)).when(zusammenAdaptorMock)
142                              .getElementInfoByName(eq(SESSION_CONTEXT), any(ElementContext.class), isNull(),
143                                      eq(WorkflowElementType.ARTIFACT.name()));
144
145         assertTrue(artifactRepository.isExist(ITEM1_ID, VERSION1_ID));
146     }
147
148 }