push addional code
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-license-manager / src / test / java / org / openecomp / sdc / vendorlicense / LicenseKeyGroupTest.java
1 package org.openecomp.sdc.vendorlicense;
2
3 import org.openecomp.sdc.common.errors.CoreException;
4 import org.openecomp.sdc.vendorlicense.dao.LicenseKeyGroupDao;
5 import org.openecomp.sdc.vendorlicense.dao.LicenseKeyGroupDaoFactory;
6 import org.openecomp.sdc.vendorlicense.dao.types.LicenseKeyGroupEntity;
7 import org.openecomp.sdc.vendorlicense.dao.types.LicenseKeyType;
8 import org.openecomp.sdc.vendorlicense.dao.types.MultiChoiceOrOther;
9 import org.openecomp.sdc.vendorlicense.dao.types.OperationalScope;
10 import org.openecomp.sdc.vendorlicense.impl.VendorLicenseManagerImpl;
11 import org.openecomp.sdc.versioning.dao.types.Version;
12 import org.openecomp.core.nosqldb.api.NoSqlDb;
13 import org.openecomp.core.nosqldb.factory.NoSqlDbFactory;
14 import org.openecomp.core.util.UniqueValueUtil;
15 import org.openecomp.core.utilities.CommonMethods;
16 import org.testng.Assert;
17 import org.testng.annotations.BeforeClass;
18 import org.testng.annotations.Test;
19
20 import java.util.Collection;
21 import java.util.Collections;
22 import java.util.HashSet;
23 import java.util.Set;
24
25 public class LicenseKeyGroupTest {
26
27   public static final String LKG1_NAME = "LKG1 name";
28   private static final Version VERSION01 = new Version(0, 1);
29   private static final String USER1 = "user1";
30   public static String vlm1Id;
31   public static String vlm2Id;
32   private static VendorLicenseManager vendorLicenseManager = new VendorLicenseManagerImpl();
33   private static LicenseKeyGroupDao licenseKeyGroupDao;
34   private static NoSqlDb noSqlDb;
35   private static String lkg1Id;
36   private static String lkg2Id;
37
38   public static LicenseKeyGroupEntity createLicenseKeyGroup(String vlmId, Version version,
39                                                             String name, String desc,
40                                                             LicenseKeyType type,
41                                                             MultiChoiceOrOther<OperationalScope> operationalScope) {
42     LicenseKeyGroupEntity licenseKeyGroup = new LicenseKeyGroupEntity();
43     licenseKeyGroup.setVendorLicenseModelId(vlmId);
44     licenseKeyGroup.setVersion(version);
45     licenseKeyGroup.setName(name);
46     licenseKeyGroup.setDescription(desc);
47     licenseKeyGroup.setType(type);
48     licenseKeyGroup.setOperationalScope(operationalScope);
49     return licenseKeyGroup;
50   }
51
52   @BeforeClass
53   private void init() {
54     licenseKeyGroupDao = LicenseKeyGroupDaoFactory.getInstance().createInterface();
55     noSqlDb = NoSqlDbFactory.getInstance().createInterface();
56
57     vlm1Id = vendorLicenseManager.createVendorLicenseModel(VendorLicenseModelTest
58         .createVendorLicenseModel("vendor1 name " + CommonMethods.nextUuId(), "vlm1Id dec",
59             "icon1"), USER1).getId();
60     vlm2Id = vendorLicenseManager.createVendorLicenseModel(VendorLicenseModelTest
61             .createVendorLicenseModel("vendor2 name " + CommonMethods.nextUuId(), "vlm2 dec", "icon2"),
62         USER1).getId();
63   }
64
65   @Test
66   public void createTest() {
67     lkg1Id = testCreate(vlm1Id, LKG1_NAME);
68   }
69
70   private String testCreate(String vlmId, String name) {
71     Set<OperationalScope> opScopeChoices = new HashSet<>();
72     opScopeChoices.add(OperationalScope.CPU);
73     opScopeChoices.add(OperationalScope.VM);
74     opScopeChoices.add(OperationalScope.Tenant);
75     opScopeChoices.add(OperationalScope.Data_Center);
76     LicenseKeyGroupEntity lkg1 =
77         createLicenseKeyGroup(vlmId, VERSION01, name, "LKG1 dec", LicenseKeyType.One_Time,
78             new MultiChoiceOrOther<>(opScopeChoices, null));
79     String lkg1Id = vendorLicenseManager.createLicenseKeyGroup(lkg1, USER1).getId();
80     lkg1.setId(lkg1Id);
81
82     LicenseKeyGroupEntity loadedLkg1 = licenseKeyGroupDao.get(lkg1);
83     Assert.assertTrue(loadedLkg1.equals(lkg1));
84     return lkg1Id;
85   }
86
87   @Test(dependsOnMethods = {"createTest"})
88   public void testCreateWithExistingName_negative() {
89     try {
90       LicenseKeyGroupEntity lkg1 =
91           createLicenseKeyGroup(vlm1Id, VERSION01, LKG1_NAME, "LKG1 dec", LicenseKeyType.One_Time,
92               new MultiChoiceOrOther<>(Collections.singleton(OperationalScope.Other),
93                   "other op scope"));
94       vendorLicenseManager.createLicenseKeyGroup(lkg1, USER1).getId();
95       Assert.fail();
96     } catch (CoreException e) {
97       Assert.assertEquals(e.code().id(), UniqueValueUtil.UNIQUE_VALUE_VIOLATION);
98     }
99   }
100
101   @Test(dependsOnMethods = {"createTest"})
102   public void testCreateWithExistingNameUnderOtherVlm() {
103     testCreate(vlm2Id, LKG1_NAME);
104   }
105
106   @Test(dependsOnMethods = {"testCreateWithExistingName_negative"})
107   public void updateAndGetTest() {
108     LicenseKeyGroupEntity lkg1 =
109         licenseKeyGroupDao.get(new LicenseKeyGroupEntity(vlm1Id, VERSION01, lkg1Id));
110     Set<OperationalScope> opScopeChoices = new HashSet<>();
111     opScopeChoices.add(OperationalScope.Other);
112     lkg1.setOperationalScope(new MultiChoiceOrOther<>(opScopeChoices, "op scope1 updated"));
113     lkg1.setDescription("LKG1 dec updated");
114
115     vendorLicenseManager.updateLicenseKeyGroup(lkg1, USER1);
116
117     LicenseKeyGroupEntity loadedLkg1 = vendorLicenseManager.getLicenseKeyGroup(lkg1, USER1);
118     Assert.assertTrue(loadedLkg1.equals(lkg1));
119
120   }
121
122   @Test(dependsOnMethods = {"updateAndGetTest"})
123   public void listTest() {
124     Set<OperationalScope> opScopeChoices = new HashSet<>();
125     opScopeChoices.add(OperationalScope.Network_Wide);
126     LicenseKeyGroupEntity lkg2 =
127         createLicenseKeyGroup(vlm1Id, VERSION01, "LKG2", "LKG2 dec", LicenseKeyType.Universal,
128             new MultiChoiceOrOther<>(opScopeChoices, null));
129     lkg2Id = vendorLicenseManager.createLicenseKeyGroup(lkg2, USER1).getId();
130     lkg2.setId(lkg2Id);
131
132     Collection<LicenseKeyGroupEntity> loadedLkgs =
133         vendorLicenseManager.listLicenseKeyGroups(vlm1Id, null, USER1);
134     Assert.assertEquals(loadedLkgs.size(), 2);
135     for (LicenseKeyGroupEntity loadedLkg : loadedLkgs) {
136       if (lkg2Id.equals(loadedLkg.getId())) {
137         Assert.assertTrue(loadedLkg.equals(lkg2));
138       }
139     }
140   }
141
142   @Test(dependsOnMethods = {"listTest"})
143   public void deleteTest() {
144     vendorLicenseManager
145         .deleteLicenseKeyGroup(new LicenseKeyGroupEntity(vlm1Id, VERSION01, lkg1Id), USER1);
146
147     LicenseKeyGroupEntity loadedLkg1 =
148         licenseKeyGroupDao.get(new LicenseKeyGroupEntity(vlm1Id, VERSION01, lkg1Id));
149     Assert.assertEquals(loadedLkg1, null);
150
151     Collection<LicenseKeyGroupEntity> loadedLkgs =
152         licenseKeyGroupDao.list(new LicenseKeyGroupEntity(vlm1Id, VERSION01, null));
153     Assert.assertEquals(loadedLkgs.size(), 1);
154     Assert.assertEquals(loadedLkgs.iterator().next().getId(), lkg2Id);
155   }
156
157   @Test(dependsOnMethods = "deleteTest")
158   public void testCreateWithRemovedName() {
159     testCreate(vlm1Id, LKG1_NAME);
160   }
161 }
162