@codefresh-io/cf-git-providers
Version:
An NPM module/CLI for interacting with various git providers
55 lines • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.execRetryTestWithMock = exports.generateMocksForRetryTests = exports.testRetryConfiguration = void 0;
const index_1 = require("../index");
// eslint-disable-next-line @typescript-eslint/no-var-requires
const request = require('request-promise');
function testRetryConfiguration(retryCount, statusCode) {
return [
{
retryCount: retryCount,
delayInMs: 10,
backoffFactor: 2,
statusCode: statusCode,
maxDelayMS: 200,
}
];
}
exports.testRetryConfiguration = testRetryConfiguration;
function generateMocksForRetryTests(retryCount, reqMock, successAfter, reqSuccessMock, preRunMocks) {
request.mockReset();
if (preRunMocks) {
for (let i = 0; i < preRunMocks.length; i++) {
request.mockImplementationOnce(preRunMocks[i]);
}
}
for (let i = 0; i < retryCount + 1; i++) {
if (i === successAfter - 1) {
request.mockImplementationOnce(reqSuccessMock);
break;
}
else {
request.mockImplementationOnce(reqMock);
}
}
}
exports.generateMocksForRetryTests = generateMocksForRetryTests;
async function execRetryTestWithMock(client, retries, retryErrorCode, reqMock, successAttempt, successMock, responseErrorCode, preMocks) {
const retryConfig = testRetryConfiguration(retries, retryErrorCode);
generateMocksForRetryTests(retries, reqMock, successAttempt, successMock, preMocks);
let numOfExpectedExecutions;
if (responseErrorCode > 0 && responseErrorCode !== retryErrorCode) {
numOfExpectedExecutions = 1;
}
else if (successAttempt > 0) {
numOfExpectedExecutions = successAttempt;
}
else {
numOfExpectedExecutions = retryConfig[0].retryCount + 1;
}
const opts = { owner: '~joe', repo: 'some-repo', ref: 'master', path: 'some-path', retryConfig: retryConfig };
const result = await (0, index_1.to)(client.fetchRawFile(opts));
return [result, opts, numOfExpectedExecutions];
}
exports.execRetryTestWithMock = execRetryTestWithMock;
//# sourceMappingURL=retry-test-helper.js.map