merge from ecomp a88f0072 - Modern UI
[vid.git] / vid-webpack-master / src / app / shared / components / genericForm / formControlsServices / service.control.generator.spec.ts
1 import {getTestBed, TestBed} from '@angular/core/testing';
2 import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
3 import {NgRedux} from '@angular-redux/store';
4 import {FormControlNames, ServiceControlGenerator} from "./service.control.generator";
5 import {BasicControlGenerator} from "./basic.control.generator";
6 import {AaiService} from "../../../services/aaiService/aai.service";
7 import {GenericFormService} from "../generic-form.service";
8 import {FormBuilder} from "@angular/forms";
9 import {FormControlModel, ValidatorModel, ValidatorOptions} from "../../../models/formControlModels/formControl.model";
10 import {LogService} from "../../../utils/log/log.service";
11 import {FormControlType} from "../../../models/formControlModels/formControlTypes.enum";
12 import {DropdownFormControl} from "../../../models/formControlModels/dropdownFormControl.model";
13 import {FeatureFlagsService} from "../../../services/featureFlag/feature-flags.service";
14
15 class MockAppStore<T> {
16   getState(){
17     return {
18       "global": {
19         "name": null,
20         "flags": {
21           "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
22           "FLAG_SHOW_ASSIGNMENTS": true,
23           "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
24           "FLAG_UNASSIGN_SERVICE": true,
25           "FLAG_SHOW_VERIFY_SERVICE": false,
26           "FLAG_COLLECTION_RESOURCE_SUPPORT": true,
27           "FLAG_DUPLICATE_VNF": true,
28           "FLAG_SERVICE_MODEL_CACHE": true,
29           "CREATE_INSTANCE_TEST": false,
30           "FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
31           "FLAG_ASYNC_INSTANTIATION": true,
32           "FLAG_ASYNC_JOBS": true,
33           "EMPTY_DRAWING_BOARD_TEST": false,
34           "FLAG_ADD_MSO_TESTAPI_FIELD": true
35         },
36         "type": "[FLAGS] Update"
37       },
38       "service": {
39         "serviceHierarchy": {
40           "6e59c5de-f052-46fa-aa7e-2fca9d674c44": {
41             "service": {
42               "uuid": "6e59c5de-f052-46fa-aa7e-2fca9d674c44",
43               "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
44               "name": "ComplexService",
45               "version": "1.0",
46               "toscaModelURL": null,
47               "category": "Emanuel",
48               "serviceType": "",
49               "serviceRole": "",
50               "description": "ComplexService",
51               "serviceEcompNaming": "false",
52               "instantiationType": "Macro",
53               "inputs": {}
54             },
55             "vnfs": {
56               "VF_vMee 0": {
57                 "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
58                 "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
59                 "description": "VSP_vMee",
60                 "name": "VF_vMee",
61                 "version": "2.0",
62                 "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
63                 "inputs": {},
64                 "commands": {},
65                 "properties": {
66                   "max_instances": 10,
67                   "min_instances": 1,
68                   "gpb2_Internal2_mac": "00:11:22:EF:AC:DF",
69                   "sctp-b-ipv6-egress_src_start_port": "0",
70                   "sctp-a-ipv6-egress_rule_application": "any",
71                   "Internal2_allow_transit": "true",
72                   "sctp-b-IPv6_ethertype": "IPv6",
73                   "sctp-a-egress_rule_application": "any",
74                   "sctp-b-ingress_action": "pass",
75                   "sctp-b-ingress_rule_protocol": "icmp",
76                   "ncb2_Internal1_mac": "00:11:22:EF:AC:DF",
77                   "sctp-b-ipv6-ingress-src_start_port": "0.0",
78                   "ncb1_Internal2_mac": "00:11:22:EF:AC:DF",
79                   "fsb_volume_size_0": "320.0",
80                   "sctp-b-egress_src_addresses": "local",
81                   "sctp-a-ipv6-ingress_ethertype": "IPv4",
82                   "sctp-a-ipv6-ingress-dst_start_port": "0",
83                   "sctp-b-ipv6-ingress_rule_application": "any",
84                   "domain_name": "default-domain",
85                   "sctp-a-ingress_rule_protocol": "icmp",
86                   "sctp-b-egress-src_start_port": "0.0",
87                   "sctp-a-egress_src_addresses": "local",
88                   "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
89                   "sctp-a-egress-src_start_port": "0.0",
90                   "sctp-a-ingress_ethertype": "IPv4",
91                   "sctp-b-ipv6-ingress-dst_end_port": "65535",
92                   "sctp-b-dst_subnet_prefix_v6": "::",
93                   "nf_naming": "{ecomp_generated_naming=true}",
94                   "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
95                   "sctp-b-egress-dst_start_port": "0.0",
96                   "ncb_flavor_name": "nv.c20r64d1",
97                   "gpb1_Internal1_mac": "00:11:22:EF:AC:DF",
98                   "sctp-b-egress_dst_subnet_prefix_len": "0.0",
99                   "Internal2_net_cidr": "10.0.0.10",
100                   "sctp-a-ingress-dst_start_port": "0.0",
101                   "sctp-a-egress-dst_start_port": "0.0",
102                   "fsb1_Internal2_mac": "00:11:22:EF:AC:DF",
103                   "sctp-a-egress_ethertype": "IPv4",
104                   "vlc_st_service_mode": "in-network-nat",
105                   "sctp-a-ipv6-egress_ethertype": "IPv4",
106                   "sctp-a-egress-src_end_port": "65535.0",
107                   "sctp-b-ipv6-egress_rule_application": "any",
108                   "sctp-b-egress_action": "pass",
109                   "sctp-a-ingress-src_subnet_prefix_len": "0.0",
110                   "sctp-b-ipv6-ingress-src_end_port": "65535.0",
111                   "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
112                   "fsb2_Internal1_mac": "00:11:22:EF:AC:DF",
113                   "sctp-a-ipv6-ingress-src_start_port": "0.0",
114                   "sctp-b-ipv6-egress_ethertype": "IPv4",
115                   "Internal1_net_cidr": "10.0.0.10",
116                   "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
117                   "fsb_flavor_name": "nv.c20r64d1",
118                   "sctp_rule_protocol": "132",
119                   "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
120                   "sctp-a-ipv6-ingress_rule_application": "any",
121                   "ecomp_generated_naming": "false",
122                   "sctp-a-IPv6_ethertype": "IPv6",
123                   "vlc2_Internal1_mac": "00:11:22:EF:AC:DF",
124                   "vlc_st_virtualization_type": "virtual-machine",
125                   "sctp-b-ingress-dst_start_port": "0.0",
126                   "sctp-b-ingress-dst_end_port": "65535.0",
127                   "sctp-a-ipv6-ingress-src_end_port": "65535.0",
128                   "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
129                   "sctp-b-ingress_rule_application": "any",
130                   "int2_sec_group_name": "int2-sec-group",
131                   "vlc_flavor_name": "nd.c16r64d1",
132                   "sctp-b-ipv6-egress_src_addresses": "local",
133                   "vlc_st_interface_type_int1": "other1",
134                   "sctp-b-egress-src_end_port": "65535.0",
135                   "sctp-a-ipv6-egress-dst_start_port": "0",
136                   "vlc_st_interface_type_int2": "other2",
137                   "sctp-a-ipv6-egress_rule_protocol": "any",
138                   "Internal2_shared": "false",
139                   "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
140                   "Internal2_rpf": "disable",
141                   "vlc1_Internal1_mac": "00:11:22:EF:AC:DF",
142                   "sctp-b-ipv6-egress_src_end_port": "65535",
143                   "sctp-a-ipv6-egress_src_addresses": "local",
144                   "sctp-a-ingress-dst_end_port": "65535.0",
145                   "sctp-a-ipv6-egress_src_end_port": "65535",
146                   "Internal1_forwarding_mode": "l2",
147                   "Internal2_dhcp": "false",
148                   "sctp-a-dst_subnet_prefix_v6": "::",
149                   "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
150                   "vlc_st_interface_type_gtp": "other0",
151                   "ncb1_Internal1_mac": "00:11:22:EF:AC:DF",
152                   "sctp-b-src_subnet_prefix_v6": "::",
153                   "sctp-a-egress_dst_subnet_prefix_len": "0.0",
154                   "int1_sec_group_name": "int1-sec-group",
155                   "Internal1_dhcp": "false",
156                   "sctp-a-ipv6-egress_dst_end_port": "65535",
157                   "Internal2_forwarding_mode": "l2",
158                   "fsb2_Internal2_mac": "00:11:22:EF:AC:DF",
159                   "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
160                   "Internal1_net_cidr_len": "17",
161                   "gpb2_Internal1_mac": "00:11:22:EF:AC:DF",
162                   "sctp-b-ingress-src_subnet_prefix_len": "0.0",
163                   "sctp-a-ingress_dst_addresses": "local",
164                   "sctp-a-egress_action": "pass",
165                   "fsb_volume_type_0": "SF-Default-SSD",
166                   "ncb2_Internal2_mac": "00:11:22:EF:AC:DF",
167                   "vlc_st_interface_type_sctp_a": "left",
168                   "vlc_st_interface_type_sctp_b": "right",
169                   "sctp-a-src_subnet_prefix_v6": "::",
170                   "vlc_st_version": "2",
171                   "sctp-b-egress_ethertype": "IPv4",
172                   "sctp-a-ingress_rule_application": "any",
173                   "gpb1_Internal2_mac": "00:11:22:EF:AC:DF",
174                   "instance_ip_family_v6": "v6",
175                   "sctp-a-ipv6-egress_src_start_port": "0",
176                   "sctp-b-ingress-src_start_port": "0.0",
177                   "sctp-b-ingress_dst_addresses": "local",
178                   "fsb1_Internal1_mac": "00:11:22:EF:AC:DF",
179                   "vlc_st_interface_type_oam": "management",
180                   "multi_stage_design": "true",
181                   "oam_sec_group_name": "oam-sec-group",
182                   "Internal2_net_gateway": "10.0.0.10",
183                   "sctp-a-ipv6-ingress-dst_end_port": "65535",
184                   "sctp-b-ipv6-egress-dst_start_port": "0",
185                   "Internal1_net_gateway": "10.0.0.10",
186                   "sctp-b-ipv6-egress_rule_protocol": "any",
187                   "gtp_sec_group_name": "gtp-sec-group",
188                   "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
189                   "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
190                   "sctp-a-ipv6-ingress_dst_addresses": "local",
191                   "sctp-a-egress_rule_protocol": "icmp",
192                   "sctp-b-ipv6-egress_action": "pass",
193                   "sctp-a-ipv6-egress_action": "pass",
194                   "Internal1_shared": "false",
195                   "sctp-b-ipv6-ingress_rule_protocol": "any",
196                   "Internal2_net_cidr_len": "17",
197                   "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
198                   "sctp-a-ingress-src_end_port": "65535.0",
199                   "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
200                   "sctp-a-egress-dst_end_port": "65535.0",
201                   "sctp-a-ingress_action": "pass",
202                   "sctp-b-egress_rule_protocol": "icmp",
203                   "sctp-b-ipv6-ingress_action": "pass",
204                   "vlc_st_service_type": "firewall",
205                   "sctp-b-ipv6-egress_dst_end_port": "65535",
206                   "sctp-b-ipv6-ingress-dst_start_port": "0",
207                   "vlc2_Internal2_mac": "00:11:22:EF:AC:DF",
208                   "vlc_st_availability_zone": "true",
209                   "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
210                   "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
211                   "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
212                   "Internal1_allow_transit": "true",
213                   "gpb_flavor_name": "nv.c20r64d1",
214                   "availability_zone_max_count": "1",
215                   "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
216                   "sctp-b-ipv6-ingress_dst_addresses": "local",
217                   "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
218                   "sctp-b-ipv6-ingress_ethertype": "IPv4",
219                   "vlc1_Internal2_mac": "00:11:22:EF:AC:DF",
220                   "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
221                   "sctp-a-ipv6-ingress_action": "pass",
222                   "Internal1_rpf": "disable",
223                   "sctp-b-ingress_ethertype": "IPv4",
224                   "sctp-b-egress_rule_application": "any",
225                   "sctp-b-ingress-src_end_port": "65535.0",
226                   "sctp-a-ipv6-ingress_rule_protocol": "any",
227                   "sctp-a-ingress-src_start_port": "0.0",
228                   "sctp-b-egress-dst_end_port": "65535.0"
229                 },
230                 "type": "VF",
231                 "modelCustomizationName": "VF_vMee 0",
232                 "vfModules": {
233                   "vf_vmee0..VfVmee..vmme_vlc..module-1": {
234                     "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
235                     "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
236                     "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
237                     "description": null,
238                     "name": "VfVmee..vmme_vlc..module-1",
239                     "version": "2",
240                     "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
241                     "properties": {
242                       "minCountInstances": 0,
243                       "maxCountInstances": null,
244                       "initialCount": 0,
245                       "vfModuleLabel": "vmme_vlc"
246                     },
247                     "inputs": {},
248                     "volumeGroupAllowed": true
249                   },
250                   "vf_vmee0..VfVmee..vmme_gpb..module-2": {
251                     "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
252                     "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
253                     "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
254                     "description": null,
255                     "name": "VfVmee..vmme_gpb..module-2",
256                     "version": "2",
257                     "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
258                     "properties": {
259                       "minCountInstances": 0,
260                       "maxCountInstances": null,
261                       "initialCount": 0,
262                       "vfModuleLabel": "vmme_gpb"
263                     },
264                     "inputs": {},
265                     "volumeGroupAllowed": false
266                   },
267                   "vf_vmee0..VfVmee..base_vmme..module-0": {
268                     "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
269                     "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
270                     "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
271                     "description": null,
272                     "name": "VfVmee..base_vmme..module-0",
273                     "version": "2",
274                     "modelCustomizationName": "VfVmee..base_vmme..module-0",
275                     "properties": {
276                       "minCountInstances": 1,
277                       "maxCountInstances": 1,
278                       "initialCount": 1,
279                       "vfModuleLabel": "base_vmme"
280                     },
281                     "inputs": {},
282                     "volumeGroupAllowed": true
283                   }
284                 },
285                 "volumeGroups": {
286                   "vf_vmee0..VfVmee..base_vmme..module-0": {
287                     "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
288                     "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
289                     "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
290                     "description": null,
291                     "name": "VfVmee..base_vmme..module-0",
292                     "version": "2",
293                     "modelCustomizationName": "VfVmee..base_vmme..module-0",
294                     "properties": {
295                       "minCountInstances": 1,
296                       "maxCountInstances": 1,
297                       "initialCount": 1,
298                       "vfModuleLabel": "base_vmme"
299                     },
300                     "inputs": {}
301                   }
302                 },
303                 "vfcInstanceGroups": {}
304               }
305             },
306             "networks": {
307               "ExtVL 0": {
308                 "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
309                 "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
310                 "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
311                 "name": "ExtVL",
312                 "version": "37.0",
313                 "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
314                 "inputs": {},
315                 "commands": {},
316                 "properties": {
317                   "network_assignments": "{is_external_network=false, ipv4_subnet_default_assignment={min_subnets_count=1}, ecomp_generated_network_assignment=false, ipv6_subnet_default_assignment={min_subnets_count=1}}",
318                   "exVL_naming": "{ecomp_generated_naming=true}",
319                   "network_flows": "{is_network_policy=false, is_bound_to_vpn=false}",
320                   "network_homing": "{ecomp_selected_instance_node_target=false}"
321                 },
322                 "type": "VL",
323                 "modelCustomizationName": "ExtVL 0"
324               }
325             },
326             "collectionResource": {},
327             "configurations": {
328               "Port Mirroring Configuration By Policy 0": {
329                 "uuid": "b4398538-e89d-4f13-b33d-ca323434ba50",
330                 "invariantUuid": "6ef0ca40-f366-4897-951f-abd65d25f6f7",
331                 "description": "A port mirroring configuration by policy object",
332                 "name": "Port Mirroring Configuration By Policy",
333                 "version": "27.0",
334                 "customizationUuid": "3c3b7b8d-8669-4b3b-8664-61970041fad2",
335                 "inputs": {},
336                 "commands": {},
337                 "properties": {},
338                 "type": "Configuration",
339                 "modelCustomizationName": "Port Mirroring Configuration By Policy 0",
340                 "sourceNodes": [],
341                 "collectorNodes": null,
342                 "configurationByPolicy": false
343               }
344             },
345             "serviceProxies": {},
346             "vfModules": {
347               "vf_vmee0..VfVmee..vmme_vlc..module-1": {
348                 "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
349                 "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
350                 "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
351                 "description": null,
352                 "name": "VfVmee..vmme_vlc..module-1",
353                 "version": "2",
354                 "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
355                 "properties": {
356                   "minCountInstances": 0,
357                   "maxCountInstances": null,
358                   "initialCount": 0,
359                   "vfModuleLabel": "vmme_vlc"
360                 },
361                 "inputs": {},
362                 "volumeGroupAllowed": true
363               },
364               "vf_vmee0..VfVmee..vmme_gpb..module-2": {
365                 "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
366                 "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
367                 "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
368                 "description": null,
369                 "name": "VfVmee..vmme_gpb..module-2",
370                 "version": "2",
371                 "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
372                 "properties": {
373                   "minCountInstances": 0,
374                   "maxCountInstances": null,
375                   "initialCount": 0,
376                   "vfModuleLabel": "vmme_gpb"
377                 },
378                 "inputs": {},
379                 "volumeGroupAllowed": false
380               },
381               "vf_vmee0..VfVmee..base_vmme..module-0": {
382                 "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
383                 "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
384                 "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
385                 "description": null,
386                 "name": "VfVmee..base_vmme..module-0",
387                 "version": "2",
388                 "modelCustomizationName": "VfVmee..base_vmme..module-0",
389                 "properties": {
390                   "minCountInstances": 1,
391                   "maxCountInstances": 1,
392                   "initialCount": 1,
393                   "vfModuleLabel": "base_vmme"
394                 },
395                 "inputs": {},
396                 "volumeGroupAllowed": true
397               }
398             },
399             "volumeGroups": {
400               "vf_vmee0..VfVmee..base_vmme..module-0": {
401                 "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
402                 "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
403                 "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
404                 "description": null,
405                 "name": "VfVmee..base_vmme..module-0",
406                 "version": "2",
407                 "modelCustomizationName": "VfVmee..base_vmme..module-0",
408                 "properties": {
409                   "minCountInstances": 1,
410                   "maxCountInstances": 1,
411                   "initialCount": 1,
412                   "vfModuleLabel": "base_vmme"
413                 },
414                 "inputs": {}
415               }
416             },
417             "pnfs": {}
418           }
419         },
420         "serviceInstance": {},
421         "lcpRegionsAndTenants": {
422           "lcpRegionList": [
423             {
424               "id": "JANET25",
425               "name": "JANET25",
426               "isPermitted": true
427             },
428             {
429               "id": "hvf6",
430               "name": "hvf6",
431               "isPermitted": true
432             }
433           ],
434           "lcpRegionsTenantsMap": {
435             "JANET25": [
436               {
437                 "id": "092eb9e8e4b7412e8787dd091bc58e86",
438                 "name": "USP-SIP-IC-24335-T-01",
439                 "isPermitted": true
440               }
441             ],
442             "hvf6": [
443               {
444                 "id": "bae71557c5bb4d5aac6743a4e5f1d054",
445                 "name": "AIN Web Tool-15-D-testalexandria",
446                 "isPermitted": true
447               },
448               {
449                 "id": "229bcdc6eaeb4ca59d55221141d01f8e",
450                 "name": "AIN Web Tool-15-D-STTest2",
451                 "isPermitted": true
452               },
453               {
454                 "id": "1178612d2b394be4834ad77f567c0af2",
455                 "name": "AIN Web Tool-15-D-SSPtestcustome",
456                 "isPermitted": true
457               },
458               {
459                 "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
460                 "name": "AIN Web Tool-15-D-UncheckedEcopm",
461                 "isPermitted": true
462               },
463               {
464                 "id": "de007636e25249238447264a988a927b",
465                 "name": "AIN Web Tool-15-D-dfsdf",
466                 "isPermitted": true
467               },
468               {
469                 "id": "62f29b3613634ca6a3065cbe0e020c44",
470                 "name": "AIN/SMS-16-D-Multiservices1",
471                 "isPermitted": true
472               },
473               {
474                 "id": "649289e30d3244e0b48098114d63c2aa",
475                 "name": "AIN Web Tool-15-D-SSPST66",
476                 "isPermitted": true
477               },
478               {
479                 "id": "3f21eeea6c2c486bba31dab816c05a32",
480                 "name": "AIN Web Tool-15-D-ASSPST47",
481                 "isPermitted": true
482               },
483               {
484                 "id": "f60ce21d3ee6427586cff0d22b03b773",
485                 "name": "CESAR-100-D-sspjg67246",
486                 "isPermitted": true
487               },
488               {
489                 "id": "8774659e425f479895ae091bb5d46560",
490                 "name": "CESAR-100-D-sspjg68359",
491                 "isPermitted": true
492               },
493               {
494                 "id": "624eb554b0d147c19ff8885341760481",
495                 "name": "AINWebTool-15-D-iftach",
496                 "isPermitted": true
497               },
498               {
499                 "id": "214f55f5fc414c678059c383b03e4962",
500                 "name": "CESAR-100-D-sspjg612401",
501                 "isPermitted": true
502               },
503               {
504                 "id": "c90666c291664841bb98e4d981ff1db5",
505                 "name": "CESAR-100-D-sspjg621340",
506                 "isPermitted": true
507               },
508               {
509                 "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
510                 "name": "sspjg621351cloned",
511                 "isPermitted": true
512               },
513               {
514                 "id": "b386b768a3f24c8e953abbe0b3488c02",
515                 "name": "AINWebTool-15-D-eteancomp",
516                 "isPermitted": true
517               },
518               {
519                 "id": "dc6c4dbfd225474e9deaadd34968646c",
520                 "name": "AINWebTool-15-T-SPFET",
521                 "isPermitted": true
522               },
523               {
524                 "id": "02cb5030e9914aa4be120bd9ed1e19eb",
525                 "name": "AINWebTool-15-X-eeweww",
526                 "isPermitted": true
527               },
528               {
529                 "id": "f2f3830e4c984d45bcd00e1a04158a79",
530                 "name": "CESAR-100-D-spjg61909",
531                 "isPermitted": true
532               },
533               {
534                 "id": "05b91bd5137f4929878edd965755c06d",
535                 "name": "CESAR-100-D-sspjg621512cloned",
536                 "isPermitted": true
537               },
538               {
539                 "id": "7002fbe8482d4a989ddf445b1ce336e0",
540                 "name": "AINWebTool-15-X-vdr",
541                 "isPermitted": true
542               },
543               {
544                 "id": "4008522be43741dcb1f5422022a2aa0b",
545                 "name": "AINWebTool-15-D-ssasa",
546                 "isPermitted": true
547               },
548               {
549                 "id": "f44e2e96a1b6476abfda2fa407b00169",
550                 "name": "AINWebTool-15-D-PFNPT",
551                 "isPermitted": true
552               },
553               {
554                 "id": "b69a52bec8a84669a37a1e8b72708be7",
555                 "name": "AINWebTool-15-X-vdre",
556                 "isPermitted": true
557               },
558               {
559                 "id": "fac7d9fd56154caeb9332202dcf2969f",
560                 "name": "AINWebTool-15-X-NONPODECOMP",
561                 "isPermitted": true
562               },
563               {
564                 "id": "2d34d8396e194eb49969fd61ffbff961",
565                 "name": "DN5242-Nov16-T5",
566                 "isPermitted": true
567               },
568               {
569                 "id": "cb42a77ff45b48a8b8deb83bb64acc74",
570                 "name": "ro-T11",
571                 "isPermitted": true
572               },
573               {
574                 "id": "fa45ca53c80b492fa8be5477cd84fc2b",
575                 "name": "ro-T112",
576                 "isPermitted": true
577               },
578               {
579                 "id": "4914ab0ab3a743e58f0eefdacc1dde77",
580                 "name": "DN5242-Nov21-T1",
581                 "isPermitted": true
582               },
583               {
584                 "id": "d0a3e3f2964542259d155a81c41aadc3",
585                 "name": "test-hvf6-09",
586                 "isPermitted": true
587               },
588               {
589                 "id": "cbb99fe4ada84631b7baf046b6fd2044",
590                 "name": "DN5242-Nov16-T3",
591                 "isPermitted": true
592               }
593             ]
594           }
595         },
596         "productFamilies": [
597           {
598             "id": "ebc3bc3d-62fd-4a3f-a037-f619df4ff034",
599             "name": "SCOTTIE",
600             "isPermitted": true
601           },
602           {
603             "id": "17cc1042-527b-11e6-beb8-9e71128cae77",
604             "name": "IGNACIO",
605             "isPermitted": true
606           },
607           {
608             "id": "36b4733a-53f4-4cc8-8ff0-9172e5fc4b8e",
609             "name": "Christie",
610             "isPermitted": true
611           },
612           {
613             "id": "a4f6f2ae-9bf5-4ed7-b904-06b2099c4bd7",
614             "name": "Enhanced Services",
615             "isPermitted": true
616           },
617           {
618             "id": "vTerrance",
619             "name": "vTerrance",
620             "isPermitted": true
621           },
622           {
623             "id": "323d69d9-2efe-4r45-ay0a-89ea7ard4e6f",
624             "name": "vSCP",
625             "isPermitted": true
626           },
627           {
628             "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
629             "name": "Emanuel",
630             "isPermitted": true
631           },
632           {
633             "id": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
634             "name": "BVOIP",
635             "isPermitted": true
636           },
637           {
638             "id": "db171b8f-115c-4992-a2e3-ee04cae357e0",
639             "name": "LINDSEY",
640             "isPermitted": true
641           },
642           {
643             "id": "LRSI-OSPF",
644             "name": "LRSI-OSPF",
645             "isPermitted": true
646           },
647           {
648             "id": "vRosemarie",
649             "name": "HNGATEWAY",
650             "isPermitted": true
651           },
652           {
653             "id": "vHNPaas",
654             "name": "WILKINS",
655             "isPermitted": true
656           },
657           {
658             "id": "e433710f-9217-458d-a79d-1c7aff376d89",
659             "name": "TYLER SILVIA",
660             "isPermitted": true
661           },
662           {
663             "id": "b6a3f28c-eebf-494c-a900-055cc7c874ce",
664             "name": "VROUTER",
665             "isPermitted": true
666           },
667           {
668             "id": "Cisneros",
669             "name": "vMuriel",
670             "isPermitted": true
671           },
672           {
673             "id": "0ee8c1bc-7cbd-4b0a-a1ac-e9999255abc1",
674             "name": "CARA Griffin",
675             "isPermitted": true
676           },
677           {
678             "id": "c7611ebe-c324-48f1-8085-94aef0c6ef3d",
679             "name": "DARREN MCGEE",
680             "isPermitted": true
681           },
682           {
683             "id": "e30755dc-5673-4b6b-9dcf-9abdd96b93d1",
684             "name": "Transport",
685             "isPermitted": true
686           },
687           {
688             "id": "vSalvatore",
689             "name": "vSalvatore",
690             "isPermitted": true
691           },
692           {
693             "id": "d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4",
694             "name": "Josefina",
695             "isPermitted": true
696           },
697           {
698             "id": "vHubbard",
699             "name": "vHubbard",
700             "isPermitted": true
701           },
702           {
703             "id": "12a96a9d-4b4c-4349-a950-fe1159602621",
704             "name": "DARREN MCGEE",
705             "isPermitted": true
706           }
707         ],
708         "serviceTypes": {
709           "e433710f-9217-458d-a79d-1c7aff376d89": [
710             {
711               "id": "0",
712               "name": "vRichardson",
713               "isPermitted": false
714             },
715             {
716               "id": "1",
717               "name": "TYLER SILVIA",
718               "isPermitted": true
719             },
720             {
721               "id": "2",
722               "name": "Emanuel",
723               "isPermitted": false
724             },
725             {
726               "id": "3",
727               "name": "vJamie",
728               "isPermitted": false
729             },
730             {
731               "id": "4",
732               "name": "vVoiceMail",
733               "isPermitted": false
734             },
735             {
736               "id": "5",
737               "name": "Kennedy",
738               "isPermitted": false
739             },
740             {
741               "id": "6",
742               "name": "vSEGW",
743               "isPermitted": false
744             },
745             {
746               "id": "7",
747               "name": "vVM",
748               "isPermitted": false
749             },
750             {
751               "id": "8",
752               "name": "vOTA",
753               "isPermitted": false
754             },
755             {
756               "id": "9",
757               "name": "vMME",
758               "isPermitted": false
759             },
760             {
761               "id": "10",
762               "name": "vMNS",
763               "isPermitted": false
764             },
765             {
766               "id": "11",
767               "name": "vSCP",
768               "isPermitted": false
769             },
770             {
771               "id": "12",
772               "name": "VPMS",
773               "isPermitted": false
774             },
775             {
776               "id": "13",
777               "name": "vMMSC",
778               "isPermitted": false
779             },
780             {
781               "id": "14",
782               "name": "SSD",
783               "isPermitted": false
784             },
785             {
786               "id": "15",
787               "name": "vMOG",
788               "isPermitted": false
789             },
790             {
791               "id": "16",
792               "name": "LINDSEY",
793               "isPermitted": false
794             },
795             {
796               "id": "17",
797               "name": "JOHANNA_SANTOS",
798               "isPermitted": false
799             },
800             {
801               "id": "18",
802               "name": "vCarroll",
803               "isPermitted": false
804             }
805           ]
806         },
807         "aicZones": [
808           {
809             "id": "NFT1",
810             "name": "NFTJSSSS-NFT1"
811           },
812           {
813             "id": "JAG1",
814             "name": "YUDFJULP-JAG1"
815           },
816           {
817             "id": "YYY1",
818             "name": "UUUAIAAI-YYY1"
819           },
820           {
821             "id": "BAN1",
822             "name": "VSDKYUTP-BAN1"
823           },
824           {
825             "id": "DKJ1",
826             "name": "DKJSJDKA-DKJ1"
827           },
828           {
829             "id": "MCS1",
830             "name": "ASACMAMS-MCS1"
831           },
832           {
833             "id": "UIO1",
834             "name": "uioclli1-UIO1"
835           },
836           {
837             "id": "RAJ1",
838             "name": "YGBIJNLQ-RAJ1"
839           },
840           {
841             "id": "OPA1",
842             "name": "opaclli1-OPA1"
843           },
844           {
845             "id": "SDE1",
846             "name": "ZXCVBNMA-SDE1"
847           },
848           {
849             "id": "VEN2",
850             "name": "FGHJUHIL-VEN2"
851           },
852           {
853             "id": "ORL1",
854             "name": "ORLDFLMA-ORL1"
855           },
856           {
857             "id": "JAD1",
858             "name": "JADECLLI-JAD1"
859           },
860           {
861             "id": "ZXL1",
862             "name": "LWLWCANN-ZXL1"
863           },
864           {
865             "id": "CKL1",
866             "name": "CLKSKCKK-CKL1"
867           },
868           {
869             "id": "SDF1",
870             "name": "sdfclli1-SDF1"
871           },
872           {
873             "id": "RAD1",
874             "name": "RADICAL1-RAD1"
875           },
876           {
877             "id": "KIT1",
878             "name": "BHYJFGLN-KIT1"
879           },
880           {
881             "id": "REL1",
882             "name": "INGERFGT-REL1"
883           },
884           {
885             "id": "JNL1",
886             "name": "CJALSDAC-JNL1"
887           },
888           {
889             "id": "OLK1",
890             "name": "OLKOLKLS-OLK1"
891           },
892           {
893             "id": "CHI1",
894             "name": "CHILLIWE-CHI1"
895           },
896           {
897             "id": "UUU4",
898             "name": "UUUAAAUU-UUU4"
899           },
900           {
901             "id": "TUF1",
902             "name": "TUFCLLI1-TUF1"
903           },
904           {
905             "id": "KJN1",
906             "name": "CKALDKSA-KJN1"
907           },
908           {
909             "id": "SAM1",
910             "name": "SNDGCA64-SAN1"
911           },
912           {
913             "id": "SCK1",
914             "name": "SCKSCKSK-SCK1"
915           },
916           {
917             "id": "HJH1",
918             "name": "AOEEQQQD-HJH1"
919           },
920           {
921             "id": "HGD1",
922             "name": "SDFQWHGD-HGD1"
923           },
924           {
925             "id": "KOR1",
926             "name": "HYFLNBVT-KOR1"
927           },
928           {
929             "id": "ATL43",
930             "name": "AICLOCID-ATL43"
931           },
932           {
933             "id": "ATL54",
934             "name": "AICFTAAI-ATL54"
935           },
936           {
937             "id": "ATL66",
938             "name": "CLLIAAII-ATL66"
939           },
940           {
941             "id": "VEL1",
942             "name": "BNMLKUIK-VEL1"
943           },
944           {
945             "id": "ICC1",
946             "name": "SANJITAT-ICC1"
947           },
948           {
949             "id": "MNT11",
950             "name": "WSXEFBTH-MNT11"
951           },
952           {
953             "id": "DEF2",
954             "name": "WSBHGTYL-DEF2"
955           },
956           {
957             "id": "MAD11",
958             "name": "SDFQWGKL-MAD11"
959           },
960           {
961             "id": "OLG1",
962             "name": "OLHOLHOL-OLG1"
963           },
964           {
965             "id": "GAR1",
966             "name": "NGFVSJKO-GAR1"
967           },
968           {
969             "id": "SAN22",
970             "name": "GNVLSCTL-SAN22"
971           },
972           {
973             "id": "HRG1",
974             "name": "HRGHRGGS-HRG1"
975           },
976           {
977             "id": "JCS1",
978             "name": "JCSJSCJS-JCS1"
979           },
980           {
981             "id": "DHA12",
982             "name": "WSXEDECF-DHA12"
983           },
984           {
985             "id": "HJE1",
986             "name": "AOEEWWWD-HJE1"
987           },
988           {
989             "id": "NCA1",
990             "name": "NCANCANN-NCA1"
991           },
992           {
993             "id": "IOP1",
994             "name": "iopclli1-IOP1"
995           },
996           {
997             "id": "RTY1",
998             "name": "rtyclli1-RTY1"
999           },
1000           {
1001             "id": "KAP1",
1002             "name": "HIOUYTRQ-KAP1"
1003           },
1004           {
1005             "id": "ZEN1",
1006             "name": "ZENCLLI1-ZEN1"
1007           },
1008           {
1009             "id": "HKA1",
1010             "name": "JAKHLASS-HKA1"
1011           },
1012           {
1013             "id": "CQK1",
1014             "name": "CQKSCAKK-CQK1"
1015           },
1016           {
1017             "id": "SAI1",
1018             "name": "UBEKQLPD-SAI1"
1019           },
1020           {
1021             "id": "ERT1",
1022             "name": "ertclli1-ERT1"
1023           },
1024           {
1025             "id": "IBB1",
1026             "name": "PLMKOIJU-IBB1"
1027           },
1028           {
1029             "id": "TIR2",
1030             "name": "PLKINHYI-TIR2"
1031           },
1032           {
1033             "id": "HSD1",
1034             "name": "CHASKCDS-HSD1"
1035           },
1036           {
1037             "id": "SLF78",
1038             "name": "SDCTLFN1-SLF78"
1039           },
1040           {
1041             "id": "SEE78",
1042             "name": "SDCTEEE4-SEE78"
1043           },
1044           {
1045             "id": "SAN13",
1046             "name": "TOKYJPFA-SAN13"
1047           },
1048           {
1049             "id": "SAA78",
1050             "name": "SDCTAAA1-SAA78"
1051           },
1052           {
1053             "id": "LUC1",
1054             "name": "ATLDFGYC-LUC1"
1055           },
1056           {
1057             "id": "AMD13",
1058             "name": "MEMATLAN-AMD13"
1059           },
1060           {
1061             "id": "TOR1",
1062             "name": "TOROONXN-TOR1"
1063           },
1064           {
1065             "id": "QWE1",
1066             "name": "QWECLLI1-QWE1"
1067           },
1068           {
1069             "id": "ZOG1",
1070             "name": "ZOGASTRO-ZOG1"
1071           },
1072           {
1073             "id": "CAL33",
1074             "name": "CALIFORN-CAL33"
1075           },
1076           {
1077             "id": "SHH78",
1078             "name": "SDIT1HHH-SHH78"
1079           },
1080           {
1081             "id": "DSA1",
1082             "name": "LKJHGFDS-DSA1"
1083           },
1084           {
1085             "id": "CLG1",
1086             "name": "CLGRABAD-CLG1"
1087           },
1088           {
1089             "id": "BNA1",
1090             "name": "BNARAGBK-BNA1"
1091           },
1092           {
1093             "id": "ATL84",
1094             "name": "CANTTCOC-ATL84"
1095           },
1096           {
1097             "id": "APP1",
1098             "name": "WBHGTYUI-APP1"
1099           },
1100           {
1101             "id": "RJN1",
1102             "name": "RJNRBZAW-RJN1"
1103           },
1104           {
1105             "id": "EHH78",
1106             "name": "SDCSHHH5-EHH78"
1107           },
1108           {
1109             "id": "mac10",
1110             "name": "PKGTESTF-mac10"
1111           },
1112           {
1113             "id": "SXB78",
1114             "name": "SDCTGXB1-SXB78"
1115           },
1116           {
1117             "id": "SAX78",
1118             "name": "SDCTAXG1-SAX78"
1119           },
1120           {
1121             "id": "SYD1",
1122             "name": "SYDNAUBV-SYD1"
1123           },
1124           {
1125             "id": "TOK1",
1126             "name": "TOKYJPFA-TOK1"
1127           },
1128           {
1129             "id": "KGM2",
1130             "name": "KGMTNC20-KGM2"
1131           },
1132           {
1133             "id": "DCC1b",
1134             "name": "POIUYTGH-DCC1b"
1135           },
1136           {
1137             "id": "SKK78",
1138             "name": "SDCTKKK1-SKK78"
1139           },
1140           {
1141             "id": "SGG78",
1142             "name": "SDCTGGG1-SGG78"
1143           },
1144           {
1145             "id": "SJJ78",
1146             "name": "SDCTJJJ1-SJJ78"
1147           },
1148           {
1149             "id": "SBX78",
1150             "name": "SDCTBXG1-SBX78"
1151           },
1152           {
1153             "id": "LAG1",
1154             "name": "LARGIZON-LAG1"
1155           },
1156           {
1157             "id": "IAA1",
1158             "name": "QAZXSWED-IAA1"
1159           },
1160           {
1161             "id": "POI1",
1162             "name": "PLMNJKIU-POI1"
1163           },
1164           {
1165             "id": "LAG1a",
1166             "name": "LARGIZON-LAG1a"
1167           },
1168           {
1169             "id": "PBL1",
1170             "name": "PBLAPBAI-PBL1"
1171           },
1172           {
1173             "id": "LAG45",
1174             "name": "LARGIZON-LAG1a"
1175           },
1176           {
1177             "id": "MAR1",
1178             "name": "MNBVCXZM-MAR1"
1179           },
1180           {
1181             "id": "HST70",
1182             "name": "HSTNTX70-HST70"
1183           },
1184           {
1185             "id": "DCC1a",
1186             "name": "POIUYTGH-DCC1a"
1187           },
1188           {
1189             "id": "TOL1",
1190             "name": "TOLDOH21-TOL1"
1191           },
1192           {
1193             "id": "LON1",
1194             "name": "LONEENCO-LON1"
1195           },
1196           {
1197             "id": "SJU78",
1198             "name": "SDIT1JUB-SJU78"
1199           },
1200           {
1201             "id": "STN27",
1202             "name": "HSTNTX01-STN27"
1203           },
1204           {
1205             "id": "SSW56",
1206             "name": "ss8126GT-SSW56"
1207           },
1208           {
1209             "id": "SBB78",
1210             "name": "SDIT1BBB-SBB78"
1211           },
1212           {
1213             "id": "DCC3",
1214             "name": "POIUYTGH-DCC3"
1215           },
1216           {
1217             "id": "GNV1",
1218             "name": "GNVLSCTL-GNV1"
1219           },
1220           {
1221             "id": "WAS1",
1222             "name": "WASHDCSW-WAS1"
1223           },
1224           {
1225             "id": "TOY1",
1226             "name": "TORYONNZ-TOY1"
1227           },
1228           {
1229             "id": "STT1",
1230             "name": "STTLWA02-STT1"
1231           },
1232           {
1233             "id": "STG1",
1234             "name": "STTGGE62-STG1"
1235           },
1236           {
1237             "id": "SLL78",
1238             "name": "SDCTLLL1-SLL78"
1239           },
1240           {
1241             "id": "SBU78",
1242             "name": "SDIT1BUB-SBU78"
1243           },
1244           {
1245             "id": "ATL2",
1246             "name": "ATLNGANW-ATL2"
1247           },
1248           {
1249             "id": "BOT1",
1250             "name": "BOTHWAKY-BOT1"
1251           },
1252           {
1253             "id": "SNG1",
1254             "name": "SNGPSIAU-SNG1"
1255           },
1256           {
1257             "id": "NYC1",
1258             "name": "NYCMNY54-NYC1"
1259           },
1260           {
1261             "id": "LAG1b",
1262             "name": "LARGIZON-LAG1b"
1263           },
1264           {
1265             "id": "AMD15",
1266             "name": "AMDFAA01-AMD15"
1267           },
1268           {
1269             "id": "SNA1",
1270             "name": "SNANTXCA-SNA1"
1271           },
1272           {
1273             "id": "PLT1",
1274             "name": "PLTNCA60-PLT1"
1275           },
1276           {
1277             "id": "TLP1",
1278             "name": "TLPNXM18-TLP1"
1279           },
1280           {
1281             "id": "SDD81",
1282             "name": "SAIT1DD6-SDD81"
1283           },
1284           {
1285             "id": "DCC1",
1286             "name": "POIUYTGH-DCC1"
1287           },
1288           {
1289             "id": "DCC2",
1290             "name": "POIUYTGH-DCC2"
1291           },
1292           {
1293             "id": "OKC1",
1294             "name": "OKCBOK55-OKC1"
1295           },
1296           {
1297             "id": "PAR1",
1298             "name": "PARSFRCG-PAR1"
1299           },
1300           {
1301             "id": "TES36",
1302             "name": "ABCEETES-TES36"
1303           },
1304           {
1305             "id": "COM1",
1306             "name": "PLMKOPIU-COM1"
1307           },
1308           {
1309             "id": "ANI1",
1310             "name": "ATLNGTRE-ANI1"
1311           },
1312           {
1313             "id": "SDG78",
1314             "name": "SDIT1BDG-SDG78"
1315           },
1316           {
1317             "id": "mac20",
1318             "name": "PKGTESTF-mac20"
1319           },
1320           {
1321             "id": "DSF45",
1322             "name": "DSFBG123-DSF45"
1323           },
1324           {
1325             "id": "HST25",
1326             "name": "HSTNTX01-HST25"
1327           },
1328           {
1329             "id": "AMD18",
1330             "name": "AUDIMA01-AMD18"
1331           },
1332           {
1333             "id": "SAA80",
1334             "name": "SAIT9AA3-SAA80"
1335           },
1336           {
1337             "id": "SSA56",
1338             "name": "SSIT2AA7-SSA56"
1339           },
1340           {
1341             "id": "SDD82",
1342             "name": "SAIT1DD9-SDD82"
1343           },
1344           {
1345             "id": "JCV1",
1346             "name": "JCVLFLBW-JCV1"
1347           },
1348           {
1349             "id": "SUL2",
1350             "name": "WERTYUJK-SUL2"
1351           },
1352           {
1353             "id": "PUR1",
1354             "name": "purelyde-PUR1"
1355           },
1356           {
1357             "id": "FDE55",
1358             "name": "FDERT555-FDE55"
1359           },
1360           {
1361             "id": "SITE",
1362             "name": "LONEENCO-SITE"
1363           },
1364           {
1365             "id": "ATL1",
1366             "name": "ATLNGAMA-ATL1"
1367           },
1368           {
1369             "id": "JUL1",
1370             "name": "ZXCVBNMM-JUL1"
1371           },
1372           {
1373             "id": "TAT34",
1374             "name": "TESAAISB-TAT34"
1375           },
1376           {
1377             "id": "XCP12",
1378             "name": "CHKGH123-XCP12"
1379           },
1380           {
1381             "id": "RAI1",
1382             "name": "poiuytre-RAI1"
1383           },
1384           {
1385             "id": "HPO1",
1386             "name": "ATLNGAUP-HPO1"
1387           },
1388           {
1389             "id": "KJF12",
1390             "name": "KJFDH123-KJF12"
1391           },
1392           {
1393             "id": "SCC80",
1394             "name": "SAIT9CC3-SCC80"
1395           },
1396           {
1397             "id": "SAA12",
1398             "name": "SAIT9AF8-SAA12"
1399           },
1400           {
1401             "id": "SAA14",
1402             "name": "SAIT1AA9-SAA14"
1403           },
1404           {
1405             "id": "ATL35",
1406             "name": "TTESSAAI-ATL35"
1407           },
1408           {
1409             "id": "CWY1",
1410             "name": "CWYMOWBS-CWY1"
1411           },
1412           {
1413             "id": "ATL76",
1414             "name": "TELEPAAI-ATL76"
1415           },
1416           {
1417             "id": "DSL12",
1418             "name": "DSLFK242-DSL12"
1419           },
1420           {
1421             "id": "ATL53",
1422             "name": "AAIATLTE-ATL53"
1423           },
1424           {
1425             "id": "SAA11",
1426             "name": "SAIT9AA2-SAA11"
1427           },
1428           {
1429             "id": "ATL62",
1430             "name": "TESSASCH-ATL62"
1431           },
1432           {
1433             "id": "AUG1",
1434             "name": "ASDFGHJK-AUG1"
1435           },
1436           {
1437             "id": "POI22",
1438             "name": "POIUY123-POI22"
1439           },
1440           {
1441             "id": "SAA13",
1442             "name": "SAIT1AA9-SAA13"
1443           },
1444           {
1445             "id": "BHY17",
1446             "name": "BHYTFRF3-BHY17"
1447           },
1448           {
1449             "id": "LIS1",
1450             "name": "HOSTPROF-LIS1"
1451           },
1452           {
1453             "id": "SIP1",
1454             "name": "ZXCVBNMK-SIP1"
1455           },
1456           {
1457             "id": "ATL99",
1458             "name": "TEESTAAI-ATL43"
1459           },
1460           {
1461             "id": "ATL64",
1462             "name": "FORLOAAJ-ATL64"
1463           },
1464           {
1465             "id": "TAT33",
1466             "name": "TESAAISA-TAT33"
1467           },
1468           {
1469             "id": "RAD10",
1470             "name": "INDIPUNE-RAD10"
1471           },
1472           {
1473             "id": "RTW5",
1474             "name": "BHYTFRY4-RTW5"
1475           },
1476           {
1477             "id": "JGS1",
1478             "name": "KSJKKKKK-JGS1"
1479           },
1480           {
1481             "id": "ATL98",
1482             "name": "TEESTAAI-ATL43"
1483           },
1484           {
1485             "id": "WAN1",
1486             "name": "LEIWANGW-WAN1"
1487           },
1488           {
1489             "id": "ATL44",
1490             "name": "ATLSANAB-ATL44"
1491           },
1492           {
1493             "id": "RTD2",
1494             "name": "BHYTFRk4-RTD2"
1495           },
1496           {
1497             "id": "NIR1",
1498             "name": "ORFLMANA-NIR1"
1499           },
1500           {
1501             "id": "ATL75",
1502             "name": "SANAAIRE-ATL75"
1503           },
1504           {
1505             "id": "NUM1",
1506             "name": "QWERTYUI-NUM1"
1507           },
1508           {
1509             "id": "MTN32",
1510             "name": "MDTWNJ21-MTN32"
1511           },
1512           {
1513             "id": "RTZ4",
1514             "name": "BHYTFRZ6-RTZ4"
1515           },
1516           {
1517             "id": "ATL56",
1518             "name": "ATLSANAC-ATL56"
1519           },
1520           {
1521             "id": "AMS1",
1522             "name": "AMSTNLBW-AMS1"
1523           },
1524           {
1525             "id": "RCT1",
1526             "name": "AMSTERNL-RCT1"
1527           },
1528           {
1529             "id": "JAN1",
1530             "name": "ORFLMATT-JAN1"
1531           },
1532           {
1533             "id": "ABC14",
1534             "name": "TESAAISA-ABC14"
1535           },
1536           {
1537             "id": "TAT37",
1538             "name": "TESAAISD-TAT37"
1539           },
1540           {
1541             "id": "MIC54",
1542             "name": "MICHIGAN-MIC54"
1543           },
1544           {
1545             "id": "ABC11",
1546             "name": "ATLSANAI-ABC11"
1547           },
1548           {
1549             "id": "AMF11",
1550             "name": "AMDOCS01-AMF11"
1551           },
1552           {
1553             "id": "ATL63",
1554             "name": "ATLSANEW-ATL63"
1555           },
1556           {
1557             "id": "ABC12",
1558             "name": "ATLSECIA-ABC12"
1559           },
1560           {
1561             "id": "MTN20",
1562             "name": "MDTWNJ21-MTN20"
1563           },
1564           {
1565             "id": "ABC15",
1566             "name": "AAITESAN-ABC15"
1567           },
1568           {
1569             "id": "AVT1",
1570             "name": "AVTRFLHD-AVT1"
1571           },
1572           {
1573             "id": "ATL34",
1574             "name": "ATLSANAI-ATL34"
1575           }
1576         ],
1577         "categoryParameters": {
1578           "owningEntityList": [
1579             {
1580               "id": "aaa1",
1581               "name": "aaa1"
1582             },
1583             {
1584               "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
1585               "name": "WayneHolland"
1586             },
1587             {
1588               "id": "Melissa",
1589               "name": "Melissa"
1590             }
1591           ],
1592           "projectList": [
1593             {
1594               "id": "WATKINS",
1595               "name": "WATKINS"
1596             },
1597             {
1598               "id": "x1",
1599               "name": "x1"
1600             },
1601             {
1602               "id": "yyy1",
1603               "name": "yyy1"
1604             }
1605           ],
1606           "lineOfBusinessList": [
1607             {
1608               "id": "ONAP",
1609               "name": "ONAP"
1610             },
1611             {
1612               "id": "zzz1",
1613               "name": "zzz1"
1614             }
1615           ],
1616           "platformList": [
1617             {
1618               "id": "platform",
1619               "name": "platform"
1620             },
1621             {
1622               "id": "xxx1",
1623               "name": "xxx1"
1624             }
1625           ]
1626         },
1627         "type": "[LCP_REGIONS_AND_TENANTS] Update",
1628         "subscribers": [
1629           {
1630             "id": "CAR_2020_ER",
1631             "name": "CAR_2020_ER",
1632             "isPermitted": true
1633           },
1634           {
1635             "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
1636             "name": "JULIO ERICKSON",
1637             "isPermitted": false
1638           },
1639           {
1640             "id": "DHV1707-TestSubscriber-2",
1641             "name": "DALE BRIDGES",
1642             "isPermitted": false
1643           },
1644           {
1645             "id": "DHV1707-TestSubscriber-1",
1646             "name": "LLOYD BRIDGES",
1647             "isPermitted": false
1648           },
1649           {
1650             "id": "jimmy-example",
1651             "name": "JimmyExampleCust-20161102",
1652             "isPermitted": false
1653           },
1654           {
1655             "id": "jimmy-example2",
1656             "name": "JimmyExampleCust-20161103",
1657             "isPermitted": false
1658           },
1659           {
1660             "id": "ERICA5779-TestSub-PWT-102",
1661             "name": "ERICA5779-TestSub-PWT-102",
1662             "isPermitted": false
1663           },
1664           {
1665             "id": "ERICA5779-TestSub-PWT-101",
1666             "name": "ERICA5779-TestSub-PWT-101",
1667             "isPermitted": false
1668           },
1669           {
1670             "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
1671             "name": "Emanuel",
1672             "isPermitted": false
1673           },
1674           {
1675             "id": "ERICA5779-Subscriber-4",
1676             "name": "ERICA5779-Subscriber-5",
1677             "isPermitted": false
1678           },
1679           {
1680             "id": "ERICA5779-TestSub-PWT-103",
1681             "name": "ERICA5779-TestSub-PWT-103",
1682             "isPermitted": false
1683           },
1684           {
1685             "id": "ERICA5779-Subscriber-2",
1686             "name": "ERICA5779-Subscriber-2",
1687             "isPermitted": false
1688           },
1689           {
1690             "id": "e433710f-9217-458d-a79d-1c7aff376d89",
1691             "name": "SILVIA ROBBINS",
1692             "isPermitted": true
1693           },
1694           {
1695             "id": "ERICA5779-Subscriber-3",
1696             "name": "ERICA5779-Subscriber-3",
1697             "isPermitted": false
1698           },
1699           {
1700             "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
1701             "name": "CRAIG/ROBERTS",
1702             "isPermitted": false
1703           }
1704         ]
1705       }
1706     }
1707   }
1708 }
1709
1710 class MockFeatureFlagsService {}
1711
1712 describe('Service Control Generator', () => {
1713   let injector;
1714   let service: ServiceControlGenerator;
1715   let httpMock: HttpTestingController;
1716
1717
1718   beforeAll(done => (async () => {
1719     TestBed.configureTestingModule({
1720       imports: [HttpClientTestingModule],
1721       providers: [ServiceControlGenerator,
1722         GenericFormService,
1723         BasicControlGenerator,
1724         AaiService,
1725         FormBuilder,
1726         LogService,
1727         {provide:FeatureFlagsService, useClass: MockFeatureFlagsService},
1728         {provide: NgRedux, useClass: MockAppStore}]
1729     });
1730     await TestBed.compileComponents();
1731
1732     injector = getTestBed();
1733     service = injector.get(ServiceControlGenerator);
1734     httpMock = injector.get(HttpTestingController);
1735
1736   })().then(done).catch(done.fail));
1737
1738
1739   test('ServiceControlGenerator should return the correct controls with correct order', () => {
1740     const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
1741     const controls :FormControlModel[] = service.getMacroFormControls(serviceId);
1742     const globalSubscriberIdControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.GLOBAL_SUBSCRIBER_ID);
1743
1744     expect(globalSubscriberIdControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
1745     expect(globalSubscriberIdControl.dataTestId).toEqual('subscriberName');
1746     expect(globalSubscriberIdControl.type).toEqual(FormControlType.DROPDOWN);
1747     expect(globalSubscriberIdControl.isDisabled).toBeFalsy();
1748     expect(globalSubscriberIdControl.placeHolder).toEqual('Select Subscriber Name');
1749     expect(globalSubscriberIdControl.displayName).toEqual('Subscriber name');
1750     expect(globalSubscriberIdControl.onInit).toBeDefined();
1751     expect(globalSubscriberIdControl.onChange).toBeDefined();
1752
1753     const serviceTypeControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.SUBSCRIPTION_SERVICE_TYPE);
1754     expect(serviceTypeControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
1755     expect(serviceTypeControl.dataTestId).toEqual('serviceType');
1756     expect(serviceTypeControl.type).toEqual(FormControlType.DROPDOWN);
1757     expect(serviceTypeControl.isDisabled).toBeTruthy();
1758     expect(serviceTypeControl.placeHolder).toEqual('Select Service Type');
1759     expect(serviceTypeControl.displayName).toEqual('Service type');
1760     expect(serviceTypeControl.onInit).toBeDefined();
1761     expect(serviceTypeControl.onChange).toBeDefined();
1762
1763     const productFamilyControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.PRODUCT_FAMILY_ID);
1764     expect(productFamilyControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
1765     expect(productFamilyControl.dataTestId).toEqual('productFamily');
1766     expect(productFamilyControl.type).toEqual(FormControlType.DROPDOWN);
1767     expect(productFamilyControl.isDisabled).toBeFalsy();
1768     expect(productFamilyControl.placeHolder).toEqual('Select Product Family');
1769     expect(productFamilyControl.displayName).toEqual('Product family');
1770     expect(productFamilyControl.onInit).toBeDefined();
1771
1772     const lcpRegionControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.LCPCLOUD_REGION_ID);
1773     expect(lcpRegionControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
1774     expect(lcpRegionControl.dataTestId).toEqual('lcpRegion');
1775     expect(lcpRegionControl.type).toEqual(FormControlType.DROPDOWN);
1776     expect(lcpRegionControl.isDisabled).toBeTruthy();
1777     expect(lcpRegionControl.placeHolder).toEqual('Select LCP Region');
1778     expect(lcpRegionControl.displayName).toEqual('LCP region');
1779     expect(lcpRegionControl.onInit).toBeDefined();
1780     expect(lcpRegionControl.onChange).toBeDefined();
1781
1782     const tenantControl : DropdownFormControl = <DropdownFormControl>controls.find(item => item.controlName === FormControlNames.TENANT_ID);
1783     expect(tenantControl.validations.find(val => val.validatorName === ValidatorOptions.required)).toBeDefined();
1784     expect(tenantControl.dataTestId).toEqual('tenant');
1785     expect(tenantControl.type).toEqual(FormControlType.DROPDOWN);
1786     expect(tenantControl.isDisabled).toBeTruthy();
1787     expect(tenantControl.placeHolder).toEqual('Select Tenant');
1788     expect(tenantControl.displayName).toEqual('Tenant');
1789     expect(tenantControl.onInit).toBeDefined();
1790     expect(tenantControl.onChange).toBeDefined();
1791
1792     const instanceNameControl: FormControlModel = <FormControlModel>controls.find(item => item.controlName === FormControlNames.INSTANCE_NAME);
1793     const instanceNameValidator: ValidatorModel = instanceNameControl.validations.find(val => val.validatorName === ValidatorOptions.pattern);
1794     expect(instanceNameValidator.validatorArg).toEqual(/^[a-zA-Z0-9._-]*$/);
1795   });
1796
1797
1798   test('getMacroFormControls should return the correct order of controls', () => {
1799     // Order the fields
1800     // 1.       Instance name
1801     // 2.       Subscriber name
1802     // 3.       Service type
1803     // 4.       Owning entity (fix Entity to entity)
1804     // 5.       Product family
1805     // 6.       LCP region
1806     // 7.       Tenant
1807     // 8.       AIC zone (fix Zone to zone)
1808     // 9.       Pause on pause points
1809     // 10.      Project
1810     // 11.      Rollback on failure
1811     const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
1812     const controls :FormControlModel[] = service.getMacroFormControls(serviceId);
1813
1814
1815
1816     const controlsOrderNames = [
1817       FormControlNames.INSTANCE_NAME,
1818       FormControlNames.GLOBAL_SUBSCRIBER_ID,
1819       FormControlNames.SUBSCRIPTION_SERVICE_TYPE ,
1820       FormControlNames.OWNING_ENTITY_ID ,
1821       FormControlNames.PRODUCT_FAMILY_ID ,
1822       FormControlNames.LCPCLOUD_REGION_ID ,
1823       FormControlNames.TENANT_ID ,
1824       FormControlNames.AICZONE_ID ,
1825       FormControlNames.PAUSE,
1826       FormControlNames.PROJECT_NAME ,
1827       FormControlNames.ROLLBACK_ON_FAILURE];
1828     expect(controls.length).toEqual(11);
1829     for(let i = 0 ; i < controls.length ; i++){
1830       expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
1831     }
1832   });
1833
1834   test('getAlacartFormControls should return the correct order of controls', () => {
1835     // Order the fields
1836     // 1.       Instance name
1837     // 2.       Subscriber name
1838     // 3.       Service type
1839     // 4.       Owning entity (fix Entity to entity)
1840     // 5.       Project
1841     // 6.       Rollback on failure
1842     const serviceId : string = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
1843     const controls :FormControlModel[] = service.getAlaCartControls(serviceId);
1844     const controlsOrderNames = [
1845       FormControlNames.INSTANCE_NAME,
1846       FormControlNames.GLOBAL_SUBSCRIBER_ID,
1847       FormControlNames.SUBSCRIPTION_SERVICE_TYPE ,
1848       FormControlNames.OWNING_ENTITY_ID ,
1849       FormControlNames.PROJECT_NAME ,
1850       FormControlNames.ROLLBACK_ON_FAILURE];
1851
1852     expect(controls.length).toEqual(6);
1853     for(let i = 0 ; i < controls.length ; i++){
1854       expect(controls[i].controlName).toEqual(controlsOrderNames[i]);
1855     }
1856   });
1857
1858 });
1859