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;
31 angular.mock.module('app')
34 beforeEach(inject(function (_$controller_) {
35 $notNeeded = jestMock.fn();
36 // mock ChangeManagementService
37 $changeManagementService = jestMock.fn();
38 $changeManagementService.getAllSDCServices = jestMock.fn(() => Promise.resolve([]));
42 $defer = jestMock.fn();
43 $flags = jestMock.fn();
44 $flags.FEATURE_FLAGS = {FLAG_HANDLE_SO_WORKFLOWS: ''};
45 $featureFlags = jestMock.fn();
46 $featureFlags.isOn = jestMock.fn(() => true);
47 $q.defer = jestMock.fn(() => $defer);
48 $defer.promise = Promise.resolve({});
50 $aaiService = jestMock.fn();
51 $aaiService.getLoggedInUserID = jestMock.fn();
52 $aaiService.getSubscribers = jestMock.fn();
53 $controller = _$controller_('newChangeManagementModalController', {
54 $uibModalInstance: $notNeeded,
55 $uibModal: $notNeeded,
57 AaiService: $aaiService,
58 changeManagementService: $changeManagementService,
63 VIDCONFIGURATION: $notNeeded,
64 DataService: $notNeeded,
65 featureFlags: $featureFlags,
70 test('Verify load workflows from SO will call getSOWorkflow and return only names of workflows', () => {
72 $controller.changeManagement.vnfNames = [{name: 'test1'}, {name: "test2"}];
73 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{"id": "1", "name": "workflow 1"}, {"id": "2", "name": "workflow 2"}]});
74 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
75 $controller.workflows = [];
77 return $controller.loadRemoteWorkFlows()
79 remoteWorkflows = $controller.remoteWorkflows.map(item => item.name);
80 expect(remoteWorkflows).toContain('workflow 1');
81 expect(remoteWorkflows).toContain('workflow 2');
86 test('Verify load workflows wont load parameters from local service', () => {
88 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["workflow 0"]}});
89 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
90 "parameterDefinitions": [
93 "name": "Configuration Parameters",
97 "msgOnPatternError": null,
98 "msgOnContentError": null,
99 "acceptableFileType": null
103 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{"id": "1", "name": "workflow 1"}, {"id": "2", "name": "workflow 2"}]});
104 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{"parameterDefinitions": []}});
106 $controller.changeManagement.vnfNames = [{name: 'test1'}, {name: "test2"}];
107 $changeManagementService.getWorkflows = () => getWorkflowsStub;
108 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
109 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
110 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
112 return $controller.loadWorkFlows().then(() => {
113 expect($controller.workflows).toContain('workflow 1');
114 expect($controller.workflows).toContain('workflow 2');
118 test('Verify load workflows will call load workflows parameters from SO', () => {
120 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["workflow 0"]}});
121 let getLocalWorkflowsParametersStub = Promise.resolve({"data": {}});
122 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{"id": "1", "name": "workflow 0"}]});
123 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{"parameterDefinitions": [
124 {"id": 1, "name": "parameter 1", "required": true, "type": "STRING", "pattern": "[0-9]*"},
125 {"id": 2, "name": "parameter 2", "required": true, "type": "STRING", "pattern": ".*"},
126 {"id": 3, "name": "parameter 3", "required": false, "type": "STRING", "pattern": "[0-9]*"}]}});
128 $controller.changeManagement.vnfNames = [{name: 'test1'}, {name: "test2"}];
129 $changeManagementService.getWorkflows = () => getWorkflowsStub;
130 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
131 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
132 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
134 return $controller.loadWorkFlows()
136 expect($controller.remoteWorkflowsParameters).toEqual(new Map([["workflow 0",
137 [{"id": 1, "name": "parameter 1", "pattern": "[0-9]*", "required": true, "type": "STRING"},
138 {"id": 2, "name": "parameter 2", "pattern": ".*", "required": true, "type": "STRING"},
139 {"id": 3, "name": "parameter 3", "pattern": "[0-9]*", "required": false, "type": "STRING"}]]]));
143 test('Verify load workflows wont load workflows parameters from SO if feature flag is disabled', () => {
145 $featureFlags.isOn = jestMock.fn(() => false);
146 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["workflow 0"]}});
147 let getLocalWorkflowsParametersStub = Promise.resolve({"data": {}});
148 let getSOWorkflowsPromiseStub = Promise.resolve({"data": [{"id": "1", "name": "workflow 0"}]});
149 let getSOWorkflowsParametersPromiseStub = Promise.resolve({"data":{"parameterDefinitions": [
150 {"id": 1, "name": "parameter 1", "required": true, "type": "STRING", "pattern": "[0-9]*"},
151 {"id": 2, "name": "parameter 2", "required": true, "type": "STRING", "pattern": ".*"},
152 {"id": 3, "name": "parameter 3", "required": false, "type": "STRING", "pattern": "[0-9]*"}]}});
154 $controller.changeManagement.vnfNames = [{name: 'test1'}, {name: "test2"}];
155 $changeManagementService.getWorkflows = () => getWorkflowsStub;
156 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
157 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
158 $changeManagementService.getSOWorkflowParameter = () => getSOWorkflowsParametersPromiseStub;
160 return $controller.loadWorkFlows()
162 expect($controller.workflows).toEqual(["workflow 0"]);
163 expect($controller.remoteWorkflowsParameters).toEqual(undefined);
167 test('Verify load workflows will call load workflows parameters from local service', () => {
169 $featureFlags.isOn = jestMock.fn(() => false);
170 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["VNF Scale Out"]}});
171 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
172 "parameterDefinitions": [
175 "name": "Configuration Parameters",
179 "msgOnPatternError": null,
180 "msgOnContentError": null,
181 "acceptableFileType": null
186 $controller.changeManagement.vnfNames = [{name: 'test1'}];
187 $changeManagementService.getWorkflows = () => getWorkflowsStub;
188 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
191 let result = new Map();
192 const scaleOutResult = new Map();
193 scaleOutResult.set("FILE", []);
194 scaleOutResult.set("STRING", [
196 "acceptableFileType": null,
198 "msgOnContentError": null,
199 "msgOnPatternError": null,
200 "name": "Configuration Parameters",
206 result.set("VNF Scale Out", scaleOutResult);
208 return $controller.loadWorkFlows()
210 expect($controller.localWorkflowsParameters).toEqual(result);
214 test('Verify broken SO workflows will return empty list of workflows', () => {
216 let getSOWorkflowsPromiseStub = Promise.reject(new Error("Broken SO workflows service."));
218 $controller.changeManagement.vnfNames = [{name:"any"}];
219 $changeManagementService.getSOWorkflows = () => getSOWorkflowsPromiseStub;
221 $controller.loadWorkFlows()
223 expect($controller.workflows).toEqual([]);
227 test('Verify get internal workflow parameters should return an empty list if not such workflow exist', () => {
229 $featureFlags.isOn = jestMock.fn(() => false);
230 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["VNF Scale Out"]}});
231 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
232 "parameterDefinitions": [
235 "name": "Configuration Parameters",
239 "msgOnPatternError": null,
240 "msgOnContentError": null,
241 "acceptableFileType": null
246 $controller.changeManagement.vnfNames = [{name: 'test1'}];
247 $changeManagementService.getWorkflows = () => getWorkflowsStub;
248 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
250 return $controller.loadWorkFlows()
252 let internalWorkFlowParameters = $controller.getInternalWorkFlowParameters("NON-EXISTENT WF", "STRING");
253 expect(internalWorkFlowParameters).toEqual([]);
257 test('Verify get internal workflow parameters should return an empty list if not such type exist', () => {
259 $featureFlags.isOn = jestMock.fn(() => false);
260 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["VNF Scale Out"]}});
261 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
262 "parameterDefinitions": [
265 "name": "Configuration Parameters",
269 "msgOnPatternError": null,
270 "msgOnContentError": null,
271 "acceptableFileType": null
276 $controller.changeManagement.vnfNames = [{name: 'test1'}];
277 $changeManagementService.getWorkflows = () => getWorkflowsStub;
278 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
280 return $controller.loadWorkFlows()
282 let internalWorkFlowParameters = $controller.getInternalWorkFlowParameters("VNF Scale Out", "FILE");
283 expect(internalWorkFlowParameters).toEqual([]);
287 test('Verify get internal workflow parameters should return a list if such workflow and type exist', () => {
289 $featureFlags.isOn = jestMock.fn(() => false);
290 let getWorkflowsStub = Promise.resolve({"data": {"workflows": ["VNF Scale Out"]}});
291 let getLocalWorkflowsParametersStub = Promise.resolve({"data":{
292 "parameterDefinitions": [
295 "name": "Configuration Parameters",
299 "msgOnPatternError": null,
300 "msgOnContentError": null,
301 "acceptableFileType": null
305 $controller.changeManagement.vnfNames = [{name: 'test1'}];
306 $changeManagementService.getWorkflows = () => getWorkflowsStub;
307 $changeManagementService.getLocalWorkflowParameter = () => getLocalWorkflowsParametersStub;
310 "acceptableFileType": null,
312 "msgOnContentError": null,
313 "msgOnPatternError": null,
314 "name": "Configuration Parameters",
320 return $controller.loadWorkFlows()
322 let internalWorkFlowParameters = $controller.getInternalWorkFlowParameters("VNF Scale Out", "STRING");
323 expect(internalWorkFlowParameters).toEqual(result);