From e0747c4c6ffd5f8fd5e3695c6ce5453106638d03 Mon Sep 17 00:00:00 2001 From: Mykhailo Dolbin <3534827+mdolbin@users.noreply.github.com> Date: Sun, 31 Oct 2021 03:20:33 +0200 Subject: [PATCH] Fetch all pages of get_cases API --- dist/testrail.js | 53 +++++++++++++++++++++++++++---------------- dist/testrail.js.map | 2 +- src/lib/testrail.ts | 54 +++++++++++++++++++++++++++----------------- 3 files changed, 67 insertions(+), 42 deletions(-) diff --git a/dist/testrail.js b/dist/testrail.js index d22239fe..b391a1fb 100644 --- a/dist/testrail.js +++ b/dist/testrail.js @@ -55,12 +55,13 @@ var path = require('path'); var FormData = require('form-data'); var TestRailLogger = require('./testrail.logger'); var TestRailCache = require('./testrail.cache'); +var apiVersionPath = '/api/v2'; var TestRail = /** @class */ (function () { function TestRail(options) { this.options = options; this.includeAll = true; this.caseIds = []; - this.base = options.host + "/index.php?/api/v2"; + this.base = options.host + "/index.php?"; this.runId; } /** @@ -84,7 +85,8 @@ var TestRail = /** @class */ (function () { return result; }; TestRail.prototype.getCases = function (suiteId) { - var url = this.base + "/get_cases/" + this.options.projectId + "&suite_id=" + suiteId; + var _this = this; + var url = "" + this.base + apiVersionPath + "/get_cases/" + this.options.projectId + "&suite_id=" + suiteId; if (this.options.groupId) { url += "§ion_id=" + this.options.groupId; } @@ -94,19 +96,30 @@ var TestRail = /** @class */ (function () { if (this.options.typeId) { url += "&type_id=" + this.options.typeId; } - return this.makeSync(axios({ - method: 'get', - url: url, - headers: { 'Content-Type': 'application/json' }, - auth: { - username: this.options.username, - password: this.options.password - } - }) - .then(function (response) { - return response.data.cases.map(function (item) { return item.id; }); - }) - .catch(function (error) { return console.error(error); })); + var cases = []; + var previousUrl = null; + while (url != previousUrl) { + previousUrl = url; + this.makeSync(axios({ + method: 'get', + url: url, + headers: { 'Content-Type': 'application/json' }, + auth: { + username: this.options.username, + password: this.options.password + } + }) + .then(function (response) { + cases = cases.concat(response.data.cases.map(function (item) { return item.id; })); + if (response.data._links.next) { + url = "" + _this.base + apiVersionPath + response.data._links.next; + } + }) + .catch(function (error) { + console.error(error); + })); + } + return cases; }; TestRail.prototype.createRun = function (name, description, suiteId) { var _this = this; @@ -116,7 +129,7 @@ var TestRail = /** @class */ (function () { } this.makeSync(axios({ method: 'post', - url: this.base + "/add_run/" + this.options.projectId, + url: "" + this.base + apiVersionPath + "/add_run/" + this.options.projectId, headers: { 'Content-Type': 'application/json' }, auth: { username: this.options.username, @@ -141,7 +154,7 @@ var TestRail = /** @class */ (function () { this.runId = TestRailCache.retrieve('runId'); this.makeSync(axios({ method: 'post', - url: this.base + "/delete_run/" + this.runId, + url: "" + this.base + apiVersionPath + "/delete_run/" + this.runId, headers: { 'Content-Type': 'application/json' }, auth: { username: this.options.username, @@ -153,7 +166,7 @@ var TestRail = /** @class */ (function () { this.runId = TestRailCache.retrieve('runId'); return this.makeSync(axios({ method: 'post', - url: this.base + "/add_results_for_cases/" + this.runId, + url: "" + this.base + apiVersionPath + "/add_results_for_cases/" + this.runId, headers: { 'Content-Type': 'application/json' }, auth: { username: this.options.username, @@ -171,7 +184,7 @@ var TestRail = /** @class */ (function () { form.append('attachment', fs.createReadStream(path)); this.makeSync(axios({ method: 'post', - url: this.base + "/add_attachment_to_result/" + resultId, + url: "" + this.base + apiVersionPath + "/add_attachment_to_result/" + resultId, headers: __assign({}, form.getHeaders()), auth: { username: this.options.username, @@ -205,7 +218,7 @@ var TestRail = /** @class */ (function () { this.runId = TestRailCache.retrieve('runId'); this.makeSync(axios({ method: 'post', - url: this.base + "/close_run/" + this.runId, + url: "" + this.base + apiVersionPath + "/close_run/" + this.runId, headers: { 'Content-Type': 'application/json' }, auth: { username: this.options.username, diff --git a/dist/testrail.js.map b/dist/testrail.js.map index b621cdb3..2e643a77 100644 --- a/dist/testrail.js.map +++ b/dist/testrail.js.map @@ -1 +1 @@ -{"version":3,"file":"testrail.js","sourceRoot":"","sources":["../src/lib/testrail.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"testrail.js","sourceRoot":"","sources":["../src/lib/testrail.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/lib/testrail.ts b/src/lib/testrail.ts index f0b7f41c..f68775b8 100644 --- a/src/lib/testrail.ts +++ b/src/lib/testrail.ts @@ -5,8 +5,9 @@ const path = require('path'); const FormData = require('form-data'); const TestRailLogger = require('./testrail.logger'); const TestRailCache = require('./testrail.cache'); -import { TestRailOptions, TestRailResult } from './testrail.interface'; +import {TestRailOptions, TestRailResult} from './testrail.interface'; +const apiVersionPath = '/api/v2' export class TestRail { private base: String; private runId: Number; @@ -15,7 +16,7 @@ export class TestRail { private retries: number; constructor(private options: TestRailOptions) { - this.base = `${options.host}/index.php?/api/v2`; + this.base = `${options.host}/index.php?`; this.runId; } @@ -35,7 +36,7 @@ export class TestRail { } public getCases (suiteId: number) { - let url = `${this.base}/get_cases/${this.options.projectId}&suite_id=${suiteId}` + let url = `${this.base}${apiVersionPath}/get_cases/${this.options.projectId}&suite_id=${suiteId}` if (this.options.groupId) { url += `§ion_id=${this.options.groupId}` } @@ -45,21 +46,32 @@ export class TestRail { if (this.options.typeId) { url += `&type_id=${this.options.typeId}` } - return this.makeSync( - axios({ - method:'get', - url: url, - headers: { 'Content-Type': 'application/json' }, - auth: { + let cases = [] + let previousUrl = null + while (url != previousUrl) { + previousUrl = url; + this.makeSync( + axios({ + method: 'get', + url: url, + headers: {'Content-Type': 'application/json'}, + auth: { username: this.options.username, password: this.options.password - } - }) - .then(response => { - return response.data.cases.map(item =>item.id) - }) - .catch(error => console.error(error)) - ) + } + }) + .then(response => { + cases = cases.concat(response.data.cases.map(item => item.id)) + if (response.data._links.next) { + url = `${this.base}${apiVersionPath}${response.data._links.next}` + } + }) + .catch(error => { + console.error(error) + }) + ) + } + return cases } public createRun (name: string, description: string, suiteId: number) { @@ -70,7 +82,7 @@ export class TestRail { this.makeSync( axios({ method: 'post', - url: `${this.base}/add_run/${this.options.projectId}`, + url: `${this.base}${apiVersionPath}/add_run/${this.options.projectId}`, headers: { 'Content-Type': 'application/json' }, auth: { username: this.options.username, @@ -98,7 +110,7 @@ export class TestRail { this.makeSync( axios({ method: 'post', - url: `${this.base}/delete_run/${this.runId}`, + url: `${this.base}${apiVersionPath}/delete_run/${this.runId}`, headers: { 'Content-Type': 'application/json' }, auth: { username: this.options.username, @@ -113,7 +125,7 @@ export class TestRail { return this.makeSync( axios({ method: 'post', - url: `${this.base}/add_results_for_cases/${this.runId}`, + url: `${this.base}${apiVersionPath}/add_results_for_cases/${this.runId}`, headers: { 'Content-Type': 'application/json' }, auth: { username: this.options.username, @@ -135,7 +147,7 @@ export class TestRail { this.makeSync( axios({ method: 'post', - url: `${this.base}/add_attachment_to_result/${resultId}`, + url: `${this.base}${apiVersionPath}/add_attachment_to_result/${resultId}`, headers: { ...form.getHeaders() }, auth: { username: this.options.username, @@ -172,7 +184,7 @@ export class TestRail { this.makeSync( axios({ method: 'post', - url: `${this.base}/close_run/${this.runId}`, + url: `${this.base}${apiVersionPath}/close_run/${this.runId}`, headers: { 'Content-Type': 'application/json' }, auth: { username: this.options.username,