2 * Copyright © 2018 European Support Limited
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.openecomp.sdc.vendorsoftwareproduct.impl;
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.dao.NetworkDao;
27 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
28 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity;
29 import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
30 import org.openecomp.sdc.vendorsoftwareproduct.CompositionEntityDataManager;
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;
42 import java.util.Arrays;
43 import java.util.Collection;
45 import static org.mockito.Matchers.anyObject;
46 import static org.mockito.Mockito.doReturn;
47 import static org.mockito.Mockito.never;
48 import static org.mockito.Mockito.verify;
50 public class NetworkManagerImplTest {
52 private static final String VSP_ID = "vsp";
53 private static final String USER_ID = "test_user1";
54 private static final Version VERSION = new Version("version_id");
55 private static final String NETWORK1_ID = "network1";
56 private static final String NETWORK2_ID = "network2";
57 private static final String tenant = "dox";
60 private NetworkDao networkDaoMock;
62 private CompositionEntityDataManager compositionEntityDataManagerMock;
64 private VendorSoftwareProductInfoDao vendorSoftwareProductInfoDao;
68 private NetworkManagerImpl networkManager;
70 static NetworkEntity createNetwork(String vspId, Version version, String networkId) {
71 NetworkEntity networkEntity = new NetworkEntity(vspId, version, networkId);
72 Network networkData = new Network();
73 networkData.setName(networkId + " name");
74 networkData.setDhcp(true);
75 networkEntity.setNetworkCompositionData(networkData);
80 public void setUp() throws Exception {
81 MockitoAnnotations.initMocks(this);
82 SessionContextProviderFactory.getInstance().createInterface().create(USER_ID, tenant);
86 public void tearDown() {
87 networkManager = null;
88 SessionContextProviderFactory.getInstance().createInterface().close();
92 public void testListWhenNone() {
93 Collection<NetworkEntity> networks =
94 networkManager.listNetworks(VSP_ID, null);
95 Assert.assertEquals(networks.size(), 0);
99 public void testList() {
100 doReturn(Arrays.asList(
101 createNetwork(VSP_ID, VERSION, NETWORK1_ID),
102 createNetwork(VSP_ID, VERSION, NETWORK2_ID)))
103 .when(networkDaoMock).list(anyObject());
105 Collection<NetworkEntity> actual = networkManager.listNetworks(VSP_ID, VERSION);
106 Assert.assertEquals(actual.size(), 2);
110 public void testCreateOnUploadVsp_negative() {
111 testCreate_negative(new NetworkEntity(VSP_ID, VERSION, null),
112 VendorSoftwareProductErrorCodes.VSP_COMPOSITION_EDIT_NOT_ALLOWED);
116 public void testUpdateNonExistingNetworkId_negative() {
117 testUpdate_negative(VSP_ID, VERSION, NETWORK1_ID,
118 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
122 public void testIllegalUpdateOnUploadVsp() {
123 doReturn(createNetwork(VSP_ID, VERSION, NETWORK1_ID))
124 .when(networkDaoMock).get(anyObject());
126 CompositionEntityValidationData toBeReturned =
127 new CompositionEntityValidationData(CompositionEntityType.network, NETWORK1_ID);
128 toBeReturned.setErrors(Arrays.asList("error1", "error2"));
129 doReturn(toBeReturned)
130 .when(compositionEntityDataManagerMock)
131 .validateEntity(anyObject(), anyObject(), anyObject());
132 doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(),anyObject());
134 NetworkEntity networkEntity = new NetworkEntity(VSP_ID, VERSION, NETWORK1_ID);
135 Network networkData = new Network();
136 networkData.setName(NETWORK1_ID + " name updated");
137 networkData.setDhcp(false);
138 networkEntity.setNetworkCompositionData(networkData);
140 CompositionEntityValidationData validationData =
141 networkManager.updateNetwork(networkEntity);
142 Assert.assertNotNull(validationData);
143 Assert.assertEquals(validationData.getErrors().size(), 2);
145 verify(networkDaoMock, never()).update(networkEntity);
149 public void testGetNonExistingNetworkId_negative() {
150 testGet_negative(VSP_ID, VERSION, NETWORK1_ID,
151 VersioningErrorCodes.VERSIONABLE_SUB_ENTITY_NOT_FOUND);
155 public void testGet() {
156 NetworkEntity network = createNetwork(VSP_ID, VERSION, NETWORK1_ID);
158 .when(networkDaoMock).get(anyObject());
159 doReturn("schema string").when(networkManager).getCompositionSchema(anyObject());
160 doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(),anyObject());
162 CompositionEntityResponse<Network> response =
163 networkManager.getNetwork(VSP_ID, VERSION, NETWORK1_ID);
164 Assert.assertEquals(response.getId(), network.getId());
165 Assert.assertEquals(response.getData(), network.getNetworkCompositionData());
166 Assert.assertNotNull(response.getSchema());
169 @Test(dependsOnMethods = "testList")
170 public void testDeleteOnUploadVsp_negative() {
171 testDelete_negative(VSP_ID, VERSION, NETWORK1_ID,
172 VendorSoftwareProductErrorCodes.VSP_COMPOSITION_EDIT_NOT_ALLOWED);
175 private void testCreate_negative(NetworkEntity network, String expectedErrorCode) {
177 doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(),anyObject());
178 networkManager.createNetwork(network);
180 } catch (CoreException exception) {
181 Assert.assertEquals(exception.code().id(), expectedErrorCode);
185 private void testGet_negative(String vspId, Version version, String networkId,
186 String expectedErrorCode) {
188 networkManager.getNetwork(vspId, version, networkId);
190 } catch (CoreException exception) {
191 Assert.assertEquals(exception.code().id(), expectedErrorCode);
195 private void testUpdate_negative(String vspId, Version version, String networkId,
196 String expectedErrorCode) {
198 networkManager.updateNetwork(new NetworkEntity(vspId, version, networkId));
200 } catch (CoreException exception) {
201 Assert.assertEquals(exception.code().id(), expectedErrorCode);
205 private void testList_negative(String vspId, Version version, String expectedErrorCode) {
207 networkManager.listNetworks(vspId, version);
209 } catch (CoreException exception) {
210 Assert.assertEquals(exception.code().id(), expectedErrorCode);
214 private void testDelete_negative(String vspId, Version version, String networkId,
215 String expectedErrorCode) {
217 doReturn(false).when(vendorSoftwareProductInfoDao).isManual(anyObject(),anyObject());
218 networkManager.deleteNetwork(vspId, version, networkId);
220 } catch (CoreException exception) {
221 Assert.assertEquals(exception.code().id(), expectedErrorCode);