0fa67a9a0505fe577655f44be8bea3e4450f1b39
[sdc/sdc-workflow-designer.git] /
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.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;
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.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;
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
60
61     @Mock
62     private ZusammenAdaptor zusammenAdaptorMock;
63
64     @InjectMocks
65     private ArtifactRepositoryImpl artifactRepository;
66
67     @Before
68     public void setUp() {
69         SessionContextProviderFactory.getInstance().createInterface().create("test_user", "workflow");
70     }
71
72     @Test
73     public void shouldUpdateArtifact() throws IOException {
74
75         InputStream inputStreamMock = IOUtils.toInputStream("some test data for my input stream", "UTF-8");
76         ArtifactEntity artifactMock = new ArtifactEntity(FILE_NAME, inputStreamMock);
77
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"));
82     }
83
84     @Test
85     public void shouldGetArtifactWhenExist() throws IOException {
86
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);
91
92         doReturn(elementOptional).when(zusammenAdaptorMock)
93                                  .getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
94                                          eq(WorkflowElementType.ARTIFACT.name()));
95
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()));
101     }
102
103     @Test
104     public void shouldReturnOptionalEmptyWhenDoesNotExist() throws IOException {
105
106         doReturn(Optional.empty()).when(zusammenAdaptorMock)
107                                  .getElementByName(any(SessionContext.class), any(ElementContext.class), isNull(Id.class),
108                                          eq(WorkflowElementType.ARTIFACT.name()));
109
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());
114     }
115
116     @Test
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"));
122     }
123
124     @Test
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"));
129     }
130
131     @Test
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);
138
139         doReturn(Optional.of(elementInfo)).when(zusammenAdaptorMock)
140                              .getElementInfoByName(any(SessionContext.class), any(ElementContext.class), isNull(),
141                                      eq(WorkflowElementType.ARTIFACT.name()));
142
143         assertTrue(artifactRepository.isExist(ITEM1_ID, VERSION1_ID));
144     }
145
146 }