@elastic.io/maester-client
Version:
The official object-storage client
66 lines (65 loc) • 2.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable no-unused-expressions */
const nock_1 = __importDefault(require("nock"));
const chai_1 = require("chai");
const get_stream_1 = __importDefault(require("get-stream"));
const StorageClient_1 = require("../src/StorageClient");
const helpers_1 = require("./helpers");
const interfaces_1 = require("../src/interfaces");
describe('Storage Client', () => {
const config = {
uri: 'https://ma.es.ter',
jwtSecret: 'jwt',
userAgent: 'userAgent'
};
const storageClient = new StorageClient_1.StorageClient(config);
const data = { test: 'test' };
const responseData = {
contentLength: 'meta.contentLength',
contentType: 'meta.contentType',
createdAt: 'meta.createdAt',
md5: 'meta.md5Hash',
objectId: 'obj.id',
metadata: 'meta.userMetadata',
};
it(`should fail after ${interfaces_1.RETRIES_COUNT.defaultValue} retries`, async () => {
const storageClientCalls = (0, nock_1.default)(config.uri)
.matchHeader('authorization', `Bearer ${config.jwtSecret}`)
.get('/objects/1')
.times(3)
.reply(520);
await (0, chai_1.expect)(storageClient.get('1', {})).to.be.rejectedWith('Server error during request');
(0, chai_1.expect)(storageClientCalls.isDone()).to.be.true;
});
it('should retry get request 3 times on errors', async () => {
const storageClientCalls = (0, nock_1.default)(config.uri)
.matchHeader('authorization', `Bearer ${config.jwtSecret}`)
.get('/objects/1')
.reply(500)
.get('/objects/1')
.replyWithError({ code: 'ECONNRESET' })
.get('/objects/1')
.reply(200, (0, helpers_1.streamFromObject)(data));
const { data: stream } = await storageClient.get('1', {});
const response = await (0, get_stream_1.default)(stream);
(0, chai_1.expect)(JSON.parse(response)).to.be.deep.equal(data);
(0, chai_1.expect)(storageClientCalls.isDone()).to.be.true;
});
it('should retry post request 3 times on errors', async () => {
const storageClientCalls = (0, nock_1.default)(config.uri)
.matchHeader('authorization', `Bearer ${config.jwtSecret}`)
.post('/objects')
.replyWithError({ code: 'ECONNREFUSED' })
.post('/objects')
.reply(505)
.post('/objects')
.reply(200, responseData);
const response = await storageClient.post(helpers_1.streamFromObject.bind({}, data));
(0, chai_1.expect)(response.data).to.be.deep.equal(responseData);
(0, chai_1.expect)(storageClientCalls.isDone()).to.be.true;
});
});