From 68f2361afed3e73905e01b830a4261233dae22d1 Mon Sep 17 00:00:00 2001 From: m5r Date: Mon, 30 Oct 2023 22:05:08 +0100 Subject: [PATCH] halfway there --- src/lib/api.js | 2 +- test/fn/create-users.spec.js | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/lib/api.js b/src/lib/api.js index 24b5b51b3..e7e54af55 100644 --- a/src/lib/api.js +++ b/src/lib/api.js @@ -8,7 +8,7 @@ const url = require('url'); const cache = new Map(); -const _request = (method) => (...args) => retry(() => rpn[method](...args), { retries: 0 }); +const _request = (method) => (...args) => retry(() => rpn[method](...args), { retries: 5, randomize: false, factor: 1.5 }); const request = { get: _request('get'), post: _request('post'), diff --git a/test/fn/create-users.spec.js b/test/fn/create-users.spec.js index bb1601526..003ebd74a 100644 --- a/test/fn/create-users.spec.js +++ b/test/fn/create-users.spec.js @@ -12,7 +12,9 @@ const userPrompt = rewire('../../src/lib/user-prompt'); const readLine = require('readline-sync'); const mockTestDir = testDir => sinon.stub(environment, 'pathToProject').get(() => testDir); -describe('create-users', () => { +describe('create-users', function () { + this.timeout(15000); + beforeEach(() => { createUsers.__set__('userPrompt', userPrompt); sinon.stub(environment, 'isArchiveMode').get(() => false); @@ -86,7 +88,15 @@ describe('create-users', () => { it('should create user with existent place and not implemented user-info endpoint', () => { mockTestDir(`data/create-users/existing-place`); - api.giveResponses({ status: 404, body: { code: 404, error: 'not_found' } }, { body: {} }); + api.giveResponses( + { status: 404, body: { code: 404, error: 'not_found' } }, + { status: 404, body: { code: 404, error: 'not_found' } }, + { status: 404, body: { code: 404, error: 'not_found' } }, + { status: 404, body: { code: 404, error: 'not_found' } }, + { status: 404, body: { code: 404, error: 'not_found' } }, + { status: 404, body: { code: 404, error: 'not_found' } }, + { body: {} }, + ); const todd = { username: 'todd', password: 'Secret_1', @@ -108,6 +118,11 @@ describe('create-users', () => { .then(() => /* when */ createUsers.execute()) .then(() => { assert.deepEqual(api.requestLog(), [ + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, { method: 'POST', url: '/api/v1/users', body: todd }, ]); @@ -220,7 +235,14 @@ describe('create-users', () => { }, }; - api.giveResponses({ status: 500, body: { code: 500, error: 'boom' } } ); + api.giveResponses( + { status: 500, body: { code: 500, error: 'boom' } }, + { status: 500, body: { code: 500, error: 'boom' } }, + { status: 500, body: { code: 500, error: 'boom' } }, + { status: 500, body: { code: 500, error: 'boom' } }, + { status: 500, body: { code: 500, error: 'boom' } }, + { status: 500, body: { code: 500, error: 'boom' } }, + ); const qs = { facility_id: todd.place, role: JSON.stringify(todd.roles), @@ -232,6 +254,11 @@ describe('create-users', () => { assert.deepEqual(err.error, { code: 500, error: 'boom' }); assert.deepEqual(api.requestLog(), [ { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, + { method: 'GET', url: '/api/v1/users-info?' + querystring.stringify(qs), body: {} }, ]); }); });