2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.vendorsoftwareproduct.impl;
23 import org.mockito.InjectMocks;
24 import org.mockito.Mock;
25 import org.mockito.MockitoAnnotations;
26 import org.mockito.Spy;
27 import org.openecomp.sdc.common.errors.CoreException;
28 import org.openecomp.sdc.logging.api.Logger;
29 import org.openecomp.sdc.logging.api.LoggerFactory;
30 import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDao;
31 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
32 import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
33 import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
34 import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
35 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
36 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
37 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Network;
38 import org.openecomp.sdc.versioning.dao.types.Version;
39 import org.openecomp.sdc.versioning.errors.VersioningErrorCodes;
40 import org.testng.Assert;
41 import org.testng.annotations.BeforeMethod;
42 import org.testng.annotations.Test;
44 import java.util.Arrays;
45 import java.util.Collection;
47 import static org.mockito.Matchers.anyObject;
48 import static org.mockito.Mockito.doReturn;
49 import static org.mockito.Mockito.never;
50 import static org.mockito.Mockito.verify;
52 public class NetworkManagerImplTest {
54 private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName());
56 private static final String USER1 = "networksTestUser1";
57 private static final String USER2 = "networksTestUser2";
58 private static final String VSP_ID = "vsp";
59 private static final Version VERSION = new Version(0, 1);
60 private static final String NETWORK1_ID = "network1";
61 private static final String NETWORK2_ID = "network2";
64 private NetworkDao networkDaoMock;
66 private CompositionEntityDataManager compositionEntityDataManagerMock;
69 private NetworkManagerImpl networkManager;
71 static NetworkEntity createNetwork(String vspId, Version version, String networkId) {
72 NetworkEntity networkEntity = new NetworkEntity(vspId, version, networkId);
73 Network networkData = new Network();
74 networkData.setName(networkId + " name");
75 networkData.setDhcp(true);
76 networkEntity.setNetworkCompositionData(networkData);
81 public void setUp() throws Exception {
82 MockitoAnnotations.initMocks(this);
86 public void testListWhenNone() {
87 Collection<NetworkEntity> networks =
88 networkManager.listNetworks(VSP_ID, null, USER1);
89 Assert.assertEquals(networks.size(), 0);
93 public void testList() {
94 doReturn(Arrays.asList(
95 createNetwork(VSP_ID, VERSION, NETWORK1_ID),
96 createNetwork(VSP_ID, VERSION, NETWORK2_ID)))
97 .when(networkDaoMock).list(anyObject());
99 Collection<NetworkEntity> actual = networkManager.listNetworks(VSP_ID, VERSION, USER1);
100 Assert.assertEquals(actual.size(), 2);
103 /* @Test(dependsOnMethods = "testListWhenNone")
104 public void testCreate() {
105 NETWORK1_ID = testCreate(VSP_ID);
108 private String testCreate(String vspId) {
109 NetworkEntity expected = new NetworkEntity(vspId, null, null);
110 Network networkData = new Network();
111 networkData.setName("network1 name");
112 networkData.setDhcp(true);
113 expected.setNetworkCompositionData(networkData);
116 NetworkEntity created = networkManager.createNetwork(expected, USER1);
117 Assert.assertNotNull(created);
118 expected.setId(created.getId());
119 expected.setVersion(VERSION01);
121 NetworkEntity actual = networkDaoMock.getNetwork(vspId, VERSION01, created.getId());
123 Assert.assertEquals(actual, expected);
124 return created.getId();
127 @Test(dependsOnMethods = {"testCreate"})
128 public void testCreateWithExistingName_negative() {
129 NetworkEntity network = new NetworkEntity(VSP_ID, null, null);
130 Network networkData = new Network();
131 networkData.setName("network1 name");
132 networkData.setDhcp(true);
133 network.setNetworkCompositionData(networkData);
134 testCreate_negative(network, USER1, UniqueValueUtil.UNIQUE_VALUE_VIOLATION);
138 public void testCreateOnUploadVsp_negative() {
139 testCreate_negative(new NetworkEntity(VSP_ID, VERSION, null), USER1,
140 VendorSoftwareProductErrorCodes.VSP_COMPOSITION_EDIT_NOT_ALLOWED);
143 /* @Test(dependsOnMethods = {"testCreate"})
144 public void testCreateWithExistingNameUnderOtherVsp() {
150 public void testUpdateNonExistingNetworkId_negative() {
151 testUpdate_negative(VSP_ID, VERSION, NETWORK1_ID, USER1,
152 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
156 public void testIllegalUpdateOnUploadVsp() {
157 doReturn(createNetwork(VSP_ID, VERSION, NETWORK1_ID))
158 .when(networkDaoMock).get(anyObject());
160 CompositionEntityValidationData toBeReturned =
161 new CompositionEntityValidationData(CompositionEntityType.network, NETWORK1_ID);
162 toBeReturned.setErrors(Arrays.asList("error1", "error2"));
163 doReturn(toBeReturned)
164 .when(compositionEntityDataManagerMock)
165 .validateEntity(anyObject(), anyObject(), anyObject());
167 NetworkEntity networkEntity = new NetworkEntity(VSP_ID, VERSION, NETWORK1_ID);
168 Network networkData = new Network();
169 networkData.setName(NETWORK1_ID + " name updated");
170 networkData.setDhcp(false);
171 networkEntity.setNetworkCompositionData(networkData);
173 CompositionEntityValidationData validationData =
174 networkManager.updateNetwork(networkEntity, USER1);
175 Assert.assertNotNull(validationData);
176 Assert.assertEquals(validationData.getErrors().size(), 2);
178 verify(networkDaoMock, never()).update(networkEntity);
182 public void testGetNonExistingNetworkId_negative() {
183 testGet_negative(VSP_ID, VERSION, NETWORK1_ID, USER1,
184 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
188 public void testGet() {
189 NetworkEntity network = createNetwork(VSP_ID, VERSION, NETWORK1_ID);
191 .when(networkDaoMock).get(anyObject());
192 doReturn("schema string").when(networkManager).getCompositionSchema(anyObject());
194 CompositionEntityResponse<Network> response =
195 networkManager.getNetwork(VSP_ID, VERSION, NETWORK1_ID, USER1);
196 Assert.assertEquals(response.getId(), network.getId());
197 Assert.assertEquals(response.getData(), network.getNetworkCompositionData());
198 Assert.assertNotNull(response.getSchema());
202 @Test(dependsOnMethods = {"testUpdateOnUploadVsp", "testList"})
203 public void testCreateWithERemovedName() {
207 @Test(dependsOnMethods = "testList")
208 public void testDeleteNonExistingNetworkId_negative() {
209 testDelete_negative(VSP_ID, "non existing network id", USER1, VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
213 @Test(dependsOnMethods = "testList")
214 public void testDelete() {
215 networkManager.deleteNetwork(VSP_ID, NETWORK1_ID, USER1);
216 NetworkEntity actual = networkDaoMock.getNetwork(VSP_ID, VERSION01, NETWORK1_ID);
217 Assert.assertNull(actual);
222 @Test(dependsOnMethods = "testDelete")
223 public void testDeleteList() {
224 NetworkEntity network3 = new NetworkEntity(VSP_ID, null, null);
225 network3.setName("network3 name");
226 network3.setDescription("network3 desc");
227 networkManager.createNetwork(network3, USER1);
229 networkManager.deleteNetworks(VSP_ID, USER1);
231 Collection<NetworkEntity> actual = networkManager.listNetworks(VSP_ID, null, USER1);
232 Assert.assertEquals(actual.size(), 0);
235 @Test(dependsOnMethods = "testList")
236 public void testDeleteOnUploadVsp_negative() {
237 testDelete_negative(VSP_ID, VERSION, NETWORK1_ID, USER1,
238 VendorSoftwareProductErrorCodes.VSP_COMPOSITION_EDIT_NOT_ALLOWED);
241 private void testCreate_negative(NetworkEntity network, String user, String expectedErrorCode) {
243 networkManager.createNetwork(network, user);
245 } catch (CoreException exception) {
246 log.debug("",exception);
247 Assert.assertEquals(exception.code().id(), expectedErrorCode);
251 private void testGet_negative(String vspId, Version version, String networkId, String user,
252 String expectedErrorCode) {
254 networkManager.getNetwork(vspId, version, networkId, user);
256 } catch (CoreException exception) {
257 log.debug("",exception);
258 Assert.assertEquals(exception.code().id(), expectedErrorCode);
262 private void testUpdate_negative(String vspId, Version version, String networkId, String user,
263 String expectedErrorCode) {
265 networkManager.updateNetwork(new NetworkEntity(vspId, version, networkId), user);
267 } catch (CoreException exception) {
268 log.debug("",exception);
269 Assert.assertEquals(exception.code().id(), expectedErrorCode);
273 private void testList_negative(String vspId, Version version, String user,
274 String expectedErrorCode) {
276 networkManager.listNetworks(vspId, version, user);
278 } catch (CoreException exception) {
279 log.debug("",exception);
280 Assert.assertEquals(exception.code().id(), expectedErrorCode);
284 private void testDelete_negative(String vspId, Version version, String networkId, String user,
285 String expectedErrorCode) {
287 networkManager.deleteNetwork(vspId, version, networkId, user);
289 } catch (CoreException exception) {
290 log.debug("",exception);
291 Assert.assertEquals(exception.code().id(), expectedErrorCode);