2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2018 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.onap.ccsdk.apps.ms.neng.core.service;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.Mockito.doReturn;
27 import static org.mockito.Mockito.doThrow;
28 import static org.mockito.Mockito.when;
30 import com.fasterxml.jackson.core.type.TypeReference;
31 import com.fasterxml.jackson.databind.DeserializationFeature;
32 import com.fasterxml.jackson.databind.ObjectMapper;
33 import java.sql.Timestamp;
34 import java.util.ArrayList;
35 import java.util.HashMap;
36 import java.util.List;
38 import javax.ws.rs.core.Response;
39 import org.junit.Before;
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 import org.mockito.Matchers;
43 import org.mockito.Mock;
44 import org.mockito.Mockito;
45 import org.onap.ccsdk.apps.ms.neng.core.exceptions.NengException;
46 import org.onap.ccsdk.apps.ms.neng.core.persistence.NamePersister;
47 import org.onap.ccsdk.apps.ms.neng.core.resource.model.NameGenRequest;
48 import org.onap.ccsdk.apps.ms.neng.core.resource.model.NameGenResponse;
49 import org.onap.ccsdk.apps.ms.neng.core.service.rs.RestServiceImpl;
50 import org.onap.ccsdk.apps.ms.neng.persistence.entity.ExternalInterface;
51 import org.onap.ccsdk.apps.ms.neng.persistence.entity.GeneratedName;
52 import org.onap.ccsdk.apps.ms.neng.persistence.entity.PolicyDetails;
53 import org.onap.ccsdk.apps.ms.neng.persistence.repository.ExternalInterfaceRespository;
54 import org.onap.ccsdk.apps.ms.neng.persistence.repository.GeneratedNameRespository;
55 import org.onap.ccsdk.apps.ms.neng.persistence.repository.PolicyDetailsRepository;
56 import org.onap.ccsdk.apps.ms.neng.persistence.repository.ServiceParameterRepository;
57 import org.onap.ccsdk.apps.ms.neng.service.extinf.impl.AaiServiceImpl;
58 import org.springframework.beans.factory.annotation.Autowired;
59 import org.springframework.beans.factory.annotation.Qualifier;
60 import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
61 import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
62 import org.springframework.boot.test.mock.mockito.SpyBean;
63 import org.springframework.boot.web.client.RestTemplateBuilder;
64 import org.springframework.http.HttpStatus;
65 import org.springframework.http.RequestEntity;
66 import org.springframework.http.ResponseEntity;
67 import org.springframework.test.context.ActiveProfiles;
68 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
69 import org.springframework.web.client.RestTemplate;
71 @RunWith(SpringJUnit4ClassRunner.class)
73 @ActiveProfiles("test")
74 public class SpringServiceIntTest {
76 TestEntityManager entityManager;
78 SpringService springService;
80 NamePersister namePersister;
82 @Qualifier("policyMgrRestTempBuilder")
83 RestTemplateBuilder policyMgrRestTempBuilder;
85 RestTemplate restTemplate;
87 PolicyDetailsRepository policyDetailsRepo;
89 ServiceParameterRepository serviceParamRepo;
91 AaiServiceImpl aaiServiceImpl;
93 RestServiceImpl restServiceImpl;
95 ExternalInterfaceRespository extIntRepo;
97 GeneratedNameRespository repository;
100 public void setup() {
101 doReturn(restTemplate).when(policyMgrRestTempBuilder).build();
105 public void testObjects() {
106 assertNotNull(entityManager);
107 assertNotNull(namePersister);
108 assertNotNull(springService);
112 public void testNamePersiser() throws Exception {
113 GeneratedName name = new GeneratedName();
114 name.setName("abcd6ytx");
115 name.setPrefix("dlpv");
116 name.setSuffix("ytx");
117 name.setSequenceNumber(006L);
118 name.setElementType("VNF");
119 name.setGeneratedNameId(1000);
120 name.setExternalId("EXT-11");
122 namePersister.persist(name);
123 name = namePersister.findByElementTypeAndNameAndReleased("VNF", "abcd6ytx", null);
127 @SuppressWarnings("unchecked")
129 public void testGenName_1() throws Exception {
130 ResponseEntity<Object> resp = new ResponseEntity<Object>(
131 getConfigResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml"), HttpStatus.OK);
132 Mockito.lenient().when(restTemplate.exchange(Matchers.any(RequestEntity.class), Matchers.any(Class.class))).thenReturn(resp);
133 Mockito.lenient().when(aaiServiceImpl.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(true);
134 NameGenRequest request = nameGenRequest_1();
135 NameGenResponse genresp = springService.genNetworkElementName(request);
136 assertTrue("vnf-name".equals(genresp.getElements().get(0).get("resource-name")));
139 NameGenRequest nameGenRequest_1() {
140 Map<String, String> vnfMap = new HashMap<>();
141 vnfMap.put("external-key", "VQA-UN8");
142 vnfMap.put("policy-instance-name", "JQINSRIOV.Config_MS_SriovBigJson.1.xml");
143 vnfMap.put("complex", "vnfunfc");
144 vnfMap.put("NF_NAMING_CODE", "xyFg12");
145 vnfMap.put("resource-name", "vnf-name");
146 vnfMap.put("naming-type", "VNF");
147 vnfMap.put("nf-role", "vPE");
149 List<Map<String, String>> elements = new ArrayList<>();
150 elements.add(vnfMap);
151 NameGenRequest request = new NameGenRequest();
152 request.setElements(elements);
157 NameGenRequest nameGenRequestRelease() {
158 NameGenRequest request = new NameGenRequest();
159 Map<String, String> vnfMap = new HashMap<>();
160 vnfMap.put("external-key", "VQA-UN8");
161 List<Map<String, String>> elements = new ArrayList<>();
162 elements.add(vnfMap);
163 request.setElements(elements);
168 Object getConfigResponse(String policyName) throws Exception {
169 ObjectMapper objectmapper = new ObjectMapper();
170 objectmapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
171 PolicyDetails policyDetails = policyDetailsRepo.findPolicyResponseByName(policyName);
172 List<Map<Object, Object>> respObj = objectmapper.readValue(policyDetails.getPolicyResponse(),
173 new TypeReference<List<Map<Object, Object>>>() {});
177 @SuppressWarnings("unchecked")
179 public void testRestGenerateNetworkElementName() throws Exception {
180 NameGenRequest request = nameGenRequest_1();
181 ResponseEntity<Object> resp = new ResponseEntity<Object>(
182 getConfigResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml"), HttpStatus.OK);
183 Mockito.lenient().when(restTemplate.exchange(Matchers.any(RequestEntity.class), Matchers.any(Class.class))).thenReturn(resp);
184 Mockito.lenient().when(aaiServiceImpl.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(true);
185 restServiceImpl.generateNetworkElementName(request);
189 public void testRestGenerateNetworkElementName_exp() throws Exception {
190 NameGenRequest request = nameGenRequest_1();
191 doThrow(new NengException("")).when(springService).genNetworkElementName(request);
192 restServiceImpl.generateNetworkElementName(request);
196 public void testRestReleaseNetworkElementName() throws Exception {
197 NameGenRequest request = nameGenRequestRelease();
198 restServiceImpl.releaseNetworkElementName(request);
202 public void testRestReleaseNetworkElementName_exp() throws Exception {
203 NameGenRequest request = nameGenRequestRelease();
204 doThrow(new NengException("")).when(springService).releaseNetworkElementName(request);
205 restServiceImpl.releaseNetworkElementName(request);
209 public void testRestAddPolicyToDb() throws Exception {
210 Map<String, Object> policy = new HashMap<>();
211 policy.put("policyName", "JQINSRIOV.Config_MS_SriovBigJson.1.xml");
212 policy.put("policyValue", "some policy");
213 restServiceImpl.addPolicyToDb(policy);
215 Response policyResponse = restServiceImpl.getPolicyResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml");
216 assertNotNull(policyResponse);
220 public void testRestAddPolicyToDB_exp() throws Exception {
221 Map<String, Object> policy = new HashMap<>();
222 policy.put("policyName", "policyname");
223 policy.put("policyValue", "policyname");
225 doThrow(new NengException("")).when(springService).addPolicy(policy);
226 restServiceImpl.addPolicyToDb(policy);
230 public void testExternalInterfaceRepo() throws Exception {
231 ExternalInterface extInt = new ExternalInterface();
232 extInt.setCreatedBy("user");
233 extInt.setCreatedTime(null);
234 extInt.setExternalInteraceId(100);
235 extInt.setLastUpdatedBy("user");
236 extInt.setParam("VNF");
237 extInt.setSystem("AAI");
238 extInt.setUrlSuffix("nodes/generic-vnfs?vnf-name=");
240 extIntRepo.save(extInt);
241 ExternalInterface extIntDb = extIntRepo.findById(100).get();
243 assertNotNull(extIntDb);
244 assertEquals("nodes/generic-vnfs?vnf-name=",extIntDb.getUrlSuffix());
248 public void testUpdateNetworkElementName() throws Exception {
249 GeneratedName gn = new GeneratedName();
250 gn.setExternalId("VQA-UN81");
251 gn.setSequenceNumber(1L);
252 gn.setElementType("VNF");
253 gn.setName("DG001ESP");
256 gn.setCreatedBy("test");
257 gn.setCreatedTime(new Timestamp(System.currentTimeMillis()));
259 namePersister.persist(gn);
260 Map<String, String> reqMap = new HashMap<String, String>();
261 reqMap.put("external-key","VQA-UN81");
262 reqMap.put("resource-name", "vnf-name");
263 reqMap.put("resource-value", "DG001ESP1");
265 Mockito.lenient().when(aaiServiceImpl.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(true);
267 List<Map<String,String>> elList = new ArrayList<>();
269 NameGenRequest request = new NameGenRequest();
270 request.setElements(elList);
271 restServiceImpl.generateNetworkElementName(request);
273 List<GeneratedName> newGn = repository.findByExternalId("VQA-UN81");
274 assertTrue(newGn != null);
275 assertTrue(newGn.size() == 1);
276 assertEquals("DG001ESP1", newGn.get(0).getName());