trident-beta
Version:
trident is a sample and lightly tools aims to improve collaboration efficiency between SDET and QA based on initiative from Einstein/TestIT.
2,439 lines • 113 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var lodash_1 = __importDefault(require("lodash"));
var qs_1 = __importDefault(require("qs"));
var Parser = __importStar(require("../parser/parser"));
var httpClient_1 = __importDefault(require("../util/httpClient"));
var constants_1 = require("./constants");
var log4js = require("log4js");
var logger = log4js.getLogger();
var TestItSDK = /** @class */ (function () {
function TestItSDK(endpoint) {
this.endpoint = endpoint;
this.userName = null;
this.accessToken = null;
this.cache = new Map();
this.httpClient = new httpClient_1.default();
}
/**
* Return true if client is authorized.
*/
TestItSDK.prototype.getAutorized = function () {
return this.accessToken != null;
};
/**
* Login to TestIt. Save cookies if login successfully.
* @param username
* @param password
*/
TestItSDK.prototype.login = function (username, password) {
return __awaiter(this, void 0, void 0, function () {
var url, data, headers, config, response, err_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 3, , 4]);
url = this.endpoint + "/api/v1/login";
data = { username: username, password: password };
headers = {
"Content-Type": "application/json"
};
config = { headers: headers, data: data };
return [4 /*yield*/, this.httpClient.post(url, config)];
case 1:
response = _a.sent();
this.userName = response.data.username;
this.accessToken = response.data.access_token;
logger.debug(response.data);
return [4 /*yield*/, this.init()];
case 2:
_a.sent();
return [3 /*break*/, 4];
case 3:
err_1 = _a.sent();
throw new Error("Failed to login TestIt, please check your username and password.");
case 4:
logger.debug("----Welcome! Login Successfully!-----");
return [2 /*return*/];
}
});
});
};
/**
* Logout Testit, delete cookies.
*/
TestItSDK.prototype.logout = function () {
this.userName = null;
this.accessToken = null;
};
/**
* Initialize sdk,fetch global data.
* @return {Promise<void>}
*/
TestItSDK.prototype.init = function () {
return __awaiter(this, void 0, void 0, function () {
var globalData;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getGlobalData()];
case 1:
globalData = _a.sent();
this.cache.set(constants_1.CacheKey.GLOBAL_DATA, globalData);
return [2 /*return*/];
}
});
});
};
/**
* Fetch fields information by project id for further using.
* @param projectId
*/
TestItSDK.prototype.fetchFieldsInfoById = function (projectId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/fields?projectId=" + projectId;
headers = {
Authorization: this.accessToken,
"Content-type": "application/json"
};
config = {
headers: headers
};
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get search elements map from fields by name.
* @param response
* @param name (like Keywords Subtype...)
*/
TestItSDK.prototype.getFieldsInfoMapByName = function (response, name) {
return __awaiter(this, void 0, void 0, function () {
var fieldsIdxMap, index, values, resMap, i;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getFieldsIndexMap(response)];
case 1:
fieldsIdxMap = _a.sent();
index = fieldsIdxMap.get(name);
if (index == undefined) {
throw new Error("Not found the name : " + name);
}
values = response[index].values;
resMap = new Map();
for (i = 0; i < values.length; i++) {
resMap.set(values[i].name, values[i].id);
}
return [2 /*return*/, resMap];
}
});
});
};
/**
* Get field's response values map (name -> index).
* @param response
*/
TestItSDK.prototype.getFieldsIndexMap = function (response) {
return __awaiter(this, void 0, void 0, function () {
var valuesMap, i;
return __generator(this, function (_a) {
valuesMap = new Map();
for (i = 0; i < response.length; i++) {
valuesMap.set(response[i].name, i);
}
return [2 /*return*/, valuesMap];
});
});
};
/**
* Get field's response values map (name -> id).
* @param response
*/
TestItSDK.prototype.getFieldsIdMap = function (response) {
return __awaiter(this, void 0, void 0, function () {
var valuesMap, i;
return __generator(this, function (_a) {
valuesMap = new Map();
for (i = 0; i < response.length; i++) {
valuesMap.set(response[i].name, response[i].id);
}
return [2 /*return*/, valuesMap];
});
});
};
/**
* Get projects.
* @return {Promise<IProject[]>}
*/
TestItSDK.prototype.getProjects = function () {
return __awaiter(this, void 0, void 0, function () {
var cacheKey, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cacheKey = constants_1.CacheKey.PROJECTS;
if (this.cache.has(cacheKey)) {
return [2 /*return*/, this.cache.get(cacheKey)];
}
url = this.endpoint + "/api/v1/projects";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
this.cache.set(cacheKey, response.data);
return [2 /*return*/, response.data];
}
});
});
};
/**
* Generate prefix project map.
*/
TestItSDK.prototype.genPrefixProjectMap = function () {
return __awaiter(this, void 0, void 0, function () {
var response, prefixMap, i;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getProjects()];
case 1:
response = _a.sent();
prefixMap = new Map();
for (i = 0; i < response.length; i++) {
prefixMap.set(response[i].id, response[i].prefix);
}
return [2 /*return*/, prefixMap];
}
});
});
};
/**
* Get project by name.
* @param projectName
*/
TestItSDK.prototype.getProjectByName = function (projectName) {
return __awaiter(this, void 0, void 0, function () {
var totalProjects;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getProjects()];
case 1:
totalProjects = _a.sent();
return [2 /*return*/, lodash_1.default.find(totalProjects, function (p) { return p.name === projectName; })];
}
});
});
};
/**
* Get project id by name.
* @param projectName
*/
TestItSDK.prototype.getProjectIdByName = function (projectName) {
return __awaiter(this, void 0, void 0, function () {
var project;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getProjectByName(projectName)];
case 1:
project = _a.sent();
if (!project) {
throw new Error("Project not found : " + projectName + ".");
}
return [2 /*return*/, project["id"]];
}
});
});
};
/**
* Get project by project id.
* @param projectId
*/
TestItSDK.prototype.getProjectById = function (projectId) {
return __awaiter(this, void 0, void 0, function () {
var cacheKey, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cacheKey = constants_1.CacheKey.PROJECT + " : " + projectId;
if (this.cache.has(cacheKey)) {
return [2 /*return*/, this.cache.get(cacheKey)];
}
url = this.endpoint + "/api/v1/project/" + projectId;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
//update : response total data of project.
this.cache.set(cacheKey, response.data);
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get keywords by project id.
* 【Error】Project doesn't include keywords!Not really go.
* @param projectId
*/
TestItSDK.prototype.getKeywordsByProjectId = function (projectId) {
return __awaiter(this, void 0, void 0, function () {
var cacheKey, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cacheKey = constants_1.CacheKey.KEYWORDS + " : " + projectId;
if (this.cache.has(cacheKey)) {
return [2 /*return*/, this.cache.get(cacheKey)];
}
url = this.endpoint + "/api/v1/project/" + projectId;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
this.cache.set(cacheKey, response.data);
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get project tree by project id.
* @param projectId
*/
TestItSDK.prototype.getProjectTreeById = function (projectId) {
return __awaiter(this, void 0, void 0, function () {
var cacheKey, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cacheKey = constants_1.CacheKey.PROJECT_TREE + " : " + projectId;
if (this.cache.has(cacheKey)) {
return [2 /*return*/, this.cache.get(cacheKey)];
}
url = this.endpoint + "/api/v1/project/" + projectId + "/tree";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
this.cache.set(cacheKey, response.data);
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get section by section id.
* @param sectionId
*/
TestItSDK.prototype.getSectionById = function (sectionId) {
return __awaiter(this, void 0, void 0, function () {
var cacheKey, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cacheKey = constants_1.CacheKey.SECTION + " : " + sectionId;
if (this.cache.has(cacheKey)) {
return [2 /*return*/, this.cache.get(cacheKey)];
}
url = this.endpoint + "/api/v1/section/" + sectionId;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
this.cache.set(cacheKey, response.data);
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get test case by test case id. - 17
* @param testCaseId
*/
TestItSDK.prototype.getTestCaseById = function (testCaseId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response, err_2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 2, , 3]);
url = this.endpoint + "/api/v1/case/" + testCaseId;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
case 2:
err_2 = _a.sent();
throw new Error("404 Not Found.Please make sure the right testCaseId");
case 3: return [2 /*return*/];
}
});
});
};
/**
* Get many test cases by test case ids.
* @param testCaseIds
*/
TestItSDK.prototype.getTestCasesByIds = function (testCaseIds) {
return __awaiter(this, void 0, void 0, function () {
var prefix, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
prefix = this.endpoint + "/api/v1/cases?";
testCaseIds.forEach(function (value) {
prefix = prefix + "id=" + value + "&";
});
url = prefix.substring(0, prefix.length - 1);
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get test plans from test case by test case id.
* @param testCaseId
*/
TestItSDK.prototype.getTestPlansByTestCaseId = function (testCaseId) {
return __awaiter(this, void 0, void 0, function () {
var cacheKey, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cacheKey = constants_1.CacheKey.TEST_PLAN + " : " + testCaseId;
if (this.cache.has(cacheKey)) {
return [2 /*return*/, this.cache.get(cacheKey)];
}
url = this.endpoint + "/api/v1/case/" + testCaseId + "/testplans";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
this.cache.set(cacheKey, response.data);
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get test plans by project ids.
* @param projectIds
*/
TestItSDK.prototype.getTestPlansByProjectIds = function (projectIds) {
return __awaiter(this, void 0, void 0, function () {
var prefix, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
prefix = this.endpoint + "/api/v1/testplans?";
projectIds.forEach(function (value) {
prefix = prefix + "projectId=" + value + "&";
});
url = prefix.substring(0, prefix.length - 1);
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get execution-history by test case id.
* @param testCaseId
*/
TestItSDK.prototype.getExecutionHistoryByTestCaseId = function (testCaseId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/case/" + testCaseId + "/execution-history";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get test case version by version id.
* @param versionId
*/
TestItSDK.prototype.getCaseVersionByVersionId = function (versionId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/case/version/" + versionId;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get test case by key.
* 【Example】key = JPT-3166
* @param key
*/
TestItSDK.prototype.getTestCaseByKey = function (key) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/case/" + key;
headers = {
Authorization: this.accessToken,
"Content-Type": "applicaiton/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get builds by test plan id.
* @param testPlanId
*/
TestItSDK.prototype.getBuildsByTestPlanId = function (testPlanId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/testplan/" + testPlanId + "/builds";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get test plan by test plan id.
* @param testPlanId
*/
TestItSDK.prototype.getTestPlanById = function (testPlanId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/testplan/" + testPlanId;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get tree by test plan id.
* @param testPlanId
*/
TestItSDK.prototype.getTreeByTestPlanId = function (testPlanId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/testplan/" + testPlanId + "/tree";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get execution progress by test plan id.
* @param testPlanId
*/
TestItSDK.prototype.getExecutionProgressByTestPlanId = function (testPlanId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/testplan/" + testPlanId + "/execution-progress";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get build by build id.
* @param buildId
*/
TestItSDK.prototype.getBuildById = function (buildId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/build/" + buildId;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get suite by suite id.
* @param suiteId
*/
TestItSDK.prototype.getSuiteById = function (suiteId) {
return __awaiter(this, void 0, void 0, function () {
var cacheKey, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cacheKey = constants_1.CacheKey.SUITES + ":" + suiteId;
if (this.cache.has(cacheKey)) {
return [2 /*return*/, this.cache.get(cacheKey)];
}
url = this.endpoint + "/api/v1/suite/" + suiteId;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
this.cache.set(cacheKey, response.data);
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get suite tree by suite id.
* @param suiteId
*/
TestItSDK.prototype.getSuiteTreeById = function (suiteId) {
return __awaiter(this, void 0, void 0, function () {
var cacheKey, url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
cacheKey = constants_1.CacheKey.SUITE_TREE + ":" + suiteId;
if (this.cache.has(cacheKey)) {
return [2 /*return*/, this.cache.get(cacheKey)];
}
url = this.endpoint + "/api/v1/suite/" + suiteId + "/tree";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
this.cache.set(cacheKey, response.data);
return [2 /*return*/, response.data];
}
});
});
};
/* Search API use in cases */
/**
* Search test cases by json query.
* @param query
* @param scope
*/
TestItSDK.prototype.searchTestCasesByJsonQuery = function (query, scope) {
if (scope === void 0) { scope = "TEST_SUITES"; }
return __awaiter(this, void 0, void 0, function () {
var criterionJson, url, data, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
criterionJson = query;
url = this.endpoint + "/testCases/search";
data = {
type: "search",
scope: scope,
criterionJson: criterionJson
};
headers = {
Authorization: this.accessToken,
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
};
config = {
headers: headers,
data: qs_1.default.stringify(data)
};
return [4 /*yield*/, this.httpClient.post(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Flatten response data.
* @param root
*/
TestItSDK.prototype.flat = function (root) {
var cases = [];
var fifo = [root];
var _loop_1 = function () {
var node = fifo.shift();
if ("case" !== node.type) {
if (node.children && node.children.length > 0) {
node.children.forEach(function (child) {
if (!child.path) {
child.path = [];
}
child.path.push(node.name);
});
fifo.push.apply(fifo, node.children);
}
}
else {
cases.push(node);
}
};
while (fifo.length > 0) {
_loop_1();
}
return cases;
};
/**
* Search and generate template info by search Option.
* @param searchOption
*/
TestItSDK.prototype.generateTemplateInfoByOptions = function (searchOption) {
return __awaiter(this, void 0, void 0, function () {
var query, response, flatResponse, flatLength, resultData, i, tempKey, _a, _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0: return [4 /*yield*/, this.generateQuery(searchOption)];
case 1:
query = _c.sent();
return [4 /*yield*/, this.searchTestCasesByQuery(query, "TEST_SUITES", searchOption.suiteName)];
case 2:
response = _c.sent();
flatResponse = this.flat(response);
flatLength = flatResponse.length;
resultData = [];
i = 0;
_c.label = 3;
case 3:
if (!(i < flatLength)) return [3 /*break*/, 6];
tempKey = flatResponse[i].prefix + "-" + flatResponse[i].externalId;
_b = (_a = resultData).push;
return [4 /*yield*/, this.generateTemplatesInfoByKey(tempKey)];
case 4:
_b.apply(_a, [_c.sent()]);
_c.label = 5;
case 5:
i++;
return [3 /*break*/, 3];
case 6: return [2 /*return*/, resultData];
}
});
});
};
/**
* Store template file by search options.
* @param searchOption
* @param path
*/
TestItSDK.prototype.storeTemplateFileByOptions = function (searchOption, path) {
return __awaiter(this, void 0, void 0, function () {
var query, response, flatResponse, flatLength, i, tempKey, fileName, info;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.generateQuery(searchOption)];
case 1:
query = _a.sent();
return [4 /*yield*/, this.searchTestCasesByQuery(query, "TEST_SUITES", searchOption.suiteName)];
case 2:
response = _a.sent();
flatResponse = this.flat(response);
flatLength = flatResponse.length;
i = 0;
_a.label = 3;
case 3:
if (!(i < flatLength)) return [3 /*break*/, 6];
tempKey = flatResponse[i].prefix + "-" + flatResponse[i].externalId;
fileName = "" + path + tempKey + ".test.ts";
return [4 /*yield*/, this.generateTemplatesInfoByKey(tempKey)];
case 4:
info = _a.sent();
this.writeTemplateInfo(info, fileName);
_a.label = 5;
case 5:
i++;
return [3 /*break*/, 3];
case 6:
logger.debug("Store Successfully");
return [2 /*return*/];
}
});
});
};
/**
* Store files in tree by search options.
* [Abandon]Please replace with the API of [storeFilesBySearchOptions]
* @param searchOption
* @param path
*/
TestItSDK.prototype.storeFilesInTreeByOptions = function (searchOption, path, templatePath) {
return __awaiter(this, void 0, void 0, function () {
var query, response, fs, i, flatResponse, flatLength, j, tempKey, flatResponse, flatLength, i, tempKey;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.generateQuery(searchOption)];
case 1:
query = _a.sent();
return [4 /*yield*/, this.searchTestCasesByQuery(query, "TEST_SUITES", searchOption.suiteName)];
case 2:
response = _a.sent();
fs = require("fs");
if (!(response.length > 1)) return [3 /*break*/, 10];
i = 0;
_a.label = 3;
case 3:
if (!(i < response.length)) return [3 /*break*/, 9];
flatResponse = this.flat(response[i]);
flatLength = flatResponse.length;
j = 0;
_a.label = 4;
case 4:
if (!(j < flatLength)) return [3 /*break*/, 7];
tempKey = flatResponse[j].prefix + "-" + flatResponse[j].externalId;
return [4 /*yield*/, this.storeFileInTreeByCaseKey(tempKey, path, templatePath)];
case 5:
_a.sent();
_a.label = 6;
case 6:
j++;
return [3 /*break*/, 4];
case 7:
logger.debug("Total Store " + flatLength + " files");
logger.debug("Store Successfully");
_a.label = 8;
case 8:
i++;
return [3 /*break*/, 3];
case 9: return [3 /*break*/, 15];
case 10:
flatResponse = this.flat(response[0]);
flatLength = flatResponse.length;
i = 0;
_a.label = 11;
case 11:
if (!(i < flatLength)) return [3 /*break*/, 14];
tempKey = flatResponse[i].prefix + "-" + flatResponse[i].externalId;
return [4 /*yield*/, this.storeFileInTreeByCaseKey(tempKey, path, templatePath)];
case 12:
_a.sent();
_a.label = 13;
case 13:
i++;
return [3 /*break*/, 11];
case 14:
logger.debug("Total Store " + flatLength + " files");
logger.debug("Store Successfully");
_a.label = 15;
case 15: return [2 /*return*/];
}
});
});
};
/**
* Store files by search option(use template render engine)
* @param searchOption
* @param path
* @param templatePath
*/
TestItSDK.prototype.storeFilesBySearchOptions = function (searchOption, path, templatePath) {
return __awaiter(this, void 0, void 0, function () {
var fs, templateInfo, response_1, singleCaseInfo, query, response, cases, fileGenerateTask, _loop_2, _i, cases_1, item;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
fs = require("fs");
if (!(templatePath === undefined)) return [3 /*break*/, 2];
return [4 /*yield*/, fs.readFileSync("../templates/Default.txt", "UTF-8", function (err) {
throw new Error("Can't not find default.txt");
})];
case 1:
templateInfo = _a.sent();
return [3 /*break*/, 4];
case 2: return [4 /*yield*/, fs.readFileSync(templatePath, "UTF-8", function (err) {
throw new Error("Can't not find " + templatePath);
})];
case 3:
templateInfo = _a.sent();
_a.label = 4;
case 4:
if (!!(searchOption.caseId === undefined)) return [3 /*break*/, 8];
return [4 /*yield*/, this.getTestCaseByKey(searchOption.caseId)];
case 5:
response_1 = _a.sent();
return [4 /*yield*/, this.fillCaseInfoMap(searchOption.caseId, response_1)];
case 6:
singleCaseInfo = _a.sent();
return [4 /*yield*/, this.storeFileInTree(singleCaseInfo, path, templateInfo)];
case 7:
_a.sent();
logger.debug("Store " + searchOption.caseId + " Successfully");
return [2 /*return*/];
case 8: return [4 /*yield*/, this.generateQuery(searchOption)];
case 9:
query = _a.sent();
return [4 /*yield*/, this.searchTestCasesByQuery(query, "TEST_SUITES", searchOption.suiteName)];
case 10:
response = _a.sent();
if (response.length == 0 || response == null)
throw new Error("Search for nothing");
return [4 /*yield*/, this.handleResponse(response)];
case 11:
cases = _a.sent();
fileGenerateTask = [];
_loop_2 = function (item) {
fileGenerateTask.push(new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.storeFileInTree(item, path, templateInfo)];
case 1:
_a.sent();
resolve();
return [2 /*return*/];
}
});
}); }));
};
for (_i = 0, cases_1 = cases; _i < cases_1.length; _i++) {
item = cases_1[_i];
_loop_2(item);
}
//Promise all storage
return [4 /*yield*/, Promise.all(fileGenerateTask)];
case 12:
//Promise all storage
_a.sent();
logger.debug("[Store Finished] Total Store " + fileGenerateTask.length + " files");
return [2 /*return*/];
}
});
});
};
/**
* Handle search response to generate case info map
* @param response
*/
TestItSDK.prototype.handleResponse = function (response) {
return __awaiter(this, void 0, void 0, function () {
var caseInfoMap, caseInfoSyncTask, i, flatResponse, _loop_3, _i, flatResponse_1, item, flatResponse, caseInfoSyncTask_1, _loop_4, _a, flatResponse_2, item;
var _this = this;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
caseInfoMap = [];
caseInfoSyncTask = [];
if (!(response.length > 1)) return [3 /*break*/, 2];
for (i = 0; i < response.length; i++) {
flatResponse = this.flat(response[i]);
_loop_3 = function (item) {
caseInfoSyncTask.push(new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
var tempKey, caseResponse, caseInfo;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
tempKey = item.prefix + "-" + item.externalId;
return [4 /*yield*/, this.getTestCaseByKey(tempKey)];
case 1:
caseResponse = _a.sent();
return [4 /*yield*/, this.fillCaseInfoMap(tempKey, caseResponse)];
case 2:
caseInfo = _a.sent();
caseInfoMap.push(caseInfo);
resolve();
return [2 /*return*/];
}
});
}); }));
// logger.debug(`${caseInfoMap[0].ascendants} ----- Search result : ${flatResponse.length}`)
logger.debug("Ready to store " + caseInfoMap.length + " files");
};
//if repeat suite name,clear case info map
for (_i = 0, flatResponse_1 = flatResponse; _i < flatResponse_1.length; _i++) {
item = flatResponse_1[_i];
_loop_3(item);
}
}
//get all caseInfo
return [4 /*yield*/, Promise.all(caseInfoSyncTask)];
case 1:
//get all caseInfo
_b.sent();
logger.debug("Total Search : " + response.length + " suite name tree");
return [3 /*break*/, 4];
case 2:
flatResponse = this.flat(response[0]);
caseInfoSyncTask_1 = [];
_loop_4 = function (item) {
caseInfoSyncTask_1.push(new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
var tempKey, caseResponse, caseInfo;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
tempKey = item.prefix + "-" + item.externalId;
return [4 /*yield*/, this.getTestCaseByKey(tempKey)];
case 1:
caseResponse = _a.sent();
return [4 /*yield*/, this.fillCaseInfoMap(tempKey, caseResponse)];
case 2:
caseInfo = _a.sent();
caseInfoMap.push(caseInfo);
resolve();
return [2 /*return*/];
}
});
}); }));
};
for (_a = 0, flatResponse_2 = flatResponse; _a < flatResponse_2.length; _a++) {
item = flatResponse_2[_a];
_loop_4(item);
}
return [4 /*yield*/, Promise.all(caseInfoSyncTask_1)];
case 3:
_b.sent();
logger.debug("Ready to Store " + flatResponse.length + " files");
_b.label = 4;
case 4: return [2 /*return*/, caseInfoMap];
}
});
});
};
/**
* Fill case info map
* @param tempKey
* @param caseResponse
*/
TestItSDK.prototype.fillCaseInfoMap = function (tempKey, caseResponse) {
return __awaiter(this, void 0, void 0, function () {
var caseInfo, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = {
id: tempKey,
name: caseResponse.name
};
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "suite")];
case 1:
_a.suite = _b.sent(),
_a.priority = "P" + caseResponse.priority,
_a.ids = [tempKey];
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "ascendants")];
case 2:
_a.ascendants = _b.sent();
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "keywords")];
case 3:
_a.keywords = _b.sent();
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "maintainers")];
case 4:
_a.maintainers = _b.sent();
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "docs")];
case 5:
_a.docs = _b.sent();
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "testSteps")];
case 6:
_a.testSteps = _b.sent();
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "preconditions")];
case 7:
_a.preconditions = _b.sent();
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "accountType")];
case 8:
_a.accountType = _b.sent();
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "extensionType")];
case 9:
_a.extensionType = _b.sent();
return [4 /*yield*/, this.fetchTemplateFieldInfo(caseResponse, "entryPoint")];
case 10:
caseInfo = (_a.entryPoint = _b.sent(),
_a);
return [2 /*return*/, caseInfo];
}
});
});
};
/**
* Search test cases by query.
* 【Query Example】const query = `version eq "active" and project_id in "[1311]" and field.5371560 in "[6234174]" and field.224 in "[11949947]"`;
* @param query
* @param scope
* @param suiteName use suite name to filter
*/
TestItSDK.prototype.searchTestCasesByQuery = function (query, scope, suiteName) {
if (scope === void 0) { scope = "TEST_SUITES"; }
return __awaiter(this, void 0, void 0, function () {
var queryJson, response, filterResult, result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.generateSearchJson(query)];
case 1:
queryJson = _a.sent();
return [4 /*yield*/, this.searchTestCasesByJsonQuery(queryJson, scope)];
case 2:
response = _a.sent();
if (!!(suiteName === undefined)) return [3 /*break*/, 4];
return [4 /*yield*/, this.SearchSuiteBlkInResponse(response, suiteName)];
case 3:
filterResult = _a.sent();
return [2 /*return*/, filterResult];
case 4:
result = [];
result.push(response);
return [2 /*return*/, result];
}
});
});
};
/**
* Search suite by suite name in response
* @param response
* @param suiteName
*/
TestItSDK.prototype.SearchSuiteBlkInResponse = function (response, suiteName) {
return __awaiter(this, void 0, void 0, function () {
var suiteQueue, resultData, i, tempProject, j, tempSuite, k;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
suiteQueue = [];
resultData = [];
i = 0;
_a.label = 1;
case 1:
if (!(i < response.children.length)) return [3 /*break*/, 7];
tempProject = response.children[i];
if (!!(tempProject.children === undefined)) return [3 /*break*/, 6];
j = 0;
_a.label = 2;
case 2:
if (!(j < tempProject.children.length)) return [3 /*break*/, 6];
suiteQueue.push(tempProject.children[j]);
_a.label = 3;
case 3:
if (!(suiteQueue.length != 0 && suiteQueue != null)) return [3 /*break*/, 5];
return [4 /*yield*/, suiteQueue.shift()];
case 4:
tempSuite = _a.sent();
if (tempSuite === undefined)
return [3 /*break*/, 3];
if (tempSuite.name == suiteName) {
resultData.push(tempSuite);
}
//search for suite children
if (!(tempSuite.children === undefined) &&
tempSuite.type == "suite") {
for (k = 0; k < tempSuite.children.length; k++) {
if (tempSuite.children[k].type == "suite") {
suiteQueue.push(tempSuite.children[k]);
}
}
}
return [3 /*break*/, 3];
case 5:
j++;
return [3 /*break*/, 2];
case 6:
i++;
return [3 /*break*/, 1];
case 7: return [2 /*return*/, resultData];
}
});
});
};
/**
* Convert search query to json.
* @param query
*/
TestItSDK.prototype.generateSearchJson = function (query) {
return __awaiter(this, void 0, void 0, function () {
var queryParse, queryJson, s1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
queryParse = Parser.parse(query);
return [4 /*yield*/, JSON.stringify(queryParse)];
case 1:
queryJson = _a.sent();
s1 = '\\"';
queryJson = queryJson.replace(s1, "").replace(s1, "");
queryJson = queryJson.replace(/\"\\\"/g, "").replace(/\\\"\"/g, "");
//filter search condition of suiteName value
queryJson = queryJson.replace(/'/g, '"');
// logger.debug(queryJson);
return [2 /*return*/, queryJson];
}
});
});
};
/**
* Search testCases by search options(projectName,keywords,subtype).
* @param projectName
* @param keywords
* @param subtype
*/
TestItSDK.prototype.searchCasesBySearchOptions = function (searchOption) {
return __awaiter(this, void 0, void 0, function () {
var response, query, searchRes, flatResponseArr, i, flatResponse, flatResponse;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!!(searchOption.caseId === undefined)) return [3 /*break*/, 3];
return [4 /*yield*/, this.getTestCaseByKey(searchOption.caseId)];
case 1:
response = _a.sent();
return [4 /*yield*/, this.printSearchInfo(response)];
case 2:
_a.sent();
return [2 /*return*/];
case 3: return [4 /*yield*/, this.generateQuery(searchOption)];
case 4:
query = _a.sent();
return [4 /*yield*/, this.searchTestCasesByQuery(query, "TEST_SUITES", searchOption.suiteName)];
case 5:
searchRes = _a.sent();
//count response lenth
//by suite name
if (searchRes.length > 1) {
flatResponseArr = [];
logger.debug("->> Find " + searchRes.length + " suites according to the " + searchOption.suiteName);
for (i = 0; i < searchRes.length; i++) {
flatResponse = this.flat(searchRes[i]);
logger.debug("Search Result: ");
this.printSearchInfo(flatResponse);
flatResponseArr.push(flatResponse);
logger.debug("Total Search : " + flatResponse.length + "\n");
}
return [2 /*return*/, flatResponseArr]; //return array
}
else {
//not by suite name
logger.debug("->> Find 1 suite according to the " + searchOption.suiteName);
flatResponse = this.flat(searchRes[0]);
logger.debug("Search Result: ");
this.printSearchInfo(flatResponse);
logger.debug("Total Search : " + flatResponse.length);
return [2 /*return*/, flatResponse]; // return response
}
return [2 /*return*/];
}
});
});
};
/**
* Print search result info
* @param flatResponse
*/
TestItSDK.prototype.printSearchInfo = function (flatResponse) {
return __awaiter(this, void 0, void 0, function () {
var i, temp, info;
return __generator(this, function (_a) {
for (i = 0; i < flatResponse.length; i++) {
temp = flatResponse[i];
info = "\t" + temp.prefix + "-" + temp.externalId + ":" + temp.name;
logger.debug(info);
}
return [2 /*return*/];
});
});
};
/**
* Get suite id by name.
* @param suiteName
* @param projectId
*/
TestItSDK.prototype.getSuiteIdByName = function (suiteName, projectId) {
return __awaiter(this, void 0, void 0, function () {
var projectTree, searchQueue, suiteId, i, tempSuite, j;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getProjectTreeById(projectId)];
case 1:
projectTree = _a.sent();
searchQueue = [];
suiteId = [];
i = 0;
_a.label = 2;
case 2:
if (!(i < projectTree.length)) return [3 /*break*/, 11];
return [4 /*yield*/, searchQueue.push(projectTree[i])];
case 3:
_a.sent();
_a.label = 4;
case 4:
if (!(searchQueue.length != 0 && searchQueue != null)) return [3 /*break*/, 10];
return [4 /*yield*/, searchQueue.shift()];
case 5:
tempSuite = _a.sent();
if (tempSuite === undefined)
return [3 /*break*/, 4];
try {
if (tempSuite.name == suiteName) {
//store suiteId
suiteId.push(tempSuite.id);
}
}
catch (err) {
logger.debug(tempSuite);
}
if (!(!(tempSuite.children === undefined) && tempSuite.type == "suite")) return [3 /*break*/, 9];
j = 0;
_a.label = 6;
case 6:
if (!(j < tempSuite.children.length)) return [3 /*break*/, 9];
if (!(tempSuite.children[j].type == "suite")) return [3 /*break*/, 8];
return [4 /*yield*/, searchQueue.push(tempSuite.children[j])];
case 7:
_a.sent();
_a.label = 8;
case 8:
j++;
return [3 /*break*/, 6];
case 9: return [3 /*break*/, 4];
case 10:
i++;
return [3 /*break*/, 2];
case 11: return [2 /*return*/, suiteId];
}
});
});
};
/**
* Search cases by suite name.
* [Abandon]
* @param suiteName
* @param projectName
*/
TestItSDK.prototype.searchCasesBySuiteName = function (suiteName, projectName) {
return __awaiter(this, void 0, void 0, function () {
var projectId, caseKeyMap, prefixMap, prefix, suiteId, k, suiteTree, suite, path, i, i, flatResponse, j, caseKeyInfo;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getProjectIdByName(projectName)];
case 1:
projectId = _a.sent();
caseKeyMap = [];
return [4 /*yield*/, this.genPrefixProjectMap()];
case 2:
prefixMap = _a.sent();
return [4 /*yield*/, prefixMap.get(projectId)];
case 3:
prefix = _a.sent();
return [4 /*yield*/, this.getSuiteIdByName(suiteName, projectId)];
case 4:
suiteId = _a.sent();
logger.debug(suiteId);
// get suite tree by id and flat it get total case
logger.debug("Search for " + suiteId.length + " suite");
k = 0;
_a.label = 5;
case 5:
if (!(k < suiteId.length)) return [3 /*break*/, 12];
return [4 /*yield*/, this.getSuiteTreeById(suiteId[k])];
case 6:
suiteTree = _a.sent();
return [4 /*yield*/, this.getSuiteById(suiteId[k])];
case 7:
suite = _a.sent();
path = "";
for (i = 0; i < suite.ascendants.length; i++) {
path = "" + path + suite.ascendants[i].name + "/";
}
logger.debug("The path : " + path);
i = 0;
_a.label = 8;
case 8:
if (!(i < suiteTree.length)) return [3 /*break*/, 11];
return [4 /*yield*/, this.flat(suiteTree[i])];
case 9:
flatResponse = _a.sent();
for (j = 0; j < flatResponse.length; j++) {
caseKeyInfo = prefix + "-" + flatResponse[j].externalId;
logger.debug(caseKeyInfo);
caseKeyMap.push(caseKeyInfo);
}
_a.label = 10;
case 10:
i++;
return [3 /*break*/, 8];
case 11:
k++;
return [3 /*break*/, 5];
case 12:
logger.debug("Total Search Result : " + caseKeyMap.length);
return [2 /*return*/, caseKeyMap];
}
});
});
};
/**
* Store cases by suite name.
* [Abandon]
* @param suiteName
* @param projectName
* @param path
*/
TestItSDK.prototype.storeCasesBySuiteName = function (suiteName, projectName, path, templatePath) {
return __awaiter(this, void 0, void 0, function () {
var caseKeyMap, i;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.searchCasesBySuiteName(suiteName, projectName)];
case 1:
caseKeyMap = _a.sent();
i = 0;
_a.label = 2;
case 2:
if (!(i < caseKeyMap.length)) return [3 /*break*/, 5];
return [4 /*yield*/, this.storeFileInTreeByCaseKey(caseKeyMap[i], path, templatePath)];
case 3:
_a.sent();
_a.label = 4;
case 4:
i++;
return [3 /*break*/, 2];
case 5: return [2 /*return*/];
}
});
});
};
/**
* Generate search query by project name、keywords and suite.
* @param projectName
* @param keywords
* @param subtype
*/
TestItSDK.prototype.generateQuery = function (searchOption) {
return __awaiter(this, void 0, void 0, function () {
var projectName, projectId, response, keyworsMap, subtypeMap, automatedByMap, fieldsIdMap, keyWordQuery, keywords, keywordsArr, i, subtypeQuery, subtype, subtypeArr, i, priorityQuery, priority, caseNameQuery, caseName, automatedByQuery, automatedBy, automatedByArr, i, dateCreatedQuery, dateCreated, dateValue, timeZone, dateUpdatedQuery, dateUpdated, dateValue, timeZone, query;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
projectName = searchOption.projectName;
return [4 /*yield*/, this.getProjectIdByName(projectName)];
case 1:
projectId = _a.sent();
return [4 /*yield*/, this.fetchFieldsInfoById(projectId)];
case 2:
response = _a.sent();
return [4 /*yield*/, this.getFieldsInfoMapByName(response, "Keywords")];
case 3:
keyworsMap = _a.sent();
return [4 /*yield*/, this.getFieldsInfoMapByName(response, "Subtype")];
case 4:
subtypeMap = _a.sent();
return [4 /*yield*/, this.getFieldsInfoMapByName(response, "Automated By")];
case 5:
automatedByMap = _a.sent();
return [4 /*yield*/, this.getFieldsIdMap(response)];
case 6:
fieldsIdMap = _a.sent();
keyWordQuery = "";
if (!(searchOption.keywords === undefined)) {
keywords = searchOption.keywords;
keywordsArr = [];
for (i = 0; i < keywords.length; i++) {
keywordsArr.push(keyworsMap.get(keywords[i]));
}
keyWordQuery = keyWordQuery + " and field." + fieldsIdMap.get("Keywords") + " in \"[" + keywordsArr + "]\"";
}
subtypeQuery = "";
if (!(searchOption.subtype === undefined)) {
subtype = searchOption.subtype;
subtypeArr = [];
for (i = 0; i < subtype.length; i++) {
subtypeArr.push(subtypeMap.get(subtype[i]));
}
subtypeQuery = subtypeQuery + " and field." + fieldsIdMap.get("Subtype") + " in \"[" + subtypeArr + "]\"";
}
priorityQuery = "";
if (!(searchOption.priority === undefined)) {
priority = searchOption.priority;
priorityQuery = priorityQuery + " and priority in \"[" + searchOption.priority + "]\"";
}
caseNameQuery = "";
if (!(searchOption.caseName === undefined)) {
caseName = searchOption.caseName;
caseNameQuery = caseNameQuery + " and case_name like \"'" + caseName + "'\"";
}
automatedByQuery = "";
if (!(searchOption.automatedBy === undefined)) {
automatedBy = searchOption.automatedBy;
automatedByArr = [];
for (i = 0; i < automatedBy.length; i++) {
automatedByArr.push(automatedByMap.get(automatedBy[i]));
}
automatedByQuery = automatedByQuery + " and field." + fieldsIdMap.get("Automated By") + " in \"[" + automatedByArr + "]\"";
}
dateCreatedQuery = "";
if (!(searchOption.dateCreated === undefined)) {
dateCreated = searchOption.dateCreated;
dateValue = [];
timeZone = new Date().getTimezoneOffset() * 60 * 1000;
dateValue[0] = new Date(dateCreated[0]).getTime() + timeZone;
dateValue[1] = new Date(dateCreated[1]).getTime() + timeZone;
dateCreatedQuery = dateCreatedQuery + " and date_created gte \"" + dateValue[0] + "\" and date_created lt \"" + dateValue[1] + "\"";
}
dateUpdatedQuery = "";
if (!(searchOption.dateUpdated === undefined)) {
dateUpdated = searchOption.dateUpdated;
dateValue = [];
timeZone = new Date().getTimezoneOffset() * 60 * 1000;
dateValue[0] = new Date(dateUpdated[0]).getTime() + timeZone;
dateValue[1] = new Date(dateUpdated[1]).getTime() + timeZone;
dateUpdatedQuery = dateUpdatedQuery + " and last_updated gte \"" + dateValue[0] + "\" and last_updated lt \"" + dateValue[1] + "\"";
}
query = "version eq \"active\" and project_id in \"[" + projectId + "]\"" + keyWordQuery + subtypeQuery + priorityQuery + caseNameQuery + automatedByQuery + dateCreatedQuery + dateUpdatedQuery;
return [2 /*return*/, query];
}
});
});
};
/* Sync API */
/**
* Get sync projects.
*/
TestItSDK.prototype.getSyncProjects = function () {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/internal/sync/projects";
headers = {
Authorization: this.accessToken,
"Content-type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get sync cases.
*/
TestItSDK.prototype.getSyncCases = function () {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
url = this.endpoint + "/api/internal/sync/cases";
headers = {
Authorization: this.accessToken,
"Content-type": "application/json"
};
config = { headers: headers };
response = this.httpClient.get(url, config);
return [2 /*return*/, response];
});
});
};
/* Get Store API */
/**
* Get store project by project id.
* @param projectId
*/
TestItSDK.prototype.getStoreProjectById = function (projectId) {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/internal/storage/project/" + projectId;
headers = {
Authorization: this.accessToken,
"Content-type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Get global data.
* @return {Promise<IGlobalData>}
*/
TestItSDK.prototype.getGlobalData = function () {
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/projects/static";
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
/**
* Search for suggest cases by query.
* @param pattern
* @param limit
*/
TestItSDK.prototype.getSuggestTestCases = function (pattern, limit) {
if (limit === void 0) { limit = 10; }
return __awaiter(this, void 0, void 0, function () {
var url, headers, config, response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = this.endpoint + "/api/v1/suggest/cases?search=" + pattern + "&limit=" + limit;
headers = {
Authorization: this.accessToken,
"Content-Type": "application/json"
};
config = { headers: headers };
return [4 /*yield*/, this.httpClient.get(url, config)];
case 1:
response = _a.sent();
return [2 /*return*/, response.data];
}
});
});
};
TestItSDK.prototype.generateInfosByKey = function (key) {
return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
return [2 /*return*/];
}); });
};
/**
* Generate template info by key according to giving template
* @param key
* @param templatePath
*/
TestItSDK.prototype.generateInfoByKeyInTemplate = function (key, templatePath) {
return __awaiter(this, void 0, void 0, function () {
var fs, responseData, templateInfo, matchRes, i, field, info, matchResTs, childrenLen, contentInfo, expandInfo, i, steps, expectedResult, i, _a, _b, _c, _d, i;
return __generator(this, function (_e) {
switch (_e.label) {
case 0:
fs = require("fs");
return [4 /*yield*/, this.getTestCaseByKey(key)];
case 1:
responseData = _e.sent();
templateInfo = fs.readFileSync(templatePath, "utf8");
matchRes = templateInfo.match(/.*[\n\t\s]*\$\{.*?\}[\n\t\s]*.*/g);
i = 0;
_e.label = 2;
case 2:
if (!(i < matchRes.length)) return [3 /*break*/, 6];
field = matchRes[i].split(":")[0].trim();
return [4 /*yield*/, this.fetchTemplateFieldInfo(responseData, field)];
case 3:
info = _e.sent();
if (!!(info === undefined)) return [3 /*break*/, 5];
return [4 /*yield*/, templateInfo.replace(/\$\{.*?\}/, info)];
case 4:
templateInfo = _e.sent();
_e.label = 5;
case 5:
i++;
return [3 /*break*/, 2];
case 6:
matchResTs = templateInfo.match(/.*\$\{.*?\}.*[\n\s\t\r]*.*/g);
childrenLen = responseData.children.length;
contentInfo = matchResTs[0] + "\n" + matchResTs[1] + "\n";
expandInfo = "";
for (i = 0; i < childrenLen; i++) {
expandInfo = "" + expandInfo + contentInfo;
}
templateInfo = templateInfo.replace(matchResTs[0] + "\n" + matchResTs[1], expandInfo);
steps = [];
expectedResult = [];
if (!(childrenLen != 0)) return [3 /*break*/, 11];
i = 0;
_e.label = 7;
case 7:
if (!(i < childrenLen)) return [3 /*break*/, 11];
_a = steps;
_b = i;
return [4 /*yield*/, this.stringFilter(responseData.children[i].name)];
case 8:
_a[_b] = _e.sent();
_c = expectedResult;
_d = i;
return [4 /*yield*/, this.stringFilter(responseData.children[i].expectedResult)];
case 9:
_c[_d] = _e.sent();
_e.label = 10;
case 10:
i++;
return [3 /*break*/, 7];
case 11:
//fill test steps
for (i = 0; i < childrenLen; i++) {
templateInfo = templateInfo
.replace("${}", steps[i])
.replace("${}", expectedResult[i]);
}
return [2 /*return*/, templateInfo];
}
});
});
};
TestItSDK.prototype.getTestStepsInfo = function () {
return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
return [2 /*return*/];
}); });
};
/**
* Fetch template field information by field name
* To fill template
* @param responseData
* @param field
*/
TestItSDK.prototype.fetchTemplateFieldInfo = function (responseData, field) {
return __awaiter(this, void 0, void 0, function () {
var key, ascendantsLen, suiteInfo, name_1, valueLen, keywords, i, casePrioriy, valueLen, maintainers, i, docsArr, url, docs, ids, valueLen, subtype, i, subtypeStr, children, childrenLen, testStepsInfo, i, _a, _b, _c, ascendants, suiteTree, i, tempName, space, preconditions, matches, matchInfo, accountType, extensionType, entryPointStr;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
key = responseData.prefix + "-" + responseData.externalId;
if (!(field == "suite")) return [3 /*break*/, 1];
ascendantsLen = responseData.ascendants.length;
suiteInfo = responseData.ascendants[ascendantsLen - 1].name;
return [2 /*return*/, suiteInfo];
case 1:
if (!(field == "name")) return [3 /*break*/, 2];
name_1 = key + ":" + responseData.name;
return [2 /*return*/, name_1];
case 2:
if (!(field == "keywords")) return [3 /*break*/, 3];
valueLen = responseData.values.length;
keywords = [];
for (i = 0; i < valueLen; i++) {
// 224 is keywords field id
if (responseData.values[i].fieldId == 224) {
keywords.push(responseData.values[i].name);
}
}
// var keywordsStr = await this.convertoString(keywords);
// return keywordsStr;
return [2 /*return*/, keywords];
case 3:
if (!(field == "priority")) return [3 /*break*/, 4];
casePrioriy = "P" + responseData.priority;
return [2 /*return*/, casePrioriy];
case 4:
if (!(field == "maintainers")) return [3 /*break*/, 5];
valueLen = responseData.values.length;
maintainers = [];
for (i = 0; i < valueLen; i++) {
// 6615030 is keywords field id
if (responseData.values[i].fieldId == 6615030) {
maintainers.push(responseData.values[i].name);
}
}
// var maintainersStr = await this.convertoString(maintainers);
// return maintainersStr;
return [2 /*return*/, maintainers];
case 5:
if (!(field == "docs")) return [3 /*break*/, 7];
docsArr = [];
return [4 /*yield*/, this.endpoint + "/test-cases/" + key];
case 6:
url = _d.sent();
docsArr.push(url);
docs = this.convertoString(docsArr);
return [2 /*return*/, docs];
case 7:
if (!(field == "ids")) return [3 /*break*/, 8];
ids = key;
return [2 /*return*/, ids];
case 8:
if (!(field == "subtype")) return [3 /*break*/, 10];
valueLen = responseData.values.length;
subtype = [];
for (i = 0; i < valueLen; i++) {
// 6231852 is keywords field id
if (responseData.values[i].fieldId == 6231852) {
subtype[i] = responseData.values[i].name;
}
}
return [4 /*yield*/, this.convertoString(subtype)];
case 9:
subtypeStr = _d.sent();
return [2 /*return*/, subtypeStr];
case 10:
if (!(field == "testSteps")) return [3 /*break*/, 16];
children = responseData.children;
childrenLen = children.length;
testStepsInfo = [];
i = 0;
_d.label = 11;
case 11:
if (!(i < childrenLen)) return [3 /*break*/, 15];
_a = testStepsInfo;
_b = i;
_c = {};
return [4 /*yield*/, this.stringFilter(children[i].name)];
case 12:
_c.step = _d.sent();
return [4 /*yield*/, this.stringFilter(children[i].expectedResult)];
case 13:
_a[_b] = (_c.expectedResult = _d.sent(),
_c);
_d.label = 14;
case 14:
i++;
return [3 /*break*/, 11];
case 15: return [2 /*return*/, testStepsInfo];
case 16:
if (field == "ascendants") {
ascendants = responseData.ascendants;
suiteTree = "";
for (i = 0; i < ascendants.length; i++) {
tempName = ascendants[i].name;
space = new RegExp(" ", "g");
tempName = tempName.replace(space, "");
suiteTree = suiteTree + "/" + tempName;
}
suiteTree = suiteTree.replace(suiteTree.charAt(0), "");
return [2 /*return*/, suiteTree];
}
_d.label = 17;
case 17: return [4 /*yield*/, this.stringFilter(responseData.preconditions)];
case 18:
preconditions = _d.sent();
matches = preconditions.match(/Account type\(\/s\)\:[ ]*.*/);
//no matches
if (matches === undefined || matches === null) {
return [2 /*return*/];
}
else {
//match by special (/s):
matchInfo = matches[0].split("(/s):");
}
if (field == "preconditions") {
return [2 /*return*/, preconditions];
}
else if (field == "accountType") {
accountType = matchInfo[1].replace("Extension type", "").trim();
return [2 /*return*/, accountType];
}
else if (field == "extensionType") {
extensionType = matchInfo[2].replace("Entry point", "").trim();
return [2 /*return*/, extensionType];
}
else if (field == "entryPoint") {
entryPointStr = matchInfo[3].trim();
return [2 /*return*/, entryPointStr];
}
return [2 /*return*/];
}
});
});
};
/**
* Convert original array to string
* @param original
*/
TestItSDK.prototype.convertoString = function (original) {
return __awaiter(this, void 0, void 0, function () {
var result, i;
return __generator(this, function (_a) {
result = "";
for (i = 0; i < original.length; i++) {
result = result + "\"" + original[i] + "\",";
}
result = result.substring(0, result.length - 1);
return [2 /*return*/, result];
});
});
};
/**
* Generate template information by key.
* @param key Case key
*/
TestItSDK.prototype.generateTemplatesInfoByKey = function (key) {
return __awaiter(this, void 0, void 0, function () {
var responseData, ascendantsLen, suite, nameInfo, casePrioriy, skip, skipReason, keywords, maintainers, valueLen, i, childrenLen, steps, expectedResult, i, _a, _b, _c, _d, importInfo, runTestInfo, asyncInfo, preStep, afterStep, preExpect, afterExpect, end, resInfo, resInfoStr, resInfoKeys, i, i, resultInfo, i;
return __generator(this, function (_e) {
switch (_e.label) {
case 0: return [4 /*yield*/, this.getTestCaseByKey(key)];
case 1:
responseData = _e.sent();
ascendantsLen = responseData.ascendants.length;
suite = responseData.ascendants[ascendantsLen - 1].name;
nameInfo = key + ":" + responseData.name;
casePrioriy = "P" + responseData.priority;
skip = true;
skipReason = "waiting for E2E deliver";
keywords = [];
maintainers = [];
valueLen = responseData.values.length;
//Refer to field id.
for (i = 0; i < valueLen; i++) {
if (responseData.values[i].fieldId == 224) {
keywords.push(responseData.values[i].name);
}
else if (responseData.values[i].fieldId == 6615030) {
maintainers.push(responseData.values[i].name);
}
}
steps = [];
expectedResult = [];
if (!((childrenLen = responseData.children.length) != 0)) return [3 /*break*/, 6];
i = 0;
_e.label = 2;
case 2:
if (!(i < childrenLen)) return [3 /*break*/, 6];
_a = steps;
_b = i;
return [4 /*yield*/, this.stringFilter(responseData.children[i].name)];
case 3:
_a[_b] = _e.sent();
_c = expectedResult;
_d = i;
return [4 /*yield*/, this.stringFilter(responseData.children[i].expectedResult)];
case 4:
_c[_d] = _e.sent();
_e.label = 5;
case 5:
i++;
return [3 /*break*/, 2];
case 6:
importInfo = "import { h, runTest } from '@src/init';\nimport { App } from \"@src/pageModels/app\";\nimport { StepWrapper } from \"@tests/stepWrapper\";\nimport { HomePageController } from \"@src/pageControllers/app/homePage\";\nimport MeetingRoomController from \"@src/pageControllers/app/homePage/meetingRoom\";\nimport { WebphoneSession } from \"ultron-client\";\nimport { LeftRailController } from \"@src/pageControllers/app/homePage/meetTab\";\nimport MeetingPageController from '@src/pageControllers/app/homePage/meetingPage';\nimport { sleep } from \"@src/libs/utils\";\n";
runTestInfo = "runTest({\n";
asyncInfo = "},async(t:any)=>{\n";
preStep = '\tawait h(t).When_("';
afterStep = ",async()=>{\n\t});\n";
preExpect = '\tawait h(t).Then_("';
afterExpect = ",async() => {\n\t});\n";
end = "\th(t).finish();\n});";
resInfo = {
suite: suite,
name: [nameInfo],
priority: casePrioriy,
skip: skip,
skipReason: skipReason,
keywords: keywords,
maintainers: maintainers
};
resInfoStr = JSON.stringify(resInfo);
resInfoKeys = Object.keys(resInfo);
for (i = 0; i < resInfoKeys.length; i++) {
resInfoStr = resInfoStr.replace("\"" + resInfoKeys[i] + "\"", resInfoKeys[i]);
resInfoStr = resInfoStr.replace("," + resInfoKeys[i], ",\n" + resInfoKeys[i]);
}
// delete the character of start and end
resInfoStr = resInfoStr.replace(resInfoStr.charAt(0), "");
resInfoStr = resInfoStr.replace(resInfoStr.charAt(resInfoStr.length - 1), "");
// add tab
for (i = 0; i < resInfoKeys.length; i++) {
resInfoStr = resInfoStr.replace("" + resInfoKeys[i], "\t" + resInfoKeys[i]);
}
resultInfo = "" + importInfo + runTestInfo + resInfoStr + "\n" + asyncInfo;
for (i = 0; i < childrenLen; i++) {
resultInfo = "" + resultInfo + preStep + steps[i] + "\"" + afterStep + preExpect + expectedResult[i] + "\"" + afterExpect;
}
resultInfo = "" + resultInfo + end;
return [2 /*return*/, resultInfo];
}
});
});
};
/**
* Write info to ouputstream and storage to file path.
* @param info
* @param filePath
*/
TestItSDK.prototype.writeTemplateInfo = function (info, filePath) {
return __awaiter(this, void 0, void 0, function () {
var fs, infoWriteStream;
return __generator(this, function (_a) {
fs = require("fs");
infoWriteStream = fs.createWriteStream(filePath);
infoWriteStream.write(info, "UTF-8");
infoWriteStream.end();
infoWriteStream.on(filePath + "--Done", function () {
logger.debug("${filePath}--Done");
});
return [2 /*return*/];
});
});
};
/**
* Store a template file to file path by case key.
* @param key
* @param filePath
*/
TestItSDK.prototype.storeTemplateInfoByCaseKey = function (key, filePath) {
return __awaiter(this, void 0, void 0, function () {
var info;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.generateTemplatesInfoByKey(key)];
case 1:
info = _a.sent();
filePath = "" + filePath + key + ".test.ts";
this.writeTemplateInfo(info, filePath);
return [2 /*return*/];
}
});
});
};
/**
* Store template info for file tree by case key.
* @param key
* @param filePath
*/
TestItSDK.prototype.storeFileInTreeByCaseKey = function (key, filePath, templatePath) {
return __awaiter(this, void 0, void 0, function () {
var response, ascendants, suiteTree, i, tempName, space;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getTestCaseByKey(key)];
case 1:
response = _a.sent();
ascendants = response.ascendants;
suiteTree = "";
for (i = 0; i < ascendants.length; i++) {
tempName = ascendants[i].name;
space = new RegExp(" ", "g");
tempName = tempName.replace(space, "");
suiteTree = suiteTree + "/" + tempName;
}
suiteTree = suiteTree.replace(suiteTree.charAt(0), "");
filePath = "" + filePath + suiteTree;
this.writeInfoByCreateDir(key, filePath, templatePath);
return [2 /*return*/];
}
});
});
};
/**
* Store file by case key
* @param key
* @param filePath
* @param templatePath
*/
TestItSDK.prototype.storeFileByCaseKey = function (key, filePath, templatePath) {
return __awaiter(this, void 0, void 0, function () {
var response, caseInfo, fs, templateInfo;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.getTestCaseByKey(key)];
case 1:
response = _a.sent();
return [4 /*yield*/, this.fillCaseInfoMap(key, response)];
case 2:
caseInfo = _a.sent();
fs = require("fs");
//make sure template path is true
if (templatePath === undefined) {
templateInfo = fs.readFileSync("../templates/Default.txt", "UTF-8", function (err) {
throw new Error("Can't not find default.txt");
});
}
else {
templateInfo = fs.readFileSync(templatePath, "UTF-8", function (err) {
throw new Error("Can't not find " + templatePath);
});
}
return [4 /*yield*/, this.storeFileInTree(caseInfo, filePath, templateInfo)];
case 3:
_a.sent();
return [2 /*return*/];
}
});
});
};
/**
* Store and fill templateInfo
* @param caseInfo
* @param filePath
* @param templateInfo
*/
TestItSDK.prototype.storeFileInTree = function (caseInfo, filePath, templateInfo) {
return __awaiter(this, void 0, void 0, function () {
var resultInfo, fileName, Mustache;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
resultInfo = templateInfo;
filePath = "" + filePath + caseInfo.ascendants;
fileName = filePath + "/" + caseInfo.id + ".test.ts";
Mustache = require("mustache");
Mustache.parse(templateInfo);
resultInfo = Mustache.render(templateInfo, caseInfo);
// logger.debug(resultInfo);
// logger.debug(filePath);
//write resultInfo into path
return [4 /*yield*/, this.writeInfo(resultInfo, filePath, fileName)];
case 1:
// logger.debug(resultInfo);
// logger.debug(filePath);
//write resultInfo into path
_a.sent();
return [2 /*return*/];
}
});
});
};
/**
* Write info by create dir.
* @param info
* @param filePath
*/
TestItSDK.prototype.writeInfoByCreateDir = function (key, filePath, templatePath) {
return __awaiter(this, void 0, void 0, function () {
var info, mkdirp, fs, testFile, infoWriteStream;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!!(templatePath === undefined)) return [3 /*break*/, 2];
return [4 /*yield*/, this.generateInfoByKeyInTemplate(key, templatePath)];
case 1:
info = _a.sent();
return [3 /*break*/, 4];
case 2: return [4 /*yield*/, this.generateTemplatesInfoByKey(key)];
case 3:
info = _a.sent();
_a.label = 4;
case 4:
mkdirp = require("mkdirp");
return [4 /*yield*/, mkdirp(filePath)];
case 5:
_a.sent(); //.then((made: any) => logger.debug(`Create in ${made}`));
fs = require("fs");
testFile = filePath + "/" + key + ".test.ts";
logger.debug("Store " + testFile);
return [4 /*yield*/, fs.createWriteStream(testFile)];
case 6:
infoWriteStream = _a.sent();
return [4 /*yield*/, infoWriteStream.write(info, "UTF-8")];
case 7:
_a.sent();
return [4 /*yield*/, infoWriteStream.end()];
case 8:
_a.sent();
infoWriteStream.on(filePath + "--Done", function () {
logger.debug("${filePath}--Done");
});
infoWriteStream.on("error", function (err) {
logger.debug(err.stack);
});
return [2 /*return*/];
}
});
});
};
TestItSDK.prototype.writeInfo = function (info, filePath, fileName) {
return __awaiter(this, void 0, void 0, function () {
var mkdirp, fs, infoWriteStream;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
mkdirp = require("mkdirp");
return [4 /*yield*/, mkdirp(filePath)];
case 1:
_a.sent(); //.then((made: any) => logger.debug(`Create in ${made}`));
fs = require("fs");
logger.debug("Store " + fileName);
return [4 /*yield*/, fs.createWriteStream(fileName)];
case 2:
infoWriteStream = _a.sent();
return [4 /*yield*/, infoWriteStream.write(info, "UTF-8")];
case 3:
_a.sent();
return [4 /*yield*/, infoWriteStream.end()];
case 4:
_a.sent();
infoWriteStream.on(fileName + "--Done", function () {
logger.debug("${fileName}--Done");
});
infoWriteStream.on("error", function (err) {
logger.debug(err.stack);
});
return [2 /*return*/];
}
});
});
};
/**
* Make directory.
* @param dir
*/
TestItSDK.prototype.mkdir = function (dir) {
return __awaiter(this, void 0, void 0, function () {
var fs;
return __generator(this, function (_a) {
fs = require("fs");
fs.mkdir(dir, function (err) {
if (err) {
logger.debug(err);
return;
}
});
return [2 /*return*/];
});
});
};
/**
* Filter string with special character.
* @param str
*/
TestItSDK.prototype.stringFilter = function (str) {
return __awaiter(this, void 0, void 0, function () {
var newLine, quota;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(str != null)) return [3 /*break*/, 3];
newLine = "\n[\n]*";
quota = '"';
return [4 /*yield*/, str
.replace(new RegExp("<.*?>", "g"), "")
.replace(new RegExp(newLine, "g"), " ")
.replace(new RegExp(quota, "g"), "'")];
case 1:
str = _a.sent(); // RegExp = "\<.*?\>" all block
str = str.trim();
str = unescape(str); //url
return [4 /*yield*/, this.htmlDecodeByRegExp(str)];
case 2:
// str = decodeURIComponent(str);//uri
str = _a.sent(); //html tags
_a.label = 3;
case 3: return [2 /*return*/, str];
}
});
});
};
TestItSDK.prototype.htmlDecodeByRegExp = function (str) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (str.length == 0)
return [2 /*return*/, ""];
return [4 /*yield*/, str
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/ /g, " ")
.replace(/'/g, "'")
.replace(/"/g, '"')];
case 1:
str = _a.sent();
return [2 /*return*/, str];
}
});
});
};
return TestItSDK;
}());
exports.default = TestItSDK;
// // /**
// // * Test Modules
// // */
// async function testitDemo() {
// /* Login require information */
// const TESTIT_ENDPOINT = "https://testit.ringcentral.com";
// const testItSdk = new TestItSDK(TESTIT_ENDPOINT);
// // const username: string = process.env.USERNAME;
// // const password: string = process.env.PASSWORD;
// // await testItSdk.searchCasesBySearchOptions(searchOption);
// /* 1、Test login function. */
// // logger.debug(USERNAME);
// // logger.debug(USERNAME);
// //config my debug
// const log4js = require('log4js');
// log4js.configure({
// appenders: { console: { type: 'console' } },
// categories: { default: { appenders: ['console'], level: 'debug' } }
// });
// await testItSdk.login(USERNAME, PASSWORD);
// const searchOption: SearchOptions = {
// projectName: "Jupiter",
// subtype:["E2E"],
// dateCreated :["2021-01-01","2021-01-10"],
// dateUpdated :["2021-01-01","2021-01-10"]
// };
// // var output = Mustache.render("{{title}} sßpends {{calc}}", view);
// // logger.debug(output);
// const path = "../templateFiles/";
// const templatePath = "../templates/JupiterTemplate.ts.txt";
// // await testItSdk.searchCasesBySearchOptions(searchOption);
// // await testItSdk.storeFileByCaseKey("JPT-5660",path,templatePath);
// // await testItSdk.searchCasesBySearchOptions(searchOption);
// await testItSdk.storeFilesBySearchOptions(searchOption, path, templatePath);
// }
// testitDemo();