added svcapi ui and camunda code
[it/otf.git] / otf-frontend / server / src / feathers / hooks / delete-version.js
1 /*  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
2 #                                                                              #\r
3 #   Licensed under the Apache License, Version 2.0 (the "License");            #\r
4 #   you may not use this file except in compliance with the License.           #\r
5 #   You may obtain a copy of the License at                                    #\r
6 #                                                                              #\r
7 #       http://www.apache.org/licenses/LICENSE-2.0                             #\r
8 #                                                                              #\r
9 #   Unless required by applicable law or agreed to in writing, software        #\r
10 #   distributed under the License is distributed on an "AS IS" BASIS,          #\r
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #\r
12 #   See the License for the specific language governing permissions and        #\r
13 #   limitations under the License.                                             #\r
14 ##############################################################################*/\r
15 \r
16 \r
17 const util = require('../../lib/otf-util');\r
18 const request = require('request');\r
19 const error = require('@feathersjs/errors');\r
20 module.exports = function (options = {}) { // eslint-disable-line no-unused-vars\r
21     return async context => {\r
22 \r
23         //Get test-definition to compare\r
24         let original = null;\r
25         await context.app.services[context.app.get('base-path') + 'test-definitions'].get(context.id, context.params).then(result => {\r
26             original = result;\r
27         });\r
28 \r
29         //If there is a bpmn instance that is deployed and is no longer there, delete with service api\r
30         if (context.data.bpmnInstances && original) {\r
31             original.bpmnInstances.forEach(async (elem, val) => {\r
32                 let found = false;\r
33                 context.data.bpmnInstances.forEach((e, v) => {\r
34                     if (elem.version == e.version) {\r
35                         found = true;\r
36                     }\r
37                 });\r
38                 if (!found && elem.isDeployed) {\r
39                     let options = {\r
40                         url: context.app.get('serviceApi').url + 'testStrategy/delete/v1/deploymentId/' + elem.deploymentId,\r
41                         headers: {\r
42                             'Authorization': 'Basic ' + util.base64Encode(context.app.get('serviceApi').aafId + ':' + context.app.get('serviceApi').aafPassword)\r
43                         },\r
44                         rejectUnauthorized: false,\r
45                     }\r
46                     \r
47                     await new Promise((resolve, reject) => {\r
48                         request.delete(options, (err, res, body) => {\r
49                             if(err){\r
50                                 reject(err);\r
51                             }\r
52                             if(res && res.statusCode == 200){\r
53                                 resolve(res);\r
54                             }else{\r
55                                 reject(res);\r
56                             }\r
57                         });\r
58                     }).then(result => {\r
59                         if(result.statusCode != 200){\r
60                             context.error = new error(result.statusCode);\r
61                             return Promise.reject(context.error);\r
62                         }\r
63                     }).catch(err => {\r
64                         \r
65                     });\r
66                 }\r
67             });\r
68         }\r
69     };\r
70 };\r