parameter-definition.service : added test case
[appc/cdt.git] / src / app / vnfs / build-artifacts / parameter-definitions / parameter-definition.service.spec.ts
1 /*
2 ============LICENSE_START==========================================
3 ===================================================================
4 Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
5
6 Modification Copyright (C) 2018 IBM.
7 ===================================================================
8
9 Unless otherwise specified, all software contained herein is licensed
10 under the Apache License, Version 2.0 (the License);
11 you may not use this software except in compliance with the License.
12 You may obtain a copy of the License at
13
14     http://www.apache.org/licenses/LICENSE-2.0
15
16 Unless required by applicable law or agreed to in writing, software
17 distributed under the License is distributed on an "AS IS" BASIS,
18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 See the License for the specific language governing permissions and
20 limitations under the License.
21
22 ECOMP is a trademark and service mark of AT&T Intellectual Property.
23 ============LICENSE_END============================================
24 */
25
26
27 /* tslint:disable:no-unused-variable */
28
29 import { inject, TestBed } from '@angular/core/testing';
30 import { ParameterDefinitionService } from './parameter-definition.service';
31 import { NotificationsService } from 'angular2-notifications';
32 import { MappingEditorService } from '../../../shared/services/mapping-editor.service';
33 import { HttpUtilService } from '../../../shared/services/httpUtil/http-util.service';
34 import { UtilityService } from '../../../shared/services/utilityService/utility.service';
35 import { ParamShareService } from '../../../shared/services/paramShare.service';
36
37
38 class MockService {
39     doStuff() {
40         return this;
41     }
42 }
43
44 describe('ParameterDefinitionService', () => {
45     beforeEach(() => {
46         let httpUtilService = new MockService();
47         TestBed.configureTestingModule({
48             providers: [ParameterDefinitionService, NotificationsService, MappingEditorService, ParamShareService, HttpUtilService, UtilityService,
49                 { provide: HttpUtilService, useValue: httpUtilService }]
50         });
51     });
52
53     it('should create a service...', inject([ParameterDefinitionService], (service: ParameterDefinitionService) => {
54         expect(service).toBeTruthy();
55     }));
56
57     it('should remove unwanted values from PD object...', inject([ParameterDefinitionService], (service: ParameterDefinitionService) => {
58         let obj = {
59             'vnf-parameter-list': [{
60                 'ruleTypeValues': 'ruleTypeValues',
61                 'showFilterFields': 'showFilterFields',
62                 'enableFilterByValue': 'enableFilterByValue'
63             }]
64         };
65
66         expect(service.removeUnwantedvalues(obj)).toEqual({ 'vnf-parameter-list': [{}] });
67     }));
68
69
70     it('populateDataUponSource...', inject([ParameterDefinitionService], (service: ParameterDefinitionService) => {
71         let obj = [{ 'source': 'A&AI', 'ruleType': 'vm-name-list' }];
72
73         expect(service.populateDataUponSource(obj));
74     }));
75
76     it('populateDataUponSource...', inject([ParameterDefinitionService], (service: ParameterDefinitionService) => {
77         let obj = [{ 'source': 'Manual', 'ruleType': 'vm-name-list' }];
78
79         expect(service.populateDataUponSource(obj));
80     }));
81
82     it('populateDataUponSource...', inject([ParameterDefinitionService], (service: ParameterDefinitionService) => {
83         let obj = [{ 'source': 'Something', 'ruleType': 'vm-name-list' }];
84
85         expect(service.populateDataUponSource(obj));
86     }));
87
88
89     it('populateDataUponSource...', inject([ParameterDefinitionService], (service: ParameterDefinitionService) => {
90         let obj = [{ 'source': 'Something', 'ruleType': 'vm-name-list' }];
91
92         expect(service.populatePD(obj));
93     }));
94
95     it('processPDfile...', inject([ParameterDefinitionService], (service: ParameterDefinitionService) => {
96         let yaml = "---\nkind: Property Definition\nversion: V1\nvnf-parameter-list:\n- name: LICENSE_KEY\n  type: null\n  description: null\n  required: null\n  default: null\n  source: Manual\n  rule-type: null\n  request-keys: null\n  response-keys: null";
97         let expectedPD = [{
98             "name": "LICENSE_KEY", "type": null, "description": null, "required": null, "default": null, "source": "Manual", "rule-type": null,
99             "request-keys": [{ "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "response-keys": [{
100                 "key-name": null
101                 , "key-value": null
102             }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "ruleTypeValues": [null]
103         }];
104
105         expect(service.processPDfile("testfile.yaml", yaml)).toEqual(expectedPD);
106
107     }));
108
109     it('processKeyFile...', inject([ParameterDefinitionService, ParamShareService], (service: ParameterDefinitionService, paramShareService: ParamShareService) => {
110         let keyFile = "PARAMVALUE|SOURCE|RULETYPE|KEY1|VALUE1|KEY2|VALUE2|KEY3|VALUE3\nvalue1|INSTAR|interface_ip_address|UniqueKeyName1|addressfqdn123|UniqueKeyValue|m001ssc001p1n001v001|FieldKeyName|ipaddress_v4\nvalue2|INSTAR|interface_ip_address|UniqueKeyName2|addressfqdnAsgar1|UniqueKeyValue|m001ssc001p1n001v002|FieldKeyName|ipaddress_v4";
111         let expectedPD = [{
112             "name": "name1", "type": null, "description": null, "required": null, "default": null, "source": "Manual", "rule-type": null,
113             "request-keys": [{ "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "response-keys": [{
114                 "key-name": null
115                 , "key-value": null
116             }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "ruleTypeValues": [null]
117         }];
118         localStorage['paramsContent'] = "{ \"name1\":\"value1\",\"name2\":\"value2\"}";
119         paramShareService.setSessionParamData(expectedPD)
120         expect(service.processKeyFile("testfile.txt", keyFile)).toEqual(expectedPD);
121
122     }));
123
124     it('destroy...', inject([ParameterDefinitionService, ParamShareService, MappingEditorService], (service: ParameterDefinitionService, paramShareService: ParamShareService, mappingEditorService: MappingEditorService) => {
125         mappingEditorService.referenceNameObjects = { "action": "Configure", "action-level": "vnf", "scope": { "vnf-type": "ticktack", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_Configure_ticktack_0.0.1V.json", "artifact-type": "config_template" }, { "artifact-name": "pd_Configure_ticktack_0.0.1V.yaml", "artifact-type": "parameter_definitions" }], "scopeType": "vnf-type" };
126
127         let displayParamObjects = [{
128             "name": "name1", "type": null, "description": null, "required": null, "default": null, "source": "Manual", "rule-type": null,
129             "request-keys": [{ "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "response-keys": [{
130                 "key-name": null
131                 , "key-value": null
132             }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }, { "key-name": null, "key-value": null }], "ruleTypeValues": [null]
133         }];
134         localStorage['paramsContent'] = "{ \"name1\":\"value1\",\"name2\":\"value2\"}";
135
136         let expectedPDdata = "---\nkind: \"Property Definition\"\nversion: V1\nvnf-parameter-list:\n- name: name1\n  type: null\n  description: null\n  required: null\n  default: null\n  source: Manual\n  rule-type: null\n  request-keys: null\n  response-keys: null\n";
137         let expectedAppData = { "input": { "design-request": { "request-id": "115599612197", "action": "uploadArtifact", "payload": { "userID": "test Usr", "vnf-type": "undefined", "action": "undefined", "artifact-name": "undefined", "artifact-type": "APPC-CONFIG", "artifact-version": "0.0.1", "artifact-contents": "---\nkind: \"Property Definition\"\nversion: V1\nvnf-parameter-list:\n- name: name1\n  type: null\n  description: null\n  required: null\n  default: null\n  source: Manual\n  rule-type: null\n  request-keys: null\n  response-keys: null\n" } } } };
138         service.appDataObject = { pd: "" };
139         service.downloadDataObject = { pd: { pdData: "", pdFileName: "" } };
140         service.destroy(displayParamObjects);
141         expect(mappingEditorService.downloadDataObject.pd.pdData).toEqual(expectedPDdata);
142         //expect(mappingEditorService.appDataObject.pd).toEqual(expectedAppData);        
143
144     }));
145
146     it('should test setValues method', inject([ParameterDefinitionService, ParamShareService, MappingEditorService], (service: ParameterDefinitionService, paramShareService: ParamShareService, mappingEditorService: MappingEditorService) => {
147         service.setValues('vnfType-1', 'vnfcType-1', 'deviceProtocol', 'config', 'artifact-name');
148         expect(service.vnfType).toBe('vnfType-1');
149         expect(service.vnfcType).toBe('vnfcType-1');
150         expect(service.protocol).toBe('deviceProtocol');
151         expect(service.action).toBe('config');
152         expect(service.artifact_fileName).toBe('artifact-name');
153     }));
154
155     it('should test processResponseKeys method', inject([ParameterDefinitionService, ParamShareService, MappingEditorService], (service: ParameterDefinitionService, paramShareService: ParamShareService, mappingEditorService: MappingEditorService) => {
156         let saveModel = [{
157             'response-keys': [{ 'key-name': 'keyName', 'key-value': 'keyValue' },
158             { 'key-name': 'keyName', 'key-value': 'keyValue' },
159             { 'key-name': 'keyName', 'key-value': 'keyValue' },
160             { 'key-name': 'keyName', 'key-value': 'keyValue' },
161             { 'key-name': 'keyName', 'key-value': 'keyValue' }]
162         }];
163         service.processResponseKeys(saveModel);
164     }));
165
166 });