b679e9ba830a4a34f20204aef497503714c7a52d
[ccsdk/apps.git] / ms / neng / src / test / java / org / onap / ccsdk / apps / ms / neng / core / service / SpringServiceTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : CCSDK.apps
4  * ================================================================================
5  * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (C) 2018 IBM.
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.ccsdk.apps.ms.neng.core.service;
24
25 import java.util.ArrayList;
26 import java.util.HashMap;
27 import java.util.List;
28 import java.util.Map;
29 import org.junit.Assert;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.InjectMocks;
33 import org.mockito.Matchers;
34 import org.mockito.Mock;
35 import org.mockito.Mockito;
36 import org.mockito.runners.MockitoJUnitRunner;
37 import org.onap.ccsdk.apps.ms.neng.core.exceptions.NengException;
38 import org.onap.ccsdk.apps.ms.neng.core.persistence.NamePersister;
39 import org.onap.ccsdk.apps.ms.neng.core.resource.model.HelloWorld;
40 import org.onap.ccsdk.apps.ms.neng.core.resource.model.NameGenRequest;
41 import org.onap.ccsdk.apps.ms.neng.core.validator.AaiNameValidator;
42 import org.onap.ccsdk.apps.ms.neng.core.validator.ExternalKeyValidator;
43 import org.onap.ccsdk.apps.ms.neng.persistence.entity.GeneratedName;
44 import org.onap.ccsdk.apps.ms.neng.persistence.entity.PolicyDetails;
45 import org.onap.ccsdk.apps.ms.neng.persistence.entity.ServiceParameter;
46 import org.onap.ccsdk.apps.ms.neng.persistence.repository.GeneratedNameRespository;
47 import org.onap.ccsdk.apps.ms.neng.persistence.repository.PolicyDetailsRepository;
48 import org.onap.ccsdk.apps.ms.neng.persistence.repository.ServiceParameterRepository;
49
50 @RunWith(MockitoJUnitRunner.class)
51 public class SpringServiceTest {
52
53     @Mock
54     ExternalKeyValidator externalKeyValidator;
55     @Mock
56     ServiceParameter param;
57     @Mock
58     ServiceParameterRepository serviceParamRepo;
59     @Mock
60     PolicyDetails policyDetails;
61     @Mock
62     PolicyDetailsRepository policyDetailsRepository;
63     @Mock
64     GeneratedNameRespository generatedNameRepository;
65     @Mock
66     AaiNameValidator aaiNameValidator;
67     @Mock
68     NamePersister namePersister;
69
70     @InjectMocks
71     SpringServiceImpl springserviceImpl;
72
73     Map<String, String> req = new HashMap<>();
74     List<Map<String, String>> rsp = new ArrayList<>();
75     NameGenRequest request = new NameGenRequest();
76
77     {
78         req.put("external-key", "Xyx-zzk");
79         req.put("policy-instance-name", "testDbPolicy66");
80         req.put("COMPLEX", "TRLAKDG");
81         req.put("NFC-NAMING-CODE", "ESP");
82         req.put("CLOUD_REGION_ID", "SSR");
83         req.put("NF_CODE", "X1234");
84         req.put("resource-name", "vm-name");
85         req.put("naming-type", "VM");
86         req.put("nf-role", "vPE");
87         rsp.add(req);
88         request.setElements(rsp);
89     }
90
91     @Test(expected = Exception.class)
92     public void genNetworkElementNameTest() throws Exception {
93         Mockito.when(externalKeyValidator.isPresent(req.get("external-key"))).thenReturn(false);
94         Mockito.when(serviceParamRepo.findByName("use_db_policy")).thenReturn(param);
95         springserviceImpl.genNetworkElementName(request);
96     }
97     
98     @Test
99     public void genNetworkElementNameTest_empty_elements() throws Exception {
100         NameGenRequest request = new NameGenRequest();
101         request.setElements(new ArrayList<>());
102         springserviceImpl.genNetworkElementName(request);
103
104     }
105     
106     @Test
107     public void genNetworkElementNameTest_extkey_error_3() throws Exception {
108         NameGenRequest request = new NameGenRequest();
109         List<Map<String, String>> rsp = new ArrayList<>();
110         request.setElements(rsp);
111         springserviceImpl.genNetworkElementName(request);
112     }
113     
114     @Test(expected = Exception.class)
115     public void genNetworkElementNameTest_useDb() throws Exception {
116         Mockito.when(externalKeyValidator.isPresent(req.get("external-key"))).thenReturn(false);
117         Mockito.when(serviceParamRepo.findByName("use_db_policy")).thenReturn(param);
118         request.setUseDb(true);
119         springserviceImpl.genNetworkElementName(request);
120     }
121
122     @Test
123     public void getPolicyDetailsTest() {
124         Mockito.when(policyDetailsRepository.findPolicyResponseByName("testDbPolicy66")).thenReturn(policyDetails);
125         org.junit.Assert.assertNotNull(springserviceImpl.getPolicyDetails("testDbPolicy66"));
126     }
127
128     @Test
129     public void addPolicy() throws Exception {
130         springserviceImpl.addPolicy(req);
131     }
132
133     @Test
134     public void releaseNetworkElementNameTest() throws Exception {
135         GeneratedName gn = new GeneratedName();
136         List<GeneratedName> generatedNameList = new ArrayList<>();
137         generatedNameList.add(gn);
138
139         Mockito.when(generatedNameRepository.findByExternalId(req.get("external-key"))).thenReturn(generatedNameList);
140         Assert.assertNotNull(springserviceImpl.releaseNetworkElementName(request));
141     }
142     
143     @Test(expected = Exception.class)
144     public void releaseNetworkElementNameTestForNull() throws Exception {
145         springserviceImpl.releaseNetworkElementName(null);
146     }
147     
148     @Test(expected = Exception.class)
149     public void releaseNetworkElementNameTest_exp() throws Exception {
150         GeneratedName gn = new GeneratedName();
151         List<GeneratedName> generatedNameList = new ArrayList<>();
152         generatedNameList.add(gn);
153
154         Mockito.when(generatedNameRepository.findByExternalId(req.get("external-key"))).thenThrow(new Exception());
155         springserviceImpl.releaseNetworkElementName(request);
156     }
157
158     @Test(expected = Exception.class)
159     public void releaseNetworkElementNameTest_exp_neng() throws Exception {
160         GeneratedName gn = new GeneratedName();
161         List<GeneratedName> generatedNameList = new ArrayList<>();
162         generatedNameList.add(gn);
163
164         Mockito.when(generatedNameRepository.findByExternalId(req.get("external-key"))).thenThrow(
165                         new NengException("Failed"));
166         springserviceImpl.releaseNetworkElementName(request);
167     }
168     
169     @Test
170     public void testGetQuickHello() {
171         Assert.assertTrue(springserviceImpl.getQuickHello("testMessage") instanceof HelloWorld);
172     }
173     
174     @Test
175     public void testGetQuickHelloForNullMessage() {
176         Assert.assertTrue(springserviceImpl.getQuickHello("") instanceof HelloWorld);
177     }
178     
179     @Test
180     public void updateNetworkElementName() throws Exception {
181         req.clear();
182         req.put("external-key", "TST-UV1");
183         req.put("resource-name", "vnf-name");
184         req.put("resource-value", "dst1000tv1");
185         req.put("naming-type", "vnf");
186         
187         GeneratedName gn = new GeneratedName();
188         gn.setExternalId("TST-UV1");
189         gn.setElementType("VNF");
190         gn.setName("dst1000tv1");
191         
192         List<GeneratedName> generatedNameList = new ArrayList<>();
193         generatedNameList.add(gn);
194         Mockito.when(namePersister.findByExternalIdAndElementType(req.get("external-key"), "VNF")).thenReturn(gn);
195         Mockito.when(aaiNameValidator.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(true);
196         Assert.assertNotNull(springserviceImpl.updateNetworkElementName(request));
197         Mockito.verify(namePersister, Mockito.times(1)).persist(gn);
198     }
199     
200     @Test(expected = NengException.class)
201     public void updateNetworkElementName_Aai_Fail() throws Exception {
202         req.clear();
203         req.put("external-key", "TST-UV1");
204         req.put("resource-name", "vnf-name");
205         req.put("resource-value", "dst1000tv1");
206         req.put("naming-type", "vnf");
207         
208         GeneratedName gn = new GeneratedName();
209         gn.setExternalId("TST-UV1");
210         gn.setElementType("VNF");
211         gn.setName("dst1000tv1");
212         
213         Mockito.when(namePersister.findByExternalIdAndElementType(req.get("external-key"), "VNF")).thenReturn(null);
214         Mockito.when(aaiNameValidator.validate(Matchers.anyString(), Matchers.anyString())).thenReturn(false);
215         springserviceImpl.updateNetworkElementName(request);
216     }
217 }