2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 require('./new-change-management.controller');
22 const jestMock = require('jest-mock');
24 describe('Testing workFlows from SO', () => {
27 let $changeManagementService;
29 angular.mock.module('app')
32 beforeEach(inject(function (_$controller_) {
33 $notNeeded = jestMock.fn();
34 // mock ChangeManagementService
35 $changeManagementService = jestMock.fn();
36 $changeManagementService.getAllSDCServices = jestMock.fn(() => Promise.resolve([]));
40 $defer = jestMock.fn();
41 $q.defer = jestMock.fn(() => $defer);
42 $defer.promise = Promise.resolve({});
44 $aaiService = jestMock.fn();
45 $aaiService.getLoggedInUserID = jestMock.fn();
46 $aaiService.getSubscribers = jestMock.fn();
47 $controller = _$controller_('newChangeManagementModalController', {
48 $uibModalInstance: $notNeeded,
49 $uibModal: $notNeeded,
51 AaiService: $aaiService,
52 changeManagementService: $changeManagementService,
56 COMPONENT: $notNeeded,
57 VIDCONFIGURATION: $notNeeded,
58 DataService: $notNeeded,
59 featureFlags: $notNeeded,
64 test('Verify load workflows from SO will call getSOWorkflow and return only names of workflows', () => {
66 $controller.changeManagement.vnfNames = [{name: 'test1'}, {name: "test2"}];
67 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{"id": "1", "name": "workflow 1"}, {"id": "2", "name": "workflow 2"}]});
68 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
69 $controller.workflows = [];
71 return $controller.loadRemoteWorkFlows()
73 remoteWorkflows = $controller.remoteWorkflows.map(item => item.name);
74 expect(remoteWorkflows).toContain('workflow 1');
75 expect(remoteWorkflows).toContain('workflow 2');
80 test('Verify load workflows will call load from SO and join workflow lists', () => {
82 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["workflow 0"]}});
83 let getLocalWorkflowsParametersStub = Promise.resolve({"data": {}});
84 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{"id": "1", "name": "workflow 1"}, {"id": "2", "name": "workflow 2"}]});
85 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{"parameterDefinitions": []}});
87 $controller.changeManagement.vnfNames = [{name: 'test1'}, {name: "test2"}];
88 $changeManagementService.getWorkflows = () => getWorkflowsStub;
89 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
90 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
91 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
93 return $controller.loadWorkFlows().then(() => {
94 expect($controller.workflows).toContain('workflow 0');
95 expect($controller.workflows).toContain('workflow 1');
96 expect($controller.workflows).toContain('workflow 2');
100 test('Verify load workflows will call load workflows parameters from SO', () => {
102 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["workflow 0"]}});
103 let getLocalWorkflowsParametersStub = Promise.resolve({"data": {}});
104 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{"id": "1", "name": "workflow 0"}]});
105 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{"parameterDefinitions": [
106 {"id": 1, "name": "parameter 1", "required": true, "type": "STRING", "pattern": "[0-9]*"},
107 {"id": 2, "name": "parameter 2", "required": true, "type": "STRING", "pattern": ".*"},
108 {"id": 3, "name": "parameter 3", "required": false, "type": "STRING", "pattern": "[0-9]*"}]}});
110 $controller.changeManagement.vnfNames = [{name: 'test1'}, {name: "test2"}];
111 $changeManagementService.getWorkflows = () => getWorkflowsStub;
112 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
113 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
114 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
116 return $controller.loadWorkFlows()
118 expect($controller.remoteWorkflowsParameters).toEqual(new Map([["workflow 0",
119 [{"id": 1, "name": "parameter 1", "pattern": "[0-9]*", "required": true, "type": "STRING"},
120 {"id": 2, "name": "parameter 2", "pattern": ".*", "required": true, "type": "STRING"},
121 {"id": 3, "name": "parameter 3", "pattern": "[0-9]*", "required": false, "type": "STRING"}]]]));
125 test('Verify load workflows will call load workflows parameters from local service', () => {
127 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["VNF Scale Out"]}});
128 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
129 "parameterDefinitions": [
132 "name": "Configuration Parameters",
136 "msgOnPatternError": null,
137 "msgOnContentError": null,
138 "acceptableFileType": null
142 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{}]});
143 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{}});
145 $controller.changeManagement.vnfNames = [{name: 'test1'}];
146 $changeManagementService.getWorkflows = () => getWorkflowsStub;
147 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
148 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
149 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
152 let result = new Map();
153 const scaleOutResult = new Map();
154 scaleOutResult.set("FILE", []);
155 scaleOutResult.set("STRING", [
157 "acceptableFileType": null,
159 "msgOnContentError": null,
160 "msgOnPatternError": null,
161 "name": "Configuration Parameters",
167 result.set("VNF Scale Out", scaleOutResult);
169 return $controller.loadWorkFlows()
171 expect($controller.localWorkflowsParameters).toEqual(result);
175 test('Verify broken SO workflows wont change content of local workflows', () => {
177 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["workflow 0"]}});
178 let getSOWorkflowsPromiseStub = Promise.reject(new Error("Broken SO workflows service."));
180 $controller.changeManagement.vnfNames = "any";
181 $changeManagementService.getWorkflows = () => getWorkflowsStub;
182 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
184 $controller.loadWorkFlows()
186 expect($controller.workflows).toEqual(['workflow 0']);
190 test('Verify get internal workflow parameters should return an empty list if not such workflow exist', () => {
192 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["VNF Scale Out"]}});
193 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
194 "parameterDefinitions": [
197 "name": "Configuration Parameters",
201 "msgOnPatternError": null,
202 "msgOnContentError": null,
203 "acceptableFileType": null
207 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{}]});
208 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{}});
210 $controller.changeManagement.vnfNames = [{name: 'test1'}];
211 $changeManagementService.getWorkflows = () => getWorkflowsStub;
212 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
213 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
214 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
216 return $controller.loadWorkFlows()
218 let internalWorkFlowParameters = $controller.getInternalWorkFlowParameters("NON-EXISTENT WF", "STRING");
219 expect(internalWorkFlowParameters).toEqual([]);
223 test('Verify get internal workflow parameters should return an empty list if not such type exist', () => {
225 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["VNF Scale Out"]}});
226 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
227 "parameterDefinitions": [
230 "name": "Configuration Parameters",
234 "msgOnPatternError": null,
235 "msgOnContentError": null,
236 "acceptableFileType": null
240 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{}]});
241 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{}});
243 $controller.changeManagement.vnfNames = [{name: 'test1'}];
244 $changeManagementService.getWorkflows = () => getWorkflowsStub;
245 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
246 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
247 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
249 return $controller.loadWorkFlows()
251 let internalWorkFlowParameters = $controller.getInternalWorkFlowParameters("VNF Scale Out", "FILE");
252 expect(internalWorkFlowParameters).toEqual([]);
256 test('Verify get internal workflow parameters should return a list if such workflow and type exist', () => {
258 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["VNF Scale Out"]}});
259 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
260 "parameterDefinitions": [
263 "name": "Configuration Parameters",
267 "msgOnPatternError": null,
268 "msgOnContentError": null,
269 "acceptableFileType": null
273 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{}]});
274 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{}});
276 $controller.changeManagement.vnfNames = [{name: 'test1'}];
277 $changeManagementService.getWorkflows = () => getWorkflowsStub;
278 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
279 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
280 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
283 "acceptableFileType": null,
285 "msgOnContentError": null,
286 "msgOnPatternError": null,
287 "name": "Configuration Parameters",
293 return $controller.loadWorkFlows()
295 let internalWorkFlowParameters = $controller.getInternalWorkFlowParameters("VNF Scale Out", "STRING");
296 expect(internalWorkFlowParameters).toEqual(result);