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.onap.ccsdk.apps.ms.neng.core.exceptions.NengException;
45 import org.onap.ccsdk.apps.ms.neng.core.persistence.NamePersister;
46 import org.onap.ccsdk.apps.ms.neng.core.resource.model.NameGenRequest;
47 import org.onap.ccsdk.apps.ms.neng.core.resource.model.NameGenResponse;
48 import org.onap.ccsdk.apps.ms.neng.core.service.rs.RestServiceImpl;
49 import org.onap.ccsdk.apps.ms.neng.persistence.entity.ExternalInterface;
50 import org.onap.ccsdk.apps.ms.neng.persistence.entity.GeneratedName;
51 import org.onap.ccsdk.apps.ms.neng.persistence.entity.PolicyDetails;
52 import org.onap.ccsdk.apps.ms.neng.persistence.repository.ExternalInterfaceRespository;
53 import org.onap.ccsdk.apps.ms.neng.persistence.repository.GeneratedNameRespository;
54 import org.onap.ccsdk.apps.ms.neng.persistence.repository.PolicyDetailsRepository;
55 import org.onap.ccsdk.apps.ms.neng.persistence.repository.ServiceParameterRepository;
56 import org.onap.ccsdk.apps.ms.neng.service.extinf.impl.AaiServiceImpl;
57 import org.springframework.beans.factory.annotation.Autowired;
58 import org.springframework.beans.factory.annotation.Qualifier;
59 import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
60 import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
61 import org.springframework.boot.test.mock.mockito.SpyBean;
62 import org.springframework.boot.web.client.RestTemplateBuilder;
63 import org.springframework.http.HttpStatus;
64 import org.springframework.http.RequestEntity;
65 import org.springframework.http.ResponseEntity;
66 import org.springframework.test.context.ActiveProfiles;
67 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
68 import org.springframework.web.client.RestTemplate;
70 @RunWith(SpringJUnit4ClassRunner.class)
72 @ActiveProfiles("test")
73 public class SpringServiceIntTest {
75 TestEntityManager entityManager;
77 SpringService springService;
79 NamePersister namePersister;
81 @Qualifier("policyMgrRestTempBuilder")
82 RestTemplateBuilder policyMgrRestTempBuilder;
84 RestTemplate restTemplate;
86 PolicyDetailsRepository policyDetailsRepo;
88 ServiceParameterRepository serviceParamRepo;
90 AaiServiceImpl aaiServiceImpl;
92 RestServiceImpl restServiceImpl;
94 ExternalInterfaceRespository extIntRepo;
96 GeneratedNameRespository repository;
100 doReturn(restTemplate).when(policyMgrRestTempBuilder).build();
104 public void testObjects() {
105 assertNotNull(entityManager);
106 assertNotNull(namePersister);
107 assertNotNull(springService);
111 public void testNamePersiser() throws Exception {
112 GeneratedName name = new GeneratedName();
113 name.setName("abcd6ytx");
114 name.setPrefix("dlpv");
115 name.setSuffix("ytx");
116 name.setSequenceNumber(006L);
117 name.setElementType("VNF");
118 name.setGeneratedNameId(1000);
119 name.setExternalId("EXT-11");
121 namePersister.persist(name);
122 name = namePersister.findByElementTypeAndNameAndReleased("VNF", "abcd6ytx", null);
126 @SuppressWarnings("unchecked")
128 public void testGenName_1() throws Exception {
129 ResponseEntity<Object> resp = new ResponseEntity<Object>(
130 getConfigResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml"), HttpStatus.OK);
131 when(restTemplate.exchange(Matchers.any(RequestEntity.class), Matchers.any(Class.class))).thenReturn(resp);
132 when(aaiServiceImpl.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(true);
133 NameGenRequest request = nameGenRequest_1();
134 NameGenResponse genresp = springService.genNetworkElementName(request);
135 assertTrue("vnf-name".equals(genresp.getElements().get(0).get("resource-name")));
138 NameGenRequest nameGenRequest_1() {
139 Map<String, String> vnfMap = new HashMap<>();
140 vnfMap.put("external-key", "VQA-UN8");
141 vnfMap.put("policy-instance-name", "JQINSRIOV.Config_MS_SriovBigJson.1.xml");
142 vnfMap.put("complex", "vnfunfc");
143 vnfMap.put("NF_NAMING_CODE", "xyFg12");
144 vnfMap.put("resource-name", "vnf-name");
145 vnfMap.put("naming-type", "VNF");
146 vnfMap.put("nf-role", "vPE");
148 List<Map<String, String>> elements = new ArrayList<>();
149 elements.add(vnfMap);
150 NameGenRequest request = new NameGenRequest();
151 request.setElements(elements);
156 NameGenRequest nameGenRequestRelease() {
157 NameGenRequest request = new NameGenRequest();
158 Map<String, String> vnfMap = new HashMap<>();
159 vnfMap.put("external-key", "VQA-UN8");
160 List<Map<String, String>> elements = new ArrayList<>();
161 elements.add(vnfMap);
162 request.setElements(elements);
167 Object getConfigResponse(String policyName) throws Exception {
168 ObjectMapper objectmapper = new ObjectMapper();
169 objectmapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
170 PolicyDetails policyDetails = policyDetailsRepo.findPolicyResponseByName(policyName);
171 List<Map<Object, Object>> respObj = objectmapper.readValue(policyDetails.getPolicyResponse(),
172 new TypeReference<List<Map<Object, Object>>>() {});
176 @SuppressWarnings("unchecked")
178 public void testRestGenerateNetworkElementName() throws Exception {
179 NameGenRequest request = nameGenRequest_1();
180 ResponseEntity<Object> resp = new ResponseEntity<Object>(
181 getConfigResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml"), HttpStatus.OK);
182 when(restTemplate.exchange(Matchers.any(RequestEntity.class), Matchers.any(Class.class))).thenReturn(resp);
183 when(aaiServiceImpl.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(true);
184 restServiceImpl.generateNetworkElementName(request);
188 public void testRestGenerateNetworkElementName_exp() throws Exception {
189 NameGenRequest request = nameGenRequest_1();
190 doThrow(new NengException("")).when(springService).genNetworkElementName(request);
191 restServiceImpl.generateNetworkElementName(request);
195 public void testRestReleaseNetworkElementName() throws Exception {
196 NameGenRequest request = nameGenRequestRelease();
197 restServiceImpl.releaseNetworkElementName(request);
201 public void testRestReleaseNetworkElementName_exp() throws Exception {
202 NameGenRequest request = nameGenRequestRelease();
203 doThrow(new NengException("")).when(springService).releaseNetworkElementName(request);
204 restServiceImpl.releaseNetworkElementName(request);
208 public void testRestAddPolicyToDb() throws Exception {
209 Map<String, Object> policy = new HashMap<>();
210 policy.put("policyName", "JQINSRIOV.Config_MS_SriovBigJson.1.xml");
211 policy.put("policyValue", "some policy");
212 restServiceImpl.addPolicyToDb(policy);
214 Response policyResponse = restServiceImpl.getPolicyResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml");
215 assertNotNull(policyResponse);
219 public void testRestAddPolicyToDB_exp() throws Exception {
220 Map<String, Object> policy = new HashMap<>();
221 policy.put("policyName", "policyname");
222 policy.put("policyValue", "policyname");
224 doThrow(new NengException("")).when(springService).addPolicy(policy);
225 restServiceImpl.addPolicyToDb(policy);
229 public void testExternalInterfaceRepo() throws Exception {
230 ExternalInterface extInt = new ExternalInterface();
231 extInt.setCreatedBy("user");
232 extInt.setCreatedTime(null);
233 extInt.setExternalInteraceId(100);
234 extInt.setLastUpdatedBy("user");
235 extInt.setParam("VNF");
236 extInt.setSystem("AAI");
237 extInt.setUrlSuffix("nodes/generic-vnfs?vnf-name=");
239 extIntRepo.save(extInt);
240 ExternalInterface extIntDb = extIntRepo.findOne(100);
242 assertNotNull(extIntDb);
243 assertEquals("nodes/generic-vnfs?vnf-name=",extIntDb.getUrlSuffix());
247 public void testUpdateNetworkElementName() throws Exception {
248 GeneratedName gn = new GeneratedName();
249 gn.setExternalId("VQA-UN81");
250 gn.setSequenceNumber(1L);
251 gn.setElementType("VNF");
252 gn.setName("DG001ESP");
255 gn.setCreatedBy("test");
256 gn.setCreatedTime(new Timestamp(System.currentTimeMillis()));
258 namePersister.persist(gn);
259 Map<String, String> reqMap = new HashMap<String, String>();
260 reqMap.put("external-key","VQA-UN81");
261 reqMap.put("resource-name", "vnf-name");
262 reqMap.put("resource-value", "DG001ESP1");
264 when(aaiServiceImpl.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(true);
266 List<Map<String,String>> elList = new ArrayList<>();
268 NameGenRequest request = new NameGenRequest();
269 request.setElements(elList);
270 restServiceImpl.generateNetworkElementName(request);
272 List<GeneratedName> newGn = repository.findByExternalId("VQA-UN81");
273 assertTrue(newGn != null);
274 assertTrue(newGn.size() == 1);
275 assertEquals("DG001ESP1", newGn.get(0).getName());