certd/packages/core/acme-client/test/retry.js

60 lines
1.5 KiB
JavaScript

const { assert } = require('chai');
const Promise = require('bluebird');
const util = require('../src/util');
let count = 0;
async function apiRequest() {
count += 1;
console.log(new Date(), 'retry count:', count);
await Promise.delay(2000);
return count;
}
async function waitForValidStatus() {
const verifyFn = async (abort) => {
const resp = await apiRequest();
/* Verify status */
console.log(new Date(), 'Item has status', resp);
if (count < 3) {
abort();
throw new Error(`${new Date()}error`, count);
}
console.log(new Date(), 'success');
return 'success';
// if (resp.data.status === 'invalid') {
// abort();
// throw new Error(util.formatResponseError(resp));
// }
// else if (resp.data.status === 'pending') {
// throw new Error('Operation is pending');
// }
// else if (resp.data.status === 'valid') {
// return resp.data;
// }
//
// throw new Error(`Unexpected item status: ${resp.data.status}`);
};
console.log(new Date(), 'Waiting for valid status from', this.backoffOpts);
return util.retry(verifyFn, this.backoffOpts);
}
/**
*/
describe('util', () => {
it('retry', async function() {
this.timeout(100000);
try {
await waitForValidStatus();
}
catch (e) {
console.error('1111', e);
}
// await Promise.delay(100000);
});
});