--- /dev/null
+/* Copyright (c) 2019 AT&T Intellectual Property. #\r
+# #\r
+# Licensed under the Apache License, Version 2.0 (the "License"); #\r
+# you may not use this file except in compliance with the License. #\r
+# You may obtain a copy of the License at #\r
+# #\r
+# http://www.apache.org/licenses/LICENSE-2.0 #\r
+# #\r
+# Unless required by applicable law or agreed to in writing, software #\r
+# distributed under the License is distributed on an "AS IS" BASIS, #\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #\r
+# See the License for the specific language governing permissions and #\r
+# limitations under the License. #\r
+##############################################################################*/\r
+\r
+\r
+const request = require('request');\r
+const Response = require('http-response-object');\r
+const logger = require('../../../lib/logger');\r
+const util = require('../../../lib/otf-util');\r
+const errors = require('@feathersjs/errors');\r
+\r
+class Service {\r
+ constructor (options) {\r
+ this.options = options || {};\r
+ }\r
+\r
+ async find (params) {\r
+ return [];\r
+ }\r
+ \r
+ async get (id, params) {\r
+\r
+ }\r
+\r
+ async create (data, params) {\r
+ \r
+ let id = data._id;\r
+ delete data._id;\r
+ delete data.createdBy;\r
+ \r
+ let options = {\r
+ url: this.options.app.get('serviceApi').url + 'testInstance/execute/v1/id/' + id,\r
+ headers: {\r
+ 'Authorization': 'Basic ' + util.base64Encode(this.options.app.get('serviceApi').aafId + ':' + this.options.app.get('serviceApi').aafPassword),\r
+ 'Content-Type': "application/json"\r
+ },\r
+ rejectUnauthorized: false,\r
+ body: JSON.stringify(data)\r
+ }\r
+\r
+ return await new Promise((resolve, reject) => {\r
+ request.post(options, (err, res, body) => {\r
+ if(err){\r
+ reject(err);\r
+ }\r
+ if(res.body){\r
+ res.body = JSON.parse(res.body);\r
+ if(res.body.statusCode != 200){\r
+ reject(res.body);\r
+ }\r
+ resolve(res.body);\r
+ }else{\r
+ reject(res);\r
+ }\r
+ \r
+ });\r
+ }).then(\r
+ res => {\r
+ return res;\r
+ }\r
+ ).catch(\r
+ err => {\r
+ return err;\r
+ }\r
+ );\r
+ }\r
+\r
+ async update (id, data, params) {\r
+ return data;\r
+ }\r
+\r
+ async patch (id, data, params) {\r
+ return data;\r
+ }\r
+\r
+ async remove (id, params) {\r
+\r
+ let execution = await this.options.app.services[this.options.app.get('base-path') + 'test-executions'].get(id, { query: { $select: ['processInstanceId']}});\r
+ \r
+ if(!execution.processInstanceId){\r
+ throw new errors.GeneralError('Could not find the execution process instance id');\r
+ }\r
+\r
+ let options = {\r
+ url: this.options.app.get('camundaApi').url + 'otf/tcu/delete-process-instance/v1/' + execution.processInstanceId,\r
+ headers: {\r
+ 'Authorization': 'Basic ' + util.base64Encode(this.options.app.get('serviceApi').aafId + ':' + this.options.app.get('serviceApi').aafPassword),\r
+ 'Content-Type': "application/json"\r
+ },\r
+ rejectUnauthorized: false\r
+ }\r
+\r
+ return await new Promise((resolve, reject) => {\r
+ request.delete(options, (err, res, body) => {\r
+ if(err){\r
+ reject(err);\r
+ }\r
+ if(res.body){\r
+ res.body = JSON.parse(res.body);\r
+ }\r
+ resolve(res);\r
+ });\r
+ }).then(\r
+ res => {\r
+ return res;\r
+ }\r
+ ).catch(\r
+ err => {\r
+ console.log(err);\r
+ }\r
+ );\r
+ }\r
+\r
+\r
+}\r
+\r
+module.exports = function (options) {\r
+ return new Service(options);\r
+};\r
+\r
+module.exports.Service = Service;\r