@elastic.io/component-commons-library
Version:
Library for most common component development cases
115 lines (114 loc) • 4.5 kB
JavaScript
;
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 (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = __importDefault(require("chai"));
const sinon_1 = __importDefault(require("sinon"));
const src_1 = require("../../src");
const flow = __importStar(require("../helpers/flow.json"));
const { expect } = chai_1.default;
let emitter;
const url = 'https://example.com';
const email = process.env.ELASTICIO_API_USERNAME || 'userName';
const apiKey = process.env.ELASTICIO_API_KEY || 'dXNlck5hbWU6YXBpS2V5';
const resourceServerUrl = 'https://resourceServerUrl.com';
const successStatusCode = 200;
const notFoundStatusCode = 404;
let successBody;
let cfg;
let stub;
describe('PlatformApiRestClient', () => {
const user = 'user';
const pass = 'pass';
let client;
beforeEach(() => {
emitter = {
emit: sinon_1.default.spy(),
logger: src_1.Logger.getLogger(),
};
cfg = {
resourceServerUrl,
username: user,
password: pass,
url,
email,
apiKey,
};
client = new src_1.PlatformApiRestClient(emitter, cfg);
});
afterEach(() => {
sinon_1.default.restore();
});
it('Should succeed handle rest response', async () => {
const response = {
statusCode: successStatusCode,
body: flow,
};
successBody = flow;
stub = sinon_1.default.stub(client, 'handleRestResponse');
stub.withArgs(response).returns(successBody);
const result = await client.handleRestResponse(response);
expect(result).to.be.deep.equal(successBody);
});
it('Should fail handle rest response', async () => {
const response = {
statusCode: notFoundStatusCode,
body: {
errors: [{ message: 'Error in making request' }],
},
};
const body = {
errors: [{ message: 'Error in making request' }],
};
stub = sinon_1.default.stub(client, 'handleRestResponse');
stub.withArgs(response).returns(body);
try {
const result = await client.handleRestResponse(response);
if (result) {
throw new Error('Test case does not expect success response');
}
}
catch (e) {
expect(e.message).to.be.contains('Test case does not expect success response');
}
});
it('Should succeed make request with user-agent Headers', async () => {
successBody = flow;
stub = sinon_1.default.stub(src_1.NoAuthRestClient.prototype, 'makeRequest');
stub.returns(successBody);
const requestBody = { url: 'https://example.com', method: 'GET', headers: { 'Content-Type': 'application/json' } };
const platformClient = new src_1.PlatformApiRestClient(emitter, cfg, 'UnitTest/1.0', 'messageId');
const result = await platformClient.makeRequest(requestBody);
expect(result).to.be.deep.equal(successBody);
expect(stub.called).to.be.equal(true);
expect(stub.firstCall.args[0].headers).to.be.deep.equal({
'Content-Type': 'application/json',
'User-Agent': 'UnitTest/1.0 request/^2.88.2',
'x-request-id': 'f:undefined;s:undefined;m:messageId'
});
});
});