737eea7b5ff5ef5fd027acc9592efd44cf382b7d
[ccsdk/apps.git] / ms / neng / src / test / java / org / onap / ccsdk / apps / ms / neng / core / service / SpringServiceIntTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : CCSDK.apps
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.ccsdk.apps.ms.neng.core.service;
22
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;
29
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;
37 import java.util.Map;
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;
69
70 @RunWith(SpringJUnit4ClassRunner.class)
71 @DataJpaTest
72 @ActiveProfiles("test")
73 public class SpringServiceIntTest {
74     @Autowired
75     TestEntityManager entityManager;
76     @SpyBean
77     SpringService springService;
78     @Autowired
79     NamePersister namePersister;
80     @Autowired
81     @Qualifier("policyMgrRestTempBuilder")
82     RestTemplateBuilder policyMgrRestTempBuilder;
83     @Mock
84     RestTemplate restTemplate;
85     @Autowired
86     PolicyDetailsRepository policyDetailsRepo;
87     @Autowired
88     ServiceParameterRepository serviceParamRepo;
89     @Autowired
90     AaiServiceImpl aaiServiceImpl;
91     @Autowired
92     RestServiceImpl restServiceImpl;
93     @Autowired
94     ExternalInterfaceRespository extIntRepo;
95     @Autowired
96     GeneratedNameRespository repository;
97
98     @Before
99     public void setup() {
100         doReturn(restTemplate).when(policyMgrRestTempBuilder).build();
101     }
102
103     @Test
104     public void testObjects() {
105         assertNotNull(entityManager);
106         assertNotNull(namePersister);
107         assertNotNull(springService);
108     }
109
110     @Test
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");
120
121         namePersister.persist(name);
122         name = namePersister.findByElementTypeAndNameAndReleased("VNF", "abcd6ytx", null);
123         assertNotNull(name);
124     }
125
126     @SuppressWarnings("unchecked")
127     @Test
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")));
136     }
137
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");
147
148         List<Map<String, String>> elements = new ArrayList<>();
149         elements.add(vnfMap);
150         NameGenRequest request = new NameGenRequest();
151         request.setElements(elements);
152
153         return request;
154     }
155
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);
163
164         return request;
165     }
166
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>>>() {});
173         return respObj;
174     }
175
176     @SuppressWarnings("unchecked")
177     @Test
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);
185     }
186
187     @Test
188     public void testRestGenerateNetworkElementName_exp() throws Exception {
189         NameGenRequest request = nameGenRequest_1();
190         doThrow(new NengException("")).when(springService).genNetworkElementName(request);
191         restServiceImpl.generateNetworkElementName(request);
192     }
193
194     @Test
195     public void testRestReleaseNetworkElementName() throws Exception {
196         NameGenRequest request = nameGenRequestRelease();
197         restServiceImpl.releaseNetworkElementName(request);
198     }
199
200     @Test
201     public void testRestReleaseNetworkElementName_exp() throws Exception {
202         NameGenRequest request = nameGenRequestRelease();
203         doThrow(new NengException("")).when(springService).releaseNetworkElementName(request);
204         restServiceImpl.releaseNetworkElementName(request);
205     }
206
207     @Test
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);
213         
214         Response policyResponse = restServiceImpl.getPolicyResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml");
215         assertNotNull(policyResponse);
216     }
217
218     @Test
219     public void testRestAddPolicyToDB_exp() throws Exception {
220         Map<String, Object> policy = new HashMap<>();
221         policy.put("policyName", "policyname");
222         policy.put("policyValue", "policyname");
223
224         doThrow(new NengException("")).when(springService).addPolicy(policy);
225         restServiceImpl.addPolicyToDb(policy);
226     }
227     
228     @Test
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=");
238         
239         extIntRepo.save(extInt);
240         ExternalInterface extIntDb = extIntRepo.findOne(100);
241         
242         assertNotNull(extIntDb);
243         assertEquals("nodes/generic-vnfs?vnf-name=",extIntDb.getUrlSuffix());
244     }
245
246     @Test
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");
253         gn.setPrefix("DG");
254         gn.setSuffix("ESP");
255         gn.setCreatedBy("test");
256         gn.setCreatedTime(new Timestamp(System.currentTimeMillis()));
257         
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");
263         
264         when(aaiServiceImpl.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(true);
265         
266         List<Map<String,String>> elList = new ArrayList<>();
267         elList.add(reqMap);
268         NameGenRequest request = new NameGenRequest();
269         request.setElements(elList);
270         restServiceImpl.generateNetworkElementName(request);
271         
272         List<GeneratedName> newGn = repository.findByExternalId("VQA-UN81");
273         assertTrue(newGn != null);
274         assertTrue(newGn.size() == 1);
275         assertEquals("DG001ESP1", newGn.get(0).getName());
276     }
277     
278 }