Update third party versions in ccsdk/apps
[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.ArgumentMatchers;
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;
70
71 @RunWith(SpringJUnit4ClassRunner.class)
72 @DataJpaTest
73 @ActiveProfiles("test")
74 public class SpringServiceIntTest {
75     @Autowired
76     TestEntityManager entityManager;
77     @SpyBean
78     SpringService springService;
79     @Autowired
80     NamePersister namePersister;
81     @Autowired
82     @Qualifier("policyMgrRestTempBuilder")
83     RestTemplateBuilder policyMgrRestTempBuilder;
84     @Mock
85     RestTemplate restTemplate;
86     @Autowired
87     PolicyDetailsRepository policyDetailsRepo;
88     @Autowired
89     ServiceParameterRepository serviceParamRepo;
90     @Autowired
91     AaiServiceImpl aaiServiceImpl;
92     @Autowired
93     RestServiceImpl restServiceImpl;
94     @Autowired
95     ExternalInterfaceRespository extIntRepo;
96     @Autowired
97     GeneratedNameRespository repository;
98
99     @Before
100     public void setup() {
101         doReturn(restTemplate).when(policyMgrRestTempBuilder).build();
102     }
103
104     @Test
105     public void testObjects() {
106         assertNotNull(entityManager);
107         assertNotNull(namePersister);
108         assertNotNull(springService);
109     }
110
111     @Test
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");
121
122         namePersister.persist(name);
123         name = namePersister.findByElementTypeAndNameAndReleased("VNF", "abcd6ytx", null);
124         assertNotNull(name);
125     }
126
127     @SuppressWarnings("unchecked")
128     @Test
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(ArgumentMatchers.any(RequestEntity.class), ArgumentMatchers.any(Class.class))).thenReturn(resp);
133         Mockito.lenient().when(aaiServiceImpl.validate(ArgumentMatchers.anyString(), ArgumentMatchers.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")));
137     }
138
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");
148
149         List<Map<String, String>> elements = new ArrayList<>();
150         elements.add(vnfMap);
151         NameGenRequest request = new NameGenRequest();
152         request.setElements(elements);
153
154         return request;
155     }
156
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);
164
165         return request;
166     }
167
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>>>() {});
174         return respObj;
175     }
176
177     @SuppressWarnings("unchecked")
178     @Test
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(ArgumentMatchers.any(RequestEntity.class), ArgumentMatchers.any(Class.class))).thenReturn(resp);
184         Mockito.lenient().when(aaiServiceImpl.validate(ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).thenReturn(true);
185         restServiceImpl.generateNetworkElementName(request);
186     }
187
188     @Test
189     public void testRestGenerateNetworkElementName_exp() throws Exception {
190         NameGenRequest request = nameGenRequest_1();
191         doThrow(new NengException("")).when(springService).genNetworkElementName(request);
192         restServiceImpl.generateNetworkElementName(request);
193     }
194
195     @Test
196     public void testRestReleaseNetworkElementName() throws Exception {
197         NameGenRequest request = nameGenRequestRelease();
198         restServiceImpl.releaseNetworkElementName(request);
199     }
200
201     @Test
202     public void testRestReleaseNetworkElementName_exp() throws Exception {
203         NameGenRequest request = nameGenRequestRelease();
204         doThrow(new NengException("")).when(springService).releaseNetworkElementName(request);
205         restServiceImpl.releaseNetworkElementName(request);
206     }
207
208     @Test
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);
214         
215         Response policyResponse = restServiceImpl.getPolicyResponse("JQINSRIOV.Config_MS_SriovBigJson.1.xml");
216         assertNotNull(policyResponse);
217     }
218
219     @Test
220     public void testRestAddPolicyToDB_exp() throws Exception {
221         Map<String, Object> policy = new HashMap<>();
222         policy.put("policyName", "policyname");
223         policy.put("policyValue", "policyname");
224
225         doThrow(new NengException("")).when(springService).addPolicy(policy);
226         restServiceImpl.addPolicyToDb(policy);
227     }
228     
229     @Test
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=");
239         
240         extIntRepo.save(extInt);
241         ExternalInterface extIntDb = extIntRepo.findById(100).get();
242         
243         assertNotNull(extIntDb);
244         assertEquals("nodes/generic-vnfs?vnf-name=",extIntDb.getUrlSuffix());
245     }
246
247     @Test
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");
254         gn.setPrefix("DG");
255         gn.setSuffix("ESP");
256         gn.setCreatedBy("test");
257         gn.setCreatedTime(new Timestamp(System.currentTimeMillis()));
258         
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");
264         
265         Mockito.lenient().when(aaiServiceImpl.validate(ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).thenReturn(true);
266         
267         List<Map<String,String>> elList = new ArrayList<>();
268         elList.add(reqMap);
269         NameGenRequest request = new NameGenRequest();
270         request.setElements(elList);
271         restServiceImpl.generateNetworkElementName(request);
272         
273         List<GeneratedName> newGn = repository.findByExternalId("VQA-UN81");
274         assertTrue(newGn != null);
275         assertTrue(newGn.size() == 1);
276         assertEquals("DG001ESP1", newGn.get(0).getName());
277     }
278     
279 }