@elastic.io/maester-client
Version:
The official object-storage client
152 lines (151 loc) • 8.86 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = __importStar(require("chai"));
const is_uuid_1 = require("is-uuid");
const src_1 = require("../src");
const common_1 = require("./common");
chai_1.default.use(require('chai-as-promised'));
describe('ObjectStorageWrapper', () => {
const objectStorageWrapper = new src_1.ObjectStorageWrapper((0, common_1.getContext)(), 'userAgent');
const genHeaders = (amount) => {
const resultHeaders = [];
for (let i = 0; i < amount; i++) {
resultHeaders.push({ key: `key${i}`, value: `value${i}` });
}
return resultHeaders;
};
it('should createObject & getObjectHeaders', async () => {
const objectId = await objectStorageWrapper.createObject({ a: 5 }, genHeaders(2), genHeaders(3));
(0, chai_1.expect)((0, is_uuid_1.anyNonNil)(objectId)).to.be.equal(true);
const object = await objectStorageWrapper.lookupObjectById(objectId);
(0, chai_1.expect)(object).to.be.deep.equal({ a: 5 });
const headers = await objectStorageWrapper.getObjectHeaders(objectId);
(0, chai_1.expect)(headers['content-type']).to.be.equal('application/json');
(0, chai_1.expect)(headers['x-meta-key0']).to.be.equal('value0');
(0, chai_1.expect)(headers['x-meta-key1']).to.be.equal('value1');
(0, chai_1.expect)(headers['x-meta-key2']).to.be.equal('value2');
(0, chai_1.expect)(headers['x-query-key0']).to.be.equal('value0');
(0, chai_1.expect)(headers['x-query-key1']).to.be.equal('value1');
});
it('should createObject (number)', async () => {
const objectId = await objectStorageWrapper.createObject(8);
(0, chai_1.expect)((0, is_uuid_1.anyNonNil)(objectId)).to.be.equal(true);
const object = await objectStorageWrapper.lookupObjectById(objectId);
(0, chai_1.expect)(object).to.be.deep.equal(8);
const headers = await objectStorageWrapper.getObjectHeaders(objectId);
(0, chai_1.expect)(headers['content-type']).to.be.equal('application/json');
});
it('should createObject (array)', async () => {
const objectId = await objectStorageWrapper.createObject([1, 'dva', null]);
(0, chai_1.expect)((0, is_uuid_1.anyNonNil)(objectId)).to.be.equal(true);
const object = await objectStorageWrapper.lookupObjectById(objectId);
(0, chai_1.expect)(object).to.be.deep.equal([1, 'dva', null]);
const headers = await objectStorageWrapper.getObjectHeaders(objectId);
(0, chai_1.expect)(headers['content-type']).to.be.equal('application/json');
});
it('should createObject (string)', async () => {
const objectId = await objectStorageWrapper.createObject('[1, dva, null]');
(0, chai_1.expect)((0, is_uuid_1.anyNonNil)(objectId)).to.be.equal(true);
const object = await objectStorageWrapper.lookupObjectById(objectId);
(0, chai_1.expect)(object).to.be.deep.equal('[1, dva, null]');
const headers = await objectStorageWrapper.getObjectHeaders(objectId);
(0, chai_1.expect)(headers['content-type']).to.be.equal('application/json');
});
describe('lookupObjectById', () => {
it('should lookupObjectById', async () => {
const objectId = await objectStorageWrapper.createObject({ a: 2 });
(0, chai_1.expect)((0, is_uuid_1.anyNonNil)(objectId)).to.be.equal(true);
const object = await objectStorageWrapper.lookupObjectById(objectId);
(0, chai_1.expect)(object).to.be.deep.equal({ a: 2 });
});
it('should throw 404', async () => {
await (0, chai_1.expect)(objectStorageWrapper.lookupObjectById('fa208d86-6b81-408e-87f3-4b6e90be7db9')).to.be.rejectedWith('Request failed with status code 404');
});
it('should throw 400', async () => {
await (0, chai_1.expect)(objectStorageWrapper.lookupObjectById('invalid-id')).to.be.rejectedWith('Request failed with status code 400');
});
});
describe('deleteObjectById', () => {
it('should deleteObjectById', async () => {
const objectId = await objectStorageWrapper.createObject({ a: 2 });
(0, chai_1.expect)((0, is_uuid_1.anyNonNil)(objectId)).to.be.equal(true);
const { data } = await objectStorageWrapper.deleteObjectById(objectId);
(0, chai_1.expect)(data).to.be.equal('');
});
it('should throw 404', async () => {
await (0, chai_1.expect)(objectStorageWrapper.deleteObjectById('fa208d86-6b81-408e-87f3-4b6e90be7db9')).to.be.rejectedWith('Request failed with status code 404');
});
it('should throw 400', async () => {
await (0, chai_1.expect)(objectStorageWrapper.deleteObjectById('invalid-id')).to.be.rejectedWith('Request failed with status code 400');
});
});
describe('lookupObjectsByQueryParameters & deleteObjectsByQueryParameters', () => {
it('should lookupObjectsByQueryParameters & deleteObjectsByQueryParameters', async () => {
await objectStorageWrapper.createObject({ a: 2 }, [{ key: 'ewq', value: '11' }]);
await objectStorageWrapper.createObject({ a: 2 }, [{ key: 'ewq', value: '11' }]);
await objectStorageWrapper.createObject({ a: 2 }, [], [{ key: 'ewq', value: '11' }]);
const resultBeforeDelete = await objectStorageWrapper.lookupObjectsByQueryParameters([{ key: 'ewq', value: '11' }]);
(0, chai_1.expect)(resultBeforeDelete.length).to.be.equal(2);
await objectStorageWrapper.deleteObjectsByQueryParameters([{ key: 'ewq', value: '11' }]);
const resultAfterDelete = await objectStorageWrapper.lookupObjectsByQueryParameters([{ key: 'ewq', value: '11' }]);
(0, chai_1.expect)(resultAfterDelete.length).to.be.equal(0);
});
});
describe('updateObjectById', () => {
it('should updateObjectById', async () => {
const objectId = await objectStorageWrapper.createObject({ a: 2 });
(0, chai_1.expect)((0, is_uuid_1.anyNonNil)(objectId)).to.be.equal(true);
const updated = await objectStorageWrapper.updateObjectById(objectId, { a: 3 });
(0, chai_1.expect)(updated.objectId).to.be.equal(objectId);
const object = await objectStorageWrapper.lookupObjectById(objectId);
(0, chai_1.expect)(object).to.be.deep.equal({ a: 3 });
});
it('should updateObjectById (string)', async () => {
const objectId = await objectStorageWrapper.createObject({ a: 2 });
(0, chai_1.expect)((0, is_uuid_1.anyNonNil)(objectId)).to.be.equal(true);
const updated = await objectStorageWrapper.updateObjectById(objectId, 'hey');
(0, chai_1.expect)(updated.objectId).to.be.equal(objectId);
const object = await objectStorageWrapper.lookupObjectById(objectId);
(0, chai_1.expect)(object).to.be.deep.equal('hey');
});
it('should throw 404', async () => {
await (0, chai_1.expect)(objectStorageWrapper.updateObjectById('fa208d86-6b81-408e-87f3-4b6e90be7db9', {})).to.be.rejectedWith('Request failed with status code 404');
});
it('should throw 400', async () => {
await (0, chai_1.expect)(objectStorageWrapper.updateObjectById('invalid-id', {})).to.be.rejectedWith('Request failed with status code 400');
});
});
});