18aa30245189007f837e3f13528fbc42cc60428b
[ccsdk/apps.git] /
1 /*******************************************************************************\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  * Modifications Copyright © 2018 IBM.\r
4  * \r
5  * Licensed under the Apache License, Version 2.0 (the "License");\r
6  * you may not use this file except in compliance with the License.\r
7  * You may obtain a copy of the License at\r
8  * \r
9  *     http://www.apache.org/licenses/LICENSE-2.0\r
10  * \r
11  * Unless required by applicable law or agreed to in writing, software\r
12  * distributed under the License is distributed on an "AS IS" BASIS,\r
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14  * See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  ******************************************************************************/\r
17 \r
18 package org.onap.ccsdk.apps.ms.vlantagapi.core.service;\r
19 \r
20 import static org.junit.Assert.assertEquals;\r
21 import static org.mockito.ArgumentMatchers.any;\r
22 import java.util.ArrayList;\r
23 import java.util.List;\r
24 \r
25 import org.junit.Assert;\r
26 import org.junit.Before;\r
27 import org.junit.Rule;\r
28 import org.junit.Test;\r
29 import org.junit.rules.ExpectedException;\r
30 import org.junit.runner.RunWith;\r
31 import org.mockito.InjectMocks;\r
32 import org.mockito.Mockito;\r
33 import org.mockito.Spy;\r
34 import org.mockito.junit.MockitoJUnitRunner;\r
35 import org.onap.ccsdk.apps.ms.vlantagapi.core.exception.VlantagApiException;\r
36 import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.AllowedRanges;\r
37 import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.Elements;\r
38 import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.PolicyEngineResponse;\r
39 import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.ResourceModel;\r
40 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.AssignVlanTagRequest;\r
41 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.AssignVlanTagRequestInput;\r
42 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.AssignVlanTagResponse;\r
43 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.PingResponse;\r
44 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.UnassignVlanTagRequest;\r
45 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.UnassignVlanTagRequestInput;\r
46 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.UnassignVlanTagResponse;\r
47 import org.onap.ccsdk.apps.ms.vlantagapi.core.service.VlantagApiServiceImpl;\r
48 import org.onap.ccsdk.apps.ms.vlantagapi.extinf.pm.PolicyManagerClient;\r
49 import org.onap.ccsdk.apps.ms.vlantagapi.util.MockResourceAllocator;\r
50 import org.onap.ccsdk.sli.adaptors.ra.comp.ResourceResponse;\r
51 import org.onap.ccsdk.sli.adaptors.util.str.StrUtil;\r
52 \r
53 import org.slf4j.Logger;\r
54 import org.slf4j.LoggerFactory;\r
55 \r
56 \r
57 @RunWith(MockitoJUnitRunner.class)\r
58 public class TestVlantagApiServiceImpl {\r
59 private static final Logger log = LoggerFactory.getLogger(TestVlantagApiServiceImpl.class);\r
60         \r
61         VlantagApiServiceImpl service;\r
62         @InjectMocks\r
63         VlantagApiServiceImpl serviceSpy;\r
64         \r
65         @Spy\r
66         private PolicyManagerClient policyEngineSpy;\r
67         \r
68         @Spy\r
69         protected static MockResourceAllocator mockRA2;\r
70 \r
71         \r
72         @Rule\r
73         public ExpectedException expectedEx = ExpectedException.none();\r
74         \r
75         @Before\r
76         public void setup() throws Exception {\r
77                 service = new VlantagApiServiceImpl();\r
78 \r
79                 PolicyEngineResponse peResponse = new PolicyEngineResponse();\r
80                 peResponse.setConfig("{\"riskLevel\":\"4\",\"riskType\":\"test\",\"policyName\":\"Internet_VlanTag_1810_US_VPE\",\"service\":\"vlantagResourceModel\",\"guard\":\"False\",\"description\":\"Internet_VlanTag_1810_US_VPE\",\"templateVersion\":\"1607\",\"priority\":\"4\",\"version\":\"20180709\",\"content\":{\"policy-instance-name\":\"Internet_VlanTag_1810_US_VPE\",\"resource-models\":[{\"data-store\":\"FALSE\",\"elements\":[{\"allowed-range\":[{\"min\":\"3553\",\"max\":\"3562\"}],\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Cust\"}],\"scope\":\"SITE\",\"vlan-type\":\"vlan-id-outer\",\"resource-resolution-recipe\":\"#BSB# VPE-Cust #ESB#\",\"resource-vlan-role\":\"outer-tag\"},{\"data-store\":\"TRUE\",\"elements\":[{\"allowed-range\":[{\"min\":\"3503\",\"max\":\"3503\"}],\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Cust-Outer\"},{\"allowed-range\":[{\"min\":\"4001\",\"max\":\"4012\"}],\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Core1\"},{\"allowed-range\":[{\"min\":\"4001\",\"max\":\"4012\"}],\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Core2\"}],\"scope\":\"SITE\",\"vlan-type\":\"vlan-id-filter\",\"resource-resolution-recipe\":\"#BSB# VPE-Cust-Outer, VPE-Core1, VPE-Core2 #ESB#\"}]}}");\r
81                 PolicyEngineResponse[] peResponses = new PolicyEngineResponse[1];\r
82                 peResponses[0] = peResponse;\r
83 \r
84                 Mockito.doReturn(peResponses).when(policyEngineSpy).getConfigUsingPost(any());\r
85         }\r
86         \r
87         @Test\r
88         public void testAssignVlanTagForNullRequest() throws Exception\r
89         {\r
90                 AssignVlanTagResponse response = service.assignVlanTag(null);\r
91                 Integer expectedErrorCode=500;\r
92                 assertEquals(expectedErrorCode, response.getErrorCode());\r
93         }\r
94         \r
95         @Test\r
96         public void testUnAssignVlanTagForNullRequest() throws Exception\r
97         {\r
98                 UnassignVlanTagResponse response = service.unassignVlanTag(null);\r
99                 Integer expectedErrorCode=500;\r
100                 assertEquals(expectedErrorCode, response.getErrorCode());\r
101         }\r
102         \r
103         @Test(expected = Test.None.class /* no exception expected */)\r
104         public void test_assign_sucess_001() throws Exception {\r
105                 \r
106                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
107                 input.setPolicyInstanceName("some-policy-instance");\r
108                 input.setVlanType("vlan-id-outer");\r
109                 input.setScopeId("some-scope-id");\r
110                 input.setVlanTagKey("some-key");\r
111                 \r
112                 AssignVlanTagRequest request = new AssignVlanTagRequest();\r
113                 List<AssignVlanTagRequestInput> inputs = new ArrayList<>();\r
114                 inputs.add(input);\r
115                 request.setInput(inputs);\r
116                 \r
117                 //PowerMockito.doReturn(mockStatus.Success).when(mockRA).reserve(any(), any(), any(), any());           \r
118                 AssignVlanTagResponse response = serviceSpy.assignVlanTag(request);\r
119                 \r
120                 StrUtil.info(log, response);\r
121         }\r
122         \r
123         @Test(expected = Test.None.class /* no exception expected */)\r
124         public void test_unassign_sucess_001() throws Exception {\r
125                 \r
126                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
127                 input.setPolicyInstanceName("some-policy-instance");\r
128                 input.setVlanType("vlan-id-outer");\r
129                 input.setVlanTagKey("some-key");\r
130                 \r
131                 UnassignVlanTagRequest request = new UnassignVlanTagRequest();\r
132                 List<UnassignVlanTagRequestInput> inputs = new ArrayList<>();\r
133                 inputs.add(input);\r
134                 request.setInput(inputs);\r
135                 \r
136                 //Mockito.doReturn(AllocationStatus.Success).when(mockRA).release(any(), any());        \r
137 \r
138                 \r
139                 UnassignVlanTagResponse response = serviceSpy.unassignVlanTag(request);\r
140                 \r
141                 StrUtil.info(log, response);\r
142         }\r
143         \r
144         @Test(expected = Test.None.class /* no exception expected */)\r
145         public void test_ping_sucess_001() throws Exception {   \r
146                 PingResponse response = serviceSpy.getPing("Vlantag API Service");\r
147                 \r
148                 StrUtil.info(log, response);\r
149                 Assert.assertTrue(response.getMessage().contains("Ping response : Vlantag API Service Time : "));\r
150         }\r
151         \r
152         \r
153         @Test\r
154         public void test_resolveRecipe_001() {\r
155                 \r
156                 ResourceModel model = new ResourceModel();\r
157                 model.setVlanType("vlan-id-inner");\r
158                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, #BSB# VPE-Core2 #ESB#, VPE-Core3 #ESB#");\r
159                 //model.setResourceResolutionRecipe("[ VPE-Core1, [ VPE-Core2 ], VPE-Core3 ]");\r
160                 \r
161                 List<ResourceResponse> rl = new ArrayList<>();\r
162                 ResourceResponse response = new ResourceResponse();\r
163                 response.endPointPosition = "VPE-Core1";\r
164                 response.resourceAllocated="3901";\r
165                 \r
166                 rl.add(response);\r
167                 \r
168                 response = new ResourceResponse();\r
169                 response.endPointPosition = "VPE-Core2";\r
170                 response.resourceAllocated="3902";\r
171                 \r
172                 rl.add(response);\r
173                 \r
174                 response = new ResourceResponse();\r
175                 response.endPointPosition = "VPE-Core3";\r
176                 response.resourceAllocated="3903";\r
177                 \r
178                 rl.add(response);\r
179                 \r
180                 service.resolveRecipe(model, rl);\r
181 \r
182         }\r
183         \r
184         @Test\r
185         public void test_resolveResourceElementValue_001() throws VlantagApiException {\r
186                 \r
187                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
188                 input.setVlanTagKey("some-key");\r
189                 input.setPolicyInstanceName("some-policy-instance-name");\r
190                 input.setVlanType("vlan-id-outer");\r
191                 input.setResourceValue("[ 123, 123, 234 ]");\r
192                 input.setScopeId("scope-id");\r
193                 input.setVlanType("vlan-type");\r
194                 \r
195                 Elements element = new Elements();\r
196                 element.setElementVlanRole("element-vlan-role");\r
197                 element.setOverwrite("FALSE");\r
198                 element.setRecycleVlantagRange("TRUE");\r
199                 element.setVlantagName("VPE-Core2");\r
200                 \r
201                 \r
202                 ResourceModel model = new ResourceModel();\r
203                 model.setVlanType("vlan-id-inner");\r
204                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, VPE-Core2, VPE-Core3 #ESB#");\r
205                 //model.setResourceResolutionRecipe("[ VPE-Core1, [ VPE-Core2 ], VPE-Core3 ]");\r
206                 \r
207                 List<ResourceResponse> rl = new ArrayList<>();\r
208                 ResourceResponse response = new ResourceResponse();\r
209                 response.endPointPosition = "VPE-Core1";\r
210                 response.resourceAllocated="3901";\r
211                 \r
212                 rl.add(response);\r
213                 \r
214                 response = new ResourceResponse();\r
215                 response.endPointPosition = "VPE-Core2";\r
216                 response.resourceAllocated="3902";\r
217                 \r
218                 rl.add(response);\r
219                 \r
220                 response = new ResourceResponse();\r
221                 response.endPointPosition = "VPE-Core3";\r
222                 response.resourceAllocated="3903";\r
223                 \r
224                 rl.add(response);\r
225                 \r
226                 String resourceValue = service.resolveResourceElementValue(input, model, element);\r
227                 \r
228                  Assert.assertTrue(resourceValue.equals("123"));\r
229         }\r
230         \r
231         @Test(expected = VlantagApiException.class)\r
232         public void test_resolveResourceElementValue_002() throws VlantagApiException {\r
233                 \r
234                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
235                 input.setVlanTagKey("some-key");\r
236                 input.setPolicyInstanceName("some-policy-instance-name");\r
237                 input.setVlanType("vlan-id-outer");\r
238                 input.setResourceValue("[ 123]");\r
239                 input.setScopeId("scope-id");\r
240                 input.setVlanType("vlan-type");\r
241                 \r
242                 Elements element = new Elements();\r
243                 element.setElementVlanRole("element-vlan-role");\r
244                 element.setOverwrite("FALSE");\r
245                 element.setRecycleVlantagRange("TRUE");\r
246                 element.setVlantagName("VPE-Core2");\r
247                 \r
248                 \r
249                 ResourceModel model = new ResourceModel();\r
250                 model.setVlanType("vlan-id-inner");\r
251                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, VPE-Core2, VPE-Core3 #ESB#");\r
252                 //model.setResourceResolutionRecipe("[ VPE-Core1, [ VPE-Core2 ], VPE-Core3 ]");\r
253                 \r
254                 List<ResourceResponse> rl = new ArrayList<>();\r
255                 ResourceResponse response = new ResourceResponse();\r
256                 response.endPointPosition = "VPE-Core1";\r
257                 response.resourceAllocated="3901";\r
258                 \r
259                 rl.add(response);\r
260                 \r
261                 response = new ResourceResponse();\r
262                 response.endPointPosition = "VPE-Core2";\r
263                 response.resourceAllocated="3902";\r
264                 \r
265                 rl.add(response);\r
266                 \r
267                 response = new ResourceResponse();\r
268                 response.endPointPosition = "VPE-Core3";\r
269                 response.resourceAllocated="3903";\r
270                 \r
271                 rl.add(response);\r
272                 \r
273                 service.resolveResourceElementValue(input, model, element);\r
274         }\r
275         \r
276         \r
277         @Test\r
278         public void test_validateElements_assign_vlantagName_001() throws VlantagApiException {\r
279                 \r
280                 expectedEx.expect(VlantagApiException.class);\r
281                 expectedEx.expectMessage("Vlantag Name missing for Element in Resource Model Policy for Vlan Type : vlan-id-outer");\r
282                 \r
283                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
284                 input.setVlanTagKey("some-key");\r
285                 input.setPolicyInstanceName("some-policy-instance-name");\r
286                 input.setVlanType("vlan-id-outer");\r
287                 input.setResourceValue("[ 123, 123, 234 ]");\r
288                 input.setScopeId("scope-id");\r
289                 \r
290                 Elements element = new Elements();\r
291                 element.setElementVlanRole("element-vlan-role");\r
292                 element.setOverwrite("FALSE");\r
293                 element.setRecycleVlantagRange("TRUE");\r
294                 \r
295                 List<Elements> elements = new ArrayList<>();\r
296                 elements.add(element);\r
297                 \r
298                 service.validateElements(elements, input);\r
299 \r
300         }\r
301         \r
302         @Test\r
303         public void test_validateElements_assign_allowedRanges_002() throws VlantagApiException {\r
304                 \r
305                 expectedEx.expect(VlantagApiException.class);\r
306                 expectedEx.expectMessage("Allowed Ranges missing for Element in Resource Model Policy for Vlan Type : vlan-id-outer");\r
307                 \r
308                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
309                 input.setVlanTagKey("some-key");\r
310                 input.setPolicyInstanceName("some-policy-instance-name");\r
311                 input.setVlanType("vlan-id-outer");\r
312                 input.setResourceValue("[ 123, 123, 234 ]");\r
313                 input.setScopeId("scope-id");\r
314                 \r
315                 Elements element = new Elements();\r
316                 element.setElementVlanRole("element-vlan-role");\r
317                 element.setOverwrite("FALSE");\r
318                 element.setRecycleVlantagRange("TRUE");\r
319                 element.setVlantagName("VPE-Core2");\r
320                 \r
321                 List<Elements> elements = new ArrayList<>();\r
322                 elements.add(element);\r
323                 \r
324                 service.validateElements(elements, input);\r
325 \r
326         }\r
327         \r
328         @Test\r
329         public void test_validateElements_assign_vlantagElements_003() throws VlantagApiException {\r
330                 \r
331                 expectedEx.expect(VlantagApiException.class);\r
332                 expectedEx.expectMessage("No Vlantag Elements found in Resource Model Policy for Vlan Type : vlan-id-outer");\r
333                 \r
334                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
335                 input.setVlanTagKey("some-key");\r
336                 input.setPolicyInstanceName("some-policy-instance-name");\r
337                 input.setVlanType("vlan-id-outer");\r
338                 input.setResourceValue("[ 123, 123, 234 ]");\r
339                 input.setScopeId("scope-id");           \r
340                 \r
341                 List<Elements> elements = new ArrayList<>();\r
342                 \r
343                 service.validateElements(elements, input);\r
344 \r
345         }\r
346         \r
347         @Test(expected = Test.None.class /* no exception expected */)\r
348         public void test_validateElements_assign_Success_004() throws VlantagApiException {\r
349                         \r
350                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
351                 input.setVlanTagKey("some-key");\r
352                 input.setPolicyInstanceName("some-policy-instance-name");\r
353                 input.setVlanType("vlan-id-outer");\r
354                 input.setResourceValue("[ 123, 123, 234 ]");\r
355                 input.setScopeId("scope-id");\r
356                 \r
357                 Elements element = new Elements();\r
358                 element.setElementVlanRole("element-vlan-role");\r
359                 element.setOverwrite("FALSE");\r
360                 element.setRecycleVlantagRange("TRUE");\r
361                 element.setVlantagName("VPE-Core2");\r
362                 \r
363                 List<AllowedRanges> allowedRanges = new ArrayList<>();\r
364                 AllowedRanges range = new AllowedRanges();\r
365                 range.setMin("200");\r
366                 range.setMax("300");\r
367                 allowedRanges.add(range );\r
368                 element.setAllowedRanges(allowedRanges);\r
369                 \r
370                 List<Elements> elements = new ArrayList<>();\r
371                 elements.add(element);\r
372                 \r
373                 service.validateElements(elements, input);\r
374 \r
375         }\r
376         \r
377         @Test\r
378         public void test_validateElements_unassign_vlantagName_001() throws VlantagApiException {\r
379                 \r
380                 expectedEx.expect(VlantagApiException.class);\r
381                 expectedEx.expectMessage("Vlantag Name missing for Element in Resource Model Policy for Vlan Type : vlan-id-outer");\r
382                 \r
383                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
384                 input.setVlanTagKey("some-key");\r
385                 input.setPolicyInstanceName("some-policy-instance-name");\r
386                 input.setVlanType("vlan-id-outer");\r
387                 \r
388                 Elements element = new Elements();\r
389                 element.setElementVlanRole("element-vlan-role");\r
390                 element.setOverwrite("FALSE");\r
391                 element.setRecycleVlantagRange("TRUE");\r
392                 \r
393                 List<Elements> elements = new ArrayList<>();\r
394                 elements.add(element);\r
395                 \r
396                 service.validateElements(elements, input);\r
397 \r
398         }\r
399         \r
400         @Test\r
401         public void test_validateElements_unassign_vlantagElements_003() throws VlantagApiException {\r
402                 \r
403                 expectedEx.expect(VlantagApiException.class);\r
404                 expectedEx.expectMessage("No Vlantag Elements found in Resource Model Policy for Vlan Type : vlan-id-outer");\r
405                 \r
406                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
407                 input.setVlanTagKey("some-key");\r
408                 input.setPolicyInstanceName("some-policy-instance-name");\r
409                 input.setVlanType("vlan-id-outer");\r
410                 \r
411                 \r
412                 List<Elements> elements = new ArrayList<>();\r
413                 \r
414                 service.validateElements(elements, input);\r
415 \r
416         }\r
417         \r
418         @Test(expected = Test.None.class /* no exception expected */)\r
419         public void test_validateElements_unassign_Success_004() throws VlantagApiException {\r
420                         \r
421                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
422                 input.setVlanTagKey("some-key");\r
423                 input.setPolicyInstanceName("some-policy-instance-name");\r
424                 input.setVlanType("vlan-id-outer");\r
425                 \r
426                 Elements element = new Elements();\r
427                 element.setElementVlanRole("element-vlan-role");\r
428                 element.setOverwrite("FALSE");\r
429                 element.setRecycleVlantagRange("TRUE");\r
430                 element.setVlantagName("VPE-Core2");\r
431                 \r
432                 List<AllowedRanges> allowedRanges = new ArrayList<>();\r
433                 AllowedRanges range = new AllowedRanges();\r
434                 range.setMin("200");\r
435                 range.setMax("300");\r
436                 allowedRanges.add(range );\r
437                 element.setAllowedRanges(allowedRanges);\r
438                 \r
439                 List<Elements> elements = new ArrayList<>();\r
440                 elements.add(element);\r
441                 \r
442                 service.validateElements(elements, input);\r
443 \r
444         }\r
445         \r
446         @Test\r
447         public void test_validateModel_assign_resourceModel_001() throws VlantagApiException {\r
448                 \r
449                 expectedEx.expect(VlantagApiException.class);\r
450                 expectedEx.expectMessage("No Matching Policy Resource Model found for Vlan Type : vlan-id-outer");\r
451                 \r
452                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
453                 input.setVlanTagKey("some-key");\r
454                 input.setPolicyInstanceName("some-policy-instance-name");\r
455                 input.setVlanType("vlan-id-outer");\r
456                 input.setResourceValue("[ 123]");\r
457                 input.setScopeId("scope-id");\r
458                 \r
459                 service.validateModel(null, input);\r
460         }\r
461         \r
462         @Test\r
463         public void test_validateModel_assign_resolutionRecipe_002() throws VlantagApiException {\r
464                 \r
465                 expectedEx.expect(VlantagApiException.class);\r
466                 expectedEx.expectMessage("Resource Resolution Recipe is null in Resource Model for Vlan Type : vlan-id-outer");\r
467                 \r
468                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
469                 input.setVlanTagKey("some-key");\r
470                 input.setPolicyInstanceName("some-policy-instance-name");\r
471                 input.setVlanType("vlan-id-outer");\r
472                 input.setResourceValue("[ 123]");\r
473                 input.setScopeId("scope-id");           \r
474                         \r
475                 ResourceModel model = new ResourceModel();\r
476                 model.setVlanType("vlan-id-inner");\r
477                 \r
478                 service.validateModel(model, input);\r
479         }\r
480         \r
481         @Test\r
482         public void test_validateModel_assign_scope_003() throws VlantagApiException {\r
483                 \r
484                 expectedEx.expect(VlantagApiException.class);\r
485                 expectedEx.expectMessage("Scope is null in Resource Model for Vlan Type : vlan-id-outer");\r
486                 \r
487                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
488                 input.setVlanTagKey("some-key");\r
489                 input.setPolicyInstanceName("some-policy-instance-name");\r
490                 input.setVlanType("vlan-id-outer");\r
491                 input.setResourceValue("[ 123]");\r
492                 input.setScopeId("scope-id");\r
493 \r
494                 ResourceModel model = new ResourceModel();\r
495                 model.setVlanType("vlan-id-inner");\r
496                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, VPE-Core2, VPE-Core3 #ESB#");\r
497                 \r
498                 service.validateModel(model, input);\r
499         }\r
500         \r
501         @Test(expected = Test.None.class /* no exception expected */)\r
502         public void test_validateModel_assign_success_004() throws VlantagApiException {\r
503                 \r
504                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
505                 input.setVlanTagKey("some-key");\r
506                 input.setPolicyInstanceName("some-policy-instance-name");\r
507                 input.setVlanType("vlan-id-outer");\r
508                 input.setResourceValue("[ 123]");\r
509                 input.setScopeId("scope-id");\r
510                 \r
511                 Elements element = new Elements();\r
512                 element.setElementVlanRole("element-vlan-role");\r
513                 element.setOverwrite("FALSE");\r
514                 element.setRecycleVlantagRange("TRUE");\r
515                 element.setVlantagName("VPE-Core2");\r
516                 \r
517                 List<AllowedRanges> allowedRanges = new ArrayList<>();\r
518                 AllowedRanges range = new AllowedRanges();\r
519                 range.setMin("200");\r
520                 range.setMax("300");\r
521                 allowedRanges.add(range );\r
522                 element.setAllowedRanges(allowedRanges);\r
523                 \r
524                 List<Elements> elements = new ArrayList<>();\r
525                 elements.add(element);\r
526                         \r
527                 ResourceModel model = new ResourceModel();\r
528                 model.setVlanType("vlan-id-inner");\r
529                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, VPE-Core2, VPE-Core3 #ESB#");\r
530                 model.setScope("VPE");\r
531                 model.setElements(elements);\r
532         \r
533                 service.validateModel(model, input);\r
534         }\r
535         \r
536         @Test\r
537         public void test_validateModel_unassign_resourceModel_001() throws VlantagApiException {\r
538                 \r
539                 expectedEx.expect(VlantagApiException.class);\r
540                 expectedEx.expectMessage("No Matching Policy Resource Model found for Vlan Type : vlan-id-outer");\r
541                 \r
542                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
543                 input.setVlanTagKey("some-key");\r
544                 input.setPolicyInstanceName("some-policy-instance-name");\r
545                 input.setVlanType("vlan-id-outer");\r
546                 \r
547                 service.validateModel(null, input);\r
548         }\r
549         \r
550         @Test\r
551         public void test_validateModel_unassign_resolutionRecipe_002() throws VlantagApiException {\r
552                 \r
553                 expectedEx.expect(VlantagApiException.class);\r
554                 expectedEx.expectMessage("Resource Resolution Recipe is null in Resource Model for Vlan Type : vlan-id-outer");\r
555                 \r
556                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
557                 input.setVlanTagKey("some-key");\r
558                 input.setPolicyInstanceName("some-policy-instance-name");\r
559                 input.setVlanType("vlan-id-outer");             \r
560                         \r
561                 ResourceModel model = new ResourceModel();\r
562                 model.setVlanType("vlan-id-inner");\r
563                 \r
564                 service.validateModel(model, input);\r
565         }\r
566         \r
567         @Test\r
568         public void test_validateModel_unassign_scope_003() throws VlantagApiException {\r
569                 \r
570                 expectedEx.expect(VlantagApiException.class);\r
571                 expectedEx.expectMessage("Scope is null in Resource Model for Vlan Type : vlan-id-outer");\r
572                 \r
573                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
574                 input.setVlanTagKey("some-key");\r
575                 input.setPolicyInstanceName("some-policy-instance-name");\r
576                 input.setVlanType("vlan-id-outer");             \r
577                         \r
578                 ResourceModel model = new ResourceModel();\r
579                 model.setVlanType("vlan-id-inner");\r
580                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, VPE-Core2, VPE-Core3 #ESB#");\r
581                 \r
582                 service.validateModel(model, input);\r
583         }\r
584         \r
585         @Test(expected = Test.None.class /* no exception expected */)\r
586         public void test_validateModel_unassign_success_004() throws VlantagApiException {\r
587                 \r
588                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
589                 input.setVlanTagKey("some-key");\r
590                 input.setPolicyInstanceName("some-policy-instance-name");\r
591                 input.setVlanType("vlan-id-outer");\r
592                 \r
593                 Elements element = new Elements();\r
594                 element.setElementVlanRole("element-vlan-role");\r
595                 element.setOverwrite("FALSE");\r
596                 element.setRecycleVlantagRange("TRUE");\r
597                 element.setVlantagName("VPE-Core2");\r
598                 \r
599                 List<AllowedRanges> allowedRanges = new ArrayList<>();\r
600                 AllowedRanges range = new AllowedRanges();\r
601                 range.setMin("200");\r
602                 range.setMax("300");\r
603                 allowedRanges.add(range );\r
604                 element.setAllowedRanges(allowedRanges);\r
605                 \r
606                 List<Elements> elements = new ArrayList<>();\r
607                 elements.add(element);\r
608                         \r
609                 ResourceModel model = new ResourceModel();\r
610                 model.setVlanType("vlan-id-inner");\r
611                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, VPE-Core2, VPE-Core3 #ESB#");\r
612                 model.setScope("VPE");\r
613                 model.setElements(elements);\r
614         \r
615                 service.validateModel(model, input);\r
616         }\r
617         \r
618         @Test\r
619         public void test_validateRequest_assign_request_001() throws VlantagApiException {\r
620                 \r
621                 expectedEx.expect(VlantagApiException.class);\r
622                 expectedEx.expectMessage("VlanTag Assign Request is null.");\r
623                 \r
624                 AssignVlanTagRequest request = null;\r
625                 service.validateRequest(request);\r
626         }\r
627         \r
628         @Test\r
629         public void test_validateRequest_assign_requestInput_002() throws VlantagApiException {\r
630                 \r
631                 expectedEx.expect(VlantagApiException.class);\r
632                 expectedEx.expectMessage("VlanTag Assign Request Input is null or empty.");\r
633                 \r
634                 AssignVlanTagRequest request = new AssignVlanTagRequest();\r
635                 \r
636                 service.validateRequest(request);\r
637         }\r
638         \r
639         @Test\r
640         public void test_validateRequest_assign_policyInstanceName_003() throws VlantagApiException {\r
641                 \r
642                 expectedEx.expect(VlantagApiException.class);\r
643                 expectedEx.expectMessage("VlanTag Assign Request policy-instance-name is null.");\r
644                 \r
645                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
646                 input.setVlanTagKey("some-key");\r
647                 input.setVlanType("vlan-id-outer");\r
648                 input.setResourceValue("[ 123]");\r
649                 input.setScopeId("scope-id");\r
650                 input.setVlanType("vlan-type");\r
651                 \r
652                 AssignVlanTagRequest request = new AssignVlanTagRequest();\r
653                 List<AssignVlanTagRequestInput> inputs = new ArrayList<>();\r
654                 inputs.add(input);\r
655                 \r
656                 request.setInput(inputs);\r
657                 \r
658                 service.validateRequest(request);\r
659         }\r
660         \r
661         @Test\r
662         public void test_validateRequest_assign_resourceName_004() throws VlantagApiException {\r
663                 \r
664                 expectedEx.expect(VlantagApiException.class);\r
665                 expectedEx.expectMessage("VlanTag Assign Request vlan-type is null.");\r
666                 \r
667                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
668                 input.setVlanTagKey("some-key");\r
669                 input.setPolicyInstanceName("some-policy-instance");\r
670                 input.setResourceValue("[ 123]");\r
671                 input.setScopeId("scope-id");\r
672                 \r
673                 AssignVlanTagRequest request = new AssignVlanTagRequest();\r
674                 List<AssignVlanTagRequestInput> inputs = new ArrayList<>();\r
675                 inputs.add(input);\r
676                 \r
677                 request.setInput(inputs);\r
678                 \r
679                 service.validateRequest(request);\r
680         }\r
681         \r
682         @Test\r
683         public void test_validateRequest_assign_scopeId_005() throws VlantagApiException {\r
684                 \r
685                 expectedEx.expect(VlantagApiException.class);\r
686                 expectedEx.expectMessage("VlanTag Assign Request scope-id is null.");\r
687                 \r
688                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
689                 input.setVlanTagKey("some-key");\r
690                 input.setPolicyInstanceName("some-policy-instance");\r
691                 input.setVlanType("vlan-id-outer");\r
692                 input.setResourceValue("[ 123]");\r
693                 input.setVlanType("vlan-type");\r
694                 \r
695                 AssignVlanTagRequest request = new AssignVlanTagRequest();\r
696                 List<AssignVlanTagRequestInput> inputs = new ArrayList<>();\r
697                 inputs.add(input);\r
698                 \r
699                 request.setInput(inputs);\r
700                 \r
701                 service.validateRequest(request);\r
702         }\r
703         \r
704         @Test\r
705         public void test_validateRequest_assign_resourceKey_006() throws VlantagApiException {\r
706                 \r
707                 expectedEx.expect(VlantagApiException.class);\r
708                 expectedEx.expectMessage("VlanTag Assign Request key is null.");\r
709                 \r
710                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
711                 input.setPolicyInstanceName("some-policy-instance");\r
712                 input.setVlanType("vlan-id-outer");\r
713                 input.setScopeId("scope-id");\r
714                 input.setResourceValue("[ 123]");\r
715                 input.setVlanType("vlan-type");\r
716                 \r
717                 AssignVlanTagRequest request = new AssignVlanTagRequest();\r
718                 List<AssignVlanTagRequestInput> inputs = new ArrayList<>();\r
719                 inputs.add(input);\r
720                 \r
721                 request.setInput(inputs);\r
722                 \r
723                 service.validateRequest(request);\r
724         }\r
725         \r
726         @Test(expected = Test.None.class /* no exception expected */)\r
727         public void test_validateRequest_assign_success_007() throws VlantagApiException {\r
728                 \r
729                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
730                 input.setPolicyInstanceName("some-policy-instance");\r
731                 input.setVlanType("vlan-id-outer");\r
732                 input.setScopeId("scope-id");\r
733                 input.setResourceValue("[ 123]");\r
734                 input.setVlanType("vlan-type");\r
735                 input.setVlanTagKey("some-key");\r
736                 \r
737                 AssignVlanTagRequest request = new AssignVlanTagRequest();\r
738                 List<AssignVlanTagRequestInput> inputs = new ArrayList<>();\r
739                 inputs.add(input);\r
740                 \r
741                 request.setInput(inputs);\r
742                 \r
743                 service.validateRequest(request);\r
744         }\r
745         \r
746         \r
747         @Test\r
748         public void test_validateRequest_unassign_request_001() throws VlantagApiException {\r
749                 \r
750                 expectedEx.expect(VlantagApiException.class);\r
751                 expectedEx.expectMessage("VlanTag Unassign Request is null.");\r
752                 \r
753                 UnassignVlanTagRequest request = null;\r
754                 service.validateRequest(request);\r
755         }\r
756         \r
757         @Test\r
758         public void test_validateRequest_unassign_requestInput_002() throws VlantagApiException {\r
759                 \r
760                 expectedEx.expect(VlantagApiException.class);\r
761                 expectedEx.expectMessage("VlanTag Unassign Request Input is null or empty.");\r
762                 \r
763                 UnassignVlanTagRequest request = new UnassignVlanTagRequest();\r
764                 service.validateRequest(request);\r
765         }\r
766         \r
767         @Test\r
768         public void test_validateRequest_unassign_policyInstanceName_003() throws VlantagApiException {\r
769                 \r
770                 expectedEx.expect(VlantagApiException.class);\r
771                 expectedEx.expectMessage("VlanTag Unassign Request policy-instance-name is null.");\r
772                 \r
773                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
774                 input.setVlanTagKey("some-key");\r
775                 input.setVlanType("vlan-id-outer");\r
776                 \r
777                 UnassignVlanTagRequest request = new UnassignVlanTagRequest();\r
778                 List<UnassignVlanTagRequestInput> inputs = new ArrayList<>();\r
779                 inputs.add(input);\r
780                 \r
781                 request.setInput(inputs);\r
782                 \r
783                 service.validateRequest(request);\r
784         }\r
785         \r
786         @Test\r
787         public void test_validateRequest_unassign_resourceName_004() throws VlantagApiException {\r
788                 \r
789                 expectedEx.expect(VlantagApiException.class);\r
790                 expectedEx.expectMessage("VlanTag Unassign Request resource-name is null.");\r
791                 \r
792                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
793                 input.setVlanTagKey("some-key");\r
794                 input.setPolicyInstanceName("some-policy-instance");\r
795                 \r
796                 UnassignVlanTagRequest request = new UnassignVlanTagRequest();\r
797                 List<UnassignVlanTagRequestInput> inputs = new ArrayList<>();\r
798                 inputs.add(input);\r
799                 \r
800                 request.setInput(inputs);\r
801                 \r
802                 service.validateRequest(request);\r
803         }\r
804         \r
805         \r
806         @Test\r
807         public void test_validateRequest_unassign_resourceKey_005() throws VlantagApiException {\r
808                 \r
809                 expectedEx.expect(VlantagApiException.class);\r
810                 expectedEx.expectMessage("VlanTag Unassign Request key is null.");\r
811                 \r
812                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
813                 input.setPolicyInstanceName("some-policy-instance");\r
814                 input.setVlanType("vlan-id-outer");\r
815                 \r
816                 UnassignVlanTagRequest request = new UnassignVlanTagRequest();\r
817                 List<UnassignVlanTagRequestInput> inputs = new ArrayList<>();\r
818                 inputs.add(input);\r
819                 \r
820                 request.setInput(inputs);\r
821                 \r
822                 service.validateRequest(request);\r
823         }\r
824         \r
825         @Test(expected = Test.None.class /* no exception expected */)\r
826         public void test_validateRequest_unassign_success_006() throws VlantagApiException {\r
827                 \r
828                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
829                 input.setVlanTagKey("some-key");\r
830                 input.setPolicyInstanceName("some-policy-instance");\r
831                 input.setVlanType("vlan-id-outer");\r
832                 \r
833                 UnassignVlanTagRequest request = new UnassignVlanTagRequest();\r
834                 List<UnassignVlanTagRequestInput> inputs = new ArrayList<>();\r
835                 inputs.add(input);\r
836                 \r
837                 request.setInput(inputs);\r
838                 \r
839                 service.validateRequest(request);\r
840         }\r
841         \r
842         @Test\r
843         public void test_validate_assign_failure_001() throws VlantagApiException {\r
844                 \r
845                 expectedEx.expect(VlantagApiException.class);\r
846                 expectedEx.expectMessage("No Resource Models available in Policy Manager for Policy Instance Name : some-policy-instance");\r
847                 \r
848                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
849                 input.setPolicyInstanceName("some-policy-instance");\r
850                 input.setVlanType("vlan-id-outer");\r
851                 \r
852                 List<ResourceModel> resourceModels = new ArrayList<>();\r
853                 \r
854                 service.validate(resourceModels, input);\r
855         }\r
856         \r
857         @Test(expected = Test.None.class /* no exception expected */)\r
858         public void test_validate_assign_sucess_002() throws VlantagApiException {\r
859                 \r
860                 AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
861                 input.setPolicyInstanceName("some-policy-instance");\r
862                 input.setVlanType("vlan-id-outer");\r
863                 \r
864                 Elements element = new Elements();\r
865                 element.setElementVlanRole("element-vlan-role");\r
866                 element.setOverwrite("FALSE");\r
867                 element.setRecycleVlantagRange("TRUE");\r
868                 element.setVlantagName("VPE-Core2");\r
869                 \r
870                 List<AllowedRanges> allowedRanges = new ArrayList<>();\r
871                 AllowedRanges range = new AllowedRanges();\r
872                 range.setMin("200");\r
873                 range.setMax("300");\r
874                 allowedRanges.add(range );\r
875                 element.setAllowedRanges(allowedRanges);\r
876                 \r
877                 List<Elements> elements = new ArrayList<>();\r
878                 elements.add(element);\r
879                         \r
880                 ResourceModel model = new ResourceModel();\r
881                 model.setVlanType("vlan-id-outer");\r
882                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, VPE-Core2, VPE-Core3 #ESB#");\r
883                 model.setScope("VPE");\r
884                 model.setElements(elements);\r
885                 \r
886                 List<ResourceModel> resourceModels = new ArrayList<>();\r
887                 resourceModels.add(model);\r
888                 \r
889                 \r
890                 service.validate(resourceModels, input);\r
891         }\r
892         \r
893         @Test\r
894         public void test_validate_unassign_failure_001() throws VlantagApiException {\r
895                 \r
896                 expectedEx.expect(VlantagApiException.class);\r
897                 expectedEx.expectMessage("No Resource Models available in Policy Manager for Policy Instance Name : some-policy-instance");\r
898                 \r
899                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
900                 input.setPolicyInstanceName("some-policy-instance");\r
901                 input.setVlanType("vlan-id-outer");\r
902                 \r
903                 List<ResourceModel> resourceModels = new ArrayList<>();\r
904                 \r
905                 service.validate(resourceModels, input);\r
906         }\r
907         \r
908         @Test(expected = Test.None.class /* no exception expected */)\r
909         public void test_validate_unassign_sucess_002() throws VlantagApiException {\r
910                 \r
911                 UnassignVlanTagRequestInput input = new UnassignVlanTagRequestInput();\r
912                 input.setPolicyInstanceName("some-policy-instance");\r
913                 input.setVlanType("vlan-id-outer");\r
914                 \r
915                 Elements element = new Elements();\r
916                 element.setElementVlanRole("element-vlan-role");\r
917                 element.setOverwrite("FALSE");\r
918                 element.setRecycleVlantagRange("TRUE");\r
919                 element.setVlantagName("VPE-Core2");\r
920                 \r
921                 List<AllowedRanges> allowedRanges = new ArrayList<>();\r
922                 AllowedRanges range = new AllowedRanges();\r
923                 range.setMin("200");\r
924                 range.setMax("300");\r
925                 allowedRanges.add(range );\r
926                 element.setAllowedRanges(allowedRanges);\r
927                 \r
928                 List<Elements> elements = new ArrayList<>();\r
929                 elements.add(element);\r
930                         \r
931                 ResourceModel model = new ResourceModel();\r
932                 model.setVlanType("vlan-id-outer");\r
933                 model.setResourceResolutionRecipe("#BSB# VPE-Core1, VPE-Core2, VPE-Core3 #ESB#");\r
934                 model.setScope("VPE");\r
935                 model.setElements(elements);\r
936                 \r
937                 List<ResourceModel> resourceModels = new ArrayList<>();\r
938                 resourceModels.add(model);\r
939                 \r
940                 \r
941                 service.validate(resourceModels, input);\r
942         }\r
943         \r
944            @Test(expected = VlantagApiException.class)\r
945             public void testGetPolicyFromPDPFailure() throws Exception {\r
946                 Mockito.doThrow(new VlantagApiException()).when(policyEngineSpy).getConfigUsingPost(any());\r
947                 policyEngineSpy.getPolicyFromPDP("sonme_random_policy_name");\r
948             }\r
949 }\r