1 package org.openecomp.sdc.versioning.dao.impl.zusammen;
3 import com.amdocs.zusammen.datatypes.Id;
4 import com.amdocs.zusammen.datatypes.SessionContext;
5 import com.amdocs.zusammen.datatypes.UserInfo;
6 import com.amdocs.zusammen.datatypes.item.Info;
7 import com.amdocs.zusammen.datatypes.item.ItemVersion;
8 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
9 import com.amdocs.zusammen.datatypes.item.ItemVersionStatus;
10 import com.amdocs.zusammen.datatypes.item.SynchronizationStatus;
11 import org.mockito.ArgumentCaptor;
12 import org.mockito.InjectMocks;
13 import org.mockito.Mock;
14 import org.mockito.MockitoAnnotations;
15 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
16 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
17 import org.openecomp.sdc.versioning.dao.types.Version;
18 import org.openecomp.sdc.versioning.dao.types.VersionStatus;
19 import org.testng.Assert;
20 import org.testng.annotations.BeforeMethod;
21 import org.testng.annotations.Test;
23 import java.util.Date;
24 import java.util.List;
25 import java.util.Optional;
26 import java.util.stream.Collectors;
27 import java.util.stream.Stream;
29 import static org.mockito.Matchers.any;
30 import static org.mockito.Matchers.eq;
31 import static org.mockito.Matchers.isNull;
32 import static org.mockito.Mockito.doReturn;
33 import static org.mockito.Mockito.verify;
35 public class VersionZusammenDaoImplTest {
37 private static final String USER = "user1";
39 private ZusammenAdaptor zusammenAdaptorMock;
41 private VersionZusammenDaoImpl versionDao;
44 public void setUp() throws Exception {
45 MockitoAnnotations.initMocks(this);
46 SessionContextProviderFactory.getInstance().createInterface().create(USER);
50 public void testList() throws Exception {
51 String itemId = "itemId";
52 Id versionId1 = new Id("v1_id");
53 Id versionId2 = new Id("v2_id");
54 Id versionId3 = new Id("v3_id");
56 List<ItemVersion> zusammenVersions = Stream.of(
57 createZusammenVersion(versionId1, null, "version desc", "1.0", VersionStatus.Certified),
58 createZusammenVersion(versionId2, versionId1, "version desc", "2.0", VersionStatus.Certified
60 createZusammenVersion(versionId3, versionId2, "version desc", "3.0", VersionStatus.Draft))
61 .collect(Collectors.toList());
62 doReturn(zusammenVersions).when(zusammenAdaptorMock)
63 .listPublicVersions(eq(createZusammenContext()), eq(new Id(itemId)));
65 List<Version> versions = versionDao.list(itemId);
66 Assert.assertEquals(versions.size(), 3);
68 int zusammenVersionIndex;
69 for (Version version : versions) {
70 zusammenVersionIndex = versionId1.getValue().equals(version.getId())
72 : versionId2.getValue().equals(version.getId())
75 assetVersionEquals(version, zusammenVersions.get(zusammenVersionIndex));
80 public void testCreate() throws Exception {
85 public void testCreateBasedOn() throws Exception {
89 private void testCreate(String baseId) {
90 String itemId = "itemId";
91 Version version = new Version(1, 0);
92 version.setBaseId(baseId);
93 version.setName("version name");
94 version.setDescription("version description");
95 version.setStatus(VersionStatus.Draft);
97 doReturn(new Id("versionId")).when(zusammenAdaptorMock)
98 .createVersion(eq(createZusammenContext()), eq(new Id(itemId)),
99 baseId == null ? isNull(Id.class) : eq(new Id(baseId)), any(ItemVersionData.class));
101 ArgumentCaptor<ItemVersionData> capturedZusammenVersion =
102 ArgumentCaptor.forClass(ItemVersionData.class);
104 versionDao.create(itemId, version);
106 verify(zusammenAdaptorMock)
107 .createVersion(eq(createZusammenContext()), eq(new Id(itemId)),
108 baseId == null ? isNull(Id.class) : eq(new Id(baseId)),
109 capturedZusammenVersion.capture());
111 Info capturedInfo = capturedZusammenVersion.getValue().getInfo();
112 Assert.assertEquals(capturedInfo.getName(), version.getName());
113 Assert.assertEquals(capturedInfo.getDescription(), version.getDescription());
114 Assert.assertEquals(VersionStatus
115 .valueOf(capturedInfo.getProperty(VersionZusammenDaoImpl.ZusammenProperty.STATUS)),
116 version.getStatus());
117 Assert.assertEquals(capturedInfo.getProperty(VersionZusammenDaoImpl.ZusammenProperty.LABEL),
122 public void testUpdate() throws Exception {
123 String itemId = "itemId";
124 Version version = new Version(1, 0);
125 version.setId("versionId");
126 version.setBaseId("baseId");
127 version.setName("version name");
128 version.setDescription("version description");
129 version.setStatus(VersionStatus.Certified);
131 ArgumentCaptor<ItemVersionData> capturedZusammenVersion =
132 ArgumentCaptor.forClass(ItemVersionData.class);
134 versionDao.update(itemId, version);
136 verify(zusammenAdaptorMock)
137 .updateVersion(eq(createZusammenContext()), eq(new Id(itemId)), eq(new Id(version.getId())),
138 capturedZusammenVersion.capture());
140 Info capturedInfo = capturedZusammenVersion.getValue().getInfo();
141 Assert.assertEquals(capturedInfo.getName(), version.getName());
142 Assert.assertEquals(capturedInfo.getDescription(), version.getDescription());
143 Assert.assertEquals(VersionStatus
144 .valueOf(capturedInfo.getProperty(VersionZusammenDaoImpl.ZusammenProperty.STATUS)),
145 version.getStatus());
146 Assert.assertEquals(capturedInfo.getProperty(VersionZusammenDaoImpl.ZusammenProperty.LABEL),
151 public void testGetNonExisting() throws Exception {
152 Optional<Version> version = versionDao.get("itemId", new Version("versionId"));
154 Assert.assertEquals(version, Optional.empty());
158 public void testGet() throws Exception {
159 String itemId = "itemId";
160 String versionId = "versionId";
162 SessionContext zusammenContext = createZusammenContext();
163 Id itemIdObj = new Id(itemId);
164 Id versionIdObj = new Id(versionId);
166 ItemVersion zusammenPrivateVersion =
167 createZusammenVersion(versionIdObj, new Id("baseId"), "version desc updated", "2.0",
168 VersionStatus.Draft);
169 doReturn(zusammenPrivateVersion).when(zusammenAdaptorMock)
170 .getVersion(eq(zusammenContext), eq(itemIdObj), eq(versionIdObj));
172 doReturn(new ItemVersionStatus(SynchronizationStatus.UP_TO_DATE, true))
173 .when(zusammenAdaptorMock)
174 .getVersionStatus(eq(zusammenContext), eq(itemIdObj), eq(versionIdObj));
176 ItemVersion zusammenPublicVersion =
177 createZusammenVersion(versionIdObj, new Id("baseId"), "version desc", "2.0",
178 VersionStatus.Certified);
179 doReturn(zusammenPublicVersion).when(zusammenAdaptorMock)
180 .getPublicVersion(eq(zusammenContext), eq(itemIdObj), eq(versionIdObj));
182 Optional<Version> version = versionDao.get(itemId, new Version(versionId));
184 Assert.assertTrue(version.isPresent());
185 zusammenPrivateVersion.getData().getInfo()
186 .addProperty(VersionZusammenDaoImpl.ZusammenProperty.STATUS,
187 VersionStatus.Certified.name());
188 assetVersionEquals(version.get(), zusammenPrivateVersion);
191 // TODO: 12/20/2017 complete tests
193 public void testDelete() throws Exception {
198 public void testPublish() throws Exception {
203 public void testSync() throws Exception {
208 public void testForceSync() throws Exception {
213 public void testRevert() throws Exception {
218 public void testListRevisions() throws Exception {
222 private void assetVersionEquals(Version version, ItemVersion zusammenVersion) {
223 Assert.assertEquals(version.getId(), zusammenVersion.getId().getValue());
224 Assert.assertEquals(version.getBaseId(),
225 zusammenVersion.getBaseId() == null ? null : zusammenVersion.getBaseId().getValue());
226 Info info = zusammenVersion.getData().getInfo();
227 Assert.assertEquals(version.getName(), info.getName());
228 Assert.assertEquals(version.getDescription(), info.getDescription());
229 Assert.assertEquals(version.getStatus(),
230 VersionStatus.valueOf(info.getProperty(VersionZusammenDaoImpl.ZusammenProperty.STATUS)));
231 String label = info.getProperty(VersionZusammenDaoImpl.ZusammenProperty.LABEL).toString();
233 .assertEquals(version.getMajor(), Integer.parseInt(label.substring(0, label.indexOf('.'))));
234 Assert.assertEquals(version.getMinor(),
235 Integer.parseInt(label.substring(label.indexOf('.') + 1, label.length())));
236 Assert.assertEquals(version.getCreationTime(), zusammenVersion.getCreationTime());
237 Assert.assertEquals(version.getModificationTime(), zusammenVersion.getModificationTime());
240 private ItemVersion createZusammenVersion(Id id, Id baseId, String description, String label,
241 VersionStatus status) {
242 ItemVersion version = new ItemVersion();
244 version.setBaseId(baseId);
245 Info info = new Info();
246 info.setName(id + "_name");
247 info.setDescription(description);
248 info.addProperty(VersionZusammenDaoImpl.ZusammenProperty.LABEL, label);
249 info.addProperty(VersionZusammenDaoImpl.ZusammenProperty.STATUS, status.name());
250 ItemVersionData data = new ItemVersionData();
252 version.setData(data);
253 version.setCreationTime(new Date());
254 version.setModificationTime(new Date());
258 private SessionContext createZusammenContext() {
259 SessionContext sessionContext = new SessionContext();
260 sessionContext.setUser(new UserInfo(USER));
261 sessionContext.setTenant("dox");
262 return sessionContext;