40bbc77faad61d5ad45f6d6b77e9d64fbb419bd0
[sdc.git] /
1 package org.openecomp.sdc.vendorlicense;
2
3 import org.junit.Assert;
4 import org.mockito.InjectMocks;
5 import org.mockito.Mock;
6 import org.mockito.MockitoAnnotations;
7 import org.mockito.Spy;
8 import org.openecomp.sdc.vendorlicense.dao.*;
9 import org.openecomp.sdc.vendorlicense.dao.types.EntitlementPoolEntity;
10 import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity;
11 import org.openecomp.sdc.vendorlicense.facade.impl.VendorLicenseFacadeImpl;
12 import org.openecomp.sdc.vendorlicense.impl.VendorLicenseManagerImpl;
13 import org.openecomp.sdc.versioning.VersioningManager;
14 import org.openecomp.sdc.versioning.dao.types.Version;
15 import org.openecomp.sdc.versioning.types.VersionInfo;
16 import org.testng.annotations.BeforeMethod;
17 import org.testng.annotations.Test;
18
19 import java.lang.reflect.Field;
20 import java.lang.reflect.Modifier;
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.HashSet;
24 import java.util.List;
25 import java.util.Set;
26
27 import static org.mockito.Matchers.anyObject;
28 import static org.mockito.Mockito.doReturn;
29 import static org.mockito.Mockito.never;
30 import static org.mockito.Mockito.verify;
31
32 /**
33  * This test just verifies Feature Group Get and List APIs.
34  */
35 public class VendorLicenseFacadeImplTest {
36     //JUnit Test Cases using Mockito
37     private static final Version VERSION01 = new Version(0, 1);
38     public static final String EP1 = "ep1";
39     public static final String MRN = "mrn";
40     public static final String VLM_ID = "VLM_ID";
41     public static final String USER = "USER1";
42
43
44     @Mock
45     private VendorLicenseModelDao vendorLicenseModelDao;
46
47     @Mock
48     private LicenseAgreementDao licenseAgreementDao;
49
50     @Mock
51     private FeatureGroupDao featureGroupDao;
52
53     @Mock
54     private EntitlementPoolDao entitlementPoolDao;
55
56     @Mock
57     private LicenseKeyGroupDao licenseKeyGroupDao;
58
59     @Mock
60     private VersioningManager versioningManager;
61
62     @InjectMocks
63     @Spy
64     private VendorLicenseFacadeImpl vendorLicenseFacadeImpl;
65
66     @BeforeMethod
67     public void setUp() throws Exception{
68         MockitoAnnotations.initMocks(this);
69     }
70
71     @Test
72     public void testGetFeatureGroupWhenMRNNull () {
73         resetFieldModifiers();
74
75         FeatureGroupEntity featureGroup = createFeatureGroup();
76
77         VersionInfo info = new VersionInfo();
78         info.getViewableVersions().add(VERSION01);
79         info.setActiveVersion(VERSION01);
80
81         Set<String> entitlementPoolIds;
82         entitlementPoolIds = new HashSet<>();
83         entitlementPoolIds.add(EP1);
84
85         EntitlementPoolEntity ep = createEP();
86
87         featureGroup.setEntitlementPoolIds(entitlementPoolIds);
88
89         doReturn(info).when(vendorLicenseFacadeImpl).getVersionInfo(anyObject(),anyObject(),anyObject());
90         doReturn(featureGroup).when(featureGroupDao).get(featureGroup);
91         doReturn(ep).when(entitlementPoolDao).get(anyObject());
92         doReturn(MRN).when(entitlementPoolDao).getManufacturerReferenceNumber(anyObject());
93         FeatureGroupEntity retrieved = vendorLicenseFacadeImpl.getFeatureGroup(featureGroup, USER);
94         Assert.assertEquals(MRN, retrieved.getManufacturerReferenceNumber());
95     }
96
97     @Test
98     public void testListFeatureGroups () {
99         resetFieldModifiers();
100
101         FeatureGroupEntity featureGroup = createFeatureGroup();
102
103         Collection<FeatureGroupEntity> featureGroups = new ArrayList<FeatureGroupEntity>();
104         featureGroups.add(featureGroup);
105
106         VersionInfo info = new VersionInfo();
107         info.getViewableVersions().add(VERSION01);
108         info.setActiveVersion(VERSION01);
109
110         EntitlementPoolEntity ep = createEP();
111
112         doReturn(info).when(vendorLicenseFacadeImpl).getVersionInfo(anyObject(),anyObject(),anyObject());
113         doReturn(featureGroup).when(featureGroupDao).get(featureGroup);
114         doReturn(ep).when(entitlementPoolDao).get(anyObject());
115         doReturn(MRN).when(entitlementPoolDao).getManufacturerReferenceNumber(anyObject());
116         Collection<FeatureGroupEntity> retrieved = vendorLicenseFacadeImpl.listFeatureGroups(VLM_ID,
117             VERSION01, USER);
118         retrieved.stream().forEach(fg -> Assert.assertEquals(MRN,fg.getManufacturerReferenceNumber()));
119     }
120
121     private void resetFieldModifiers() {
122         try {
123             Field fgField = VendorLicenseFacadeImpl.class.getDeclaredField("featureGroupDao");
124             fgField.setAccessible(true);
125             Field modifiersField = Field.class.getDeclaredField("modifiers");
126             modifiersField.setAccessible(true);
127             modifiersField.setInt(fgField, fgField.getModifiers() & ~Modifier.FINAL);
128             fgField.set(null, featureGroupDao);
129
130             Field epField = VendorLicenseFacadeImpl.class.getDeclaredField("entitlementPoolDao");
131             epField.setAccessible(true);
132             modifiersField = Field.class.getDeclaredField("modifiers");
133             modifiersField.setAccessible(true);
134             modifiersField.setInt(epField, epField.getModifiers() & ~Modifier.FINAL);
135             epField.set(null, entitlementPoolDao);
136         } catch(NoSuchFieldException | IllegalAccessException e)
137         {
138             org.testng.Assert.fail();
139         }
140     }
141
142     private FeatureGroupEntity createFeatureGroup() {
143         FeatureGroupEntity featureGroup = new FeatureGroupEntity(VLM_ID, VERSION01, USER);
144         featureGroup.setManufacturerReferenceNumber(null);
145         VersionInfo info = new VersionInfo();
146         info.getViewableVersions().add(VERSION01);
147         info.setActiveVersion(VERSION01);
148
149         Set<String> entitlementPoolIds;
150         entitlementPoolIds = new HashSet<>();
151         entitlementPoolIds.add(EP1);
152
153         featureGroup.setEntitlementPoolIds(entitlementPoolIds);
154         return featureGroup;
155     }
156
157     private EntitlementPoolEntity createEP() {
158         EntitlementPoolEntity ep = new EntitlementPoolEntity(VLM_ID,VERSION01, EP1);
159         ep.setManufacturerReferenceNumber(MRN);
160         return ep;
161     }
162
163 }