a12b1219e89943ec6456d365a283297f8e1d2d5a
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / impl / NetworkManagerImplTest.java
1 /*
2  * Copyright © 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.openecomp.sdc.vendorsoftwareproduct.impl;
18
19
20 import org.mockito.InjectMocks;
21 import org.mockito.Mock;
22 import org.mockito.MockitoAnnotations;
23 import org.mockito.Spy;
24 import org.openecomp.sdc.common.errors.CoreException;
25 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
26 import org.openecomp.sdc.vendorsoftwareproduct.CompositionEntityDataManager;
27 import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDao;
28 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
29 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
30 import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
31 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
32 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
33 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
34 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Network;
35 import org.openecomp.sdc.versioning.dao.types.Version;
36 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
37 import org.testng.Assert;
38 import org.testng.annotations.AfterMethod;
39 import org.testng.annotations.BeforeMethod;
40 import org.testng.annotations.Test;
41
42 import java.util.Arrays;
43 import java.util.Collection;
44
45 import static org.mockito.Matchers.anyObject;
46 import static org.mockito.Mockito.*;
47
48 public class NetworkManagerImplTest {
49
50   private static final String VSP_ID = "vsp";
51   private static final String USER_ID = "test_user1";
52   private static final Version VERSION = new Version("version_id");
53   private static final String NETWORK1_ID = "network1";
54   private static final String NETWORK2_ID = "network2";
55   private static final String tenant = "dox";
56
57   @Mock
58   private NetworkDao networkDaoMock;
59   @Mock
60   private CompositionEntityDataManager compositionEntityDataManagerMock;
61   @Mock
62   private VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao;
63
64   @InjectMocks
65   @Spy
66   private NetworkManagerImpl networkManager;
67
68   static NetworkEntity createNetwork(String vspId, Version version, String networkId) {
69     NetworkEntity networkEntity = new NetworkEntity(vspId, version, networkId);
70     Network networkData = new Network();
71     networkData.setName(networkId + " name");
72     networkData.setDhcp(true);
73     networkEntity.setNetworkCompositionData(networkData);
74     return networkEntity;
75   }
76
77   @BeforeMethod
78   public void setUp() throws Exception {
79     MockitoAnnotations.initMocks(this);
80     SessionContextProviderFactory.getInstance().createInterface().create(USER_ID, tenant);
81   }
82
83   @AfterMethod
84   public void tearDown() {
85     networkManager = null;
86     SessionContextProviderFactory.getInstance().createInterface().close();
87   }
88
89   @Test
90   public void testListWhenNone() {
91     Collection<NetworkEntity> networks =
92         networkManager.listNetworks(VSP_ID, null);
93     Assert.assertEquals(networks.size(), 0);
94   }
95
96   @Test
97   public void testList() {
98     doReturn(Arrays.asList(
99         createNetwork(VSP_ID, VERSION, NETWORK1_ID),
100         createNetwork(VSP_ID, VERSION, NETWORK2_ID)))
101         .when(networkDaoMock).list(anyObject());
102
103     Collection<NetworkEntity> actual = networkManager.listNetworks(VSP_ID, VERSION);
104     Assert.assertEquals(actual.size(), 2);
105   }
106
107   @Test
108   public void testCreateOnUploadVsp_negative() {
109     testCreate_negative(new NetworkEntity(VSP_ID, VERSION, null),
110         VendorSoftwareProductErrorCodes.VSP_COMPOSITION_EDIT_NOT_ALLOWED);
111   }
112
113   @Test
114   public void testUpdateNonExistingNetworkId_negative() {
115     testUpdate_negative(VSP_ID, VERSION, NETWORK1_ID,
116         VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
117   }
118
119   @Test
120   public void testIllegalUpdateOnUploadVsp() {
121     doReturn(createNetwork(VSP_ID, VERSION, NETWORK1_ID))
122         .when(networkDaoMock).get(anyObject());
123
124     CompositionEntityValidationData toBeReturned =
125         new CompositionEntityValidationData(CompositionEntityType.network, NETWORK1_ID);
126     toBeReturned.setErrors(Arrays.asList("error1", "error2"));
127     doReturn(toBeReturned)
128         .when(compositionEntityDataManagerMock)
129         .validateEntity(anyObject(), anyObject(), anyObject());
130     doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(),anyObject());
131
132     NetworkEntity networkEntity = new NetworkEntity(VSP_ID, VERSION, NETWORK1_ID);
133     Network networkData = new Network();
134     networkData.setName(NETWORK1_ID + " name updated");
135     networkData.setDhcp(false);
136     networkEntity.setNetworkCompositionData(networkData);
137
138     CompositionEntityValidationData validationData =
139         networkManager.updateNetwork(networkEntity);
140     Assert.assertNotNull(validationData);
141     Assert.assertEquals(validationData.getErrors().size(), 2);
142
143     verify(networkDaoMock, never()).update(networkEntity);
144   }
145
146   @Test
147   public void testGetNonExistingNetworkId_negative() {
148     testGet_negative(VSP_ID, VERSION, NETWORK1_ID,
149         VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
150   }
151
152   @Test
153   public void testGet() {
154     NetworkEntity network = createNetwork(VSP_ID, VERSION, NETWORK1_ID);
155     doReturn(network)
156         .when(networkDaoMock).get(anyObject());
157     doReturn("schema string").when(networkManager).getCompositionSchema(anyObject());
158     doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(),anyObject());
159
160     CompositionEntityResponse<Network> response =
161         networkManager.getNetwork(VSP_ID, VERSION, NETWORK1_ID);
162     Assert.assertEquals(response.getId(), network.getId());
163     Assert.assertEquals(response.getData(), network.getNetworkCompositionData());
164     Assert.assertNotNull(response.getSchema());
165   }
166
167   @Test(dependsOnMethods = "testList")
168   public void testDeleteOnUploadVsp_negative() {
169     testDelete_negative(VSP_ID, VERSION, NETWORK1_ID,
170         VendorSoftwareProductErrorCodes.VSP_COMPOSITION_EDIT_NOT_ALLOWED);
171   }
172
173   private void testCreate_negative(NetworkEntity network, String expectedErrorCode) {
174     try {
175       doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(),anyObject());
176       networkManager.createNetwork(network);
177       Assert.fail();
178     } catch (CoreException exception) {
179       Assert.assertEquals(exception.code().id(), expectedErrorCode);
180     }
181   }
182
183   private void testGet_negative(String vspId, Version version, String networkId,
184                                 String expectedErrorCode) {
185     try {
186       networkManager.getNetwork(vspId, version, networkId);
187       Assert.fail();
188     } catch (CoreException exception) {
189       Assert.assertEquals(exception.code().id(), expectedErrorCode);
190     }
191   }
192
193   private void testUpdate_negative(String vspId, Version version, String networkId,
194                                    String expectedErrorCode) {
195     try {
196       networkManager.updateNetwork(new NetworkEntity(vspId, version, networkId));
197       Assert.fail();
198     } catch (CoreException exception) {
199       Assert.assertEquals(exception.code().id(), expectedErrorCode);
200     }
201   }
202
203   private void testList_negative(String vspId, Version version, String expectedErrorCode) {
204     try {
205       networkManager.listNetworks(vspId, version);
206       Assert.fail();
207     } catch (CoreException exception) {
208       Assert.assertEquals(exception.code().id(), expectedErrorCode);
209     }
210   }
211
212   private void testDelete_negative(String vspId, Version version, String networkId,
213                                    String expectedErrorCode) {
214     try {
215       doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(),anyObject());
216       networkManager.deleteNetwork(vspId, version, networkId);
217       Assert.fail();
218     } catch (CoreException exception) {
219       Assert.assertEquals(exception.code().id(), expectedErrorCode);
220     }
221   }
222 }