@looker/sdk-node
Version:
Looker SDK Runtime for Node Library
129 lines (128 loc) • 6.12 kB
JavaScript
;
var _nodeTest = require("node:test");
var _expect = require("expect");
var _sdkRtl = require("@looker/sdk-rtl");
var _nodeTransport = require("./nodeTransport");
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
(0, _nodeTest.describe)('NodeTransport', () => {
var hostname = 'https://looker.sdk';
var settings = {
base_url: hostname
};
var xp = new _nodeTransport.NodeTransport(settings);
var fullPath = 'https://github.com/looker-open-source/sdk-codegen';
var badPath = fullPath + '_bogus';
(0, _nodeTest.it)('raw request retrieves fully qualified url', _asyncToGenerator(function* () {
var response = yield xp.rawRequest('GET', fullPath);
(0, _expect.expect)(response).toBeDefined();
(0, _expect.expect)(response.ok).toEqual(true);
(0, _expect.expect)(response.method).toEqual('GET');
(0, _expect.expect)(response.statusCode).toEqual(200);
(0, _expect.expect)(response.statusMessage).toEqual('OK');
(0, _expect.expect)(response.contentType).toContain('text/html');
(0, _expect.expect)(response.body).toBeDefined();
var html = yield response.body;
(0, _expect.expect)(html).toContain('One SDK to rule them all, and in the codegen bind them');
}));
(0, _nodeTest.describe)('transport errors', () => {
(0, _nodeTest.it)('gracefully handles transport errors', _asyncToGenerator(function* () {
var response = yield xp.rawRequest('GET', badPath);
var errorMessage = 'Not Found';
(0, _expect.expect)(response).toBeDefined();
(0, _expect.expect)(response.ok).toEqual(false);
(0, _expect.expect)(response.method).toEqual('GET');
(0, _expect.expect)(response.statusCode).toEqual(404);
(0, _expect.expect)(response.body).toBeDefined();
(0, _expect.expect)(response.statusMessage).toEqual(errorMessage);
}));
});
(0, _nodeTest.it)('retrieves fully qualified url', _asyncToGenerator(function* () {
var response = yield xp.request('GET', fullPath);
(0, _expect.expect)(response).toBeDefined();
(0, _expect.expect)(response.ok).toEqual(true);
if (response.ok) {
var content = response.value;
(0, _expect.expect)(content).toContain('One SDK to rule them all, and in the codegen bind them');
}
}));
(0, _nodeTest.describe)('ok check', () => {
var raw = {
method: 'GET',
contentType: 'application/json',
headers: {},
url: 'bogus',
ok: true,
statusCode: _sdkRtl.StatusCode.OK,
statusMessage: 'Mocked success',
body: 'body',
requestStarted: 1000,
responseCompleted: 2000
};
(0, _nodeTest.it)('ok is ok', () => {
(0, _expect.expect)(xp.ok(raw)).toEqual(true);
});
(0, _nodeTest.it)('All 2xx responses are ok', () => {
raw.statusCode = _sdkRtl.StatusCode.IMUsed;
(0, _expect.expect)(xp.ok(raw)).toEqual(true);
});
(0, _nodeTest.it)('Non-2xx responses are not ok', () => {
raw.statusCode = 422;
(0, _expect.expect)(xp.ok(raw)).toEqual(false);
});
});
(0, _nodeTest.it)('does a standard get', _asyncToGenerator(function* () {
var xp = new _nodeTransport.NodeTransport({});
var actual = yield xp.rawRequest('GET', 'https://example.com');
(0, _expect.expect)(actual).toBeDefined();
}));
(0, _nodeTest.it)('just deserializes JSON into an object', _asyncToGenerator(function* () {
var xp = new _nodeTransport.NodeTransport({});
var resp = {
headers: {},
url: '',
ok: true,
contentType: 'application/json',
statusCode: 200,
statusMessage: 'mock',
method: 'GET',
body: "\n{\n \"string1\": 1,\n \"num1\": 1,\n \"string2\": \"2\",\n \"num2\": \"2\",\n \"string3\": \"3\",\n \"num3\": 3,\n \"string4\": \"4\",\n \"num4\": 4\n}\n",
requestStarted: 1000,
responseCompleted: 2000
};
var untyped = yield (0, _sdkRtl.sdkOk)(xp.parseResponse(resp));
(0, _expect.expect)(untyped.string1).toBe(1);
(0, _expect.expect)(untyped.num1).toBe(1);
(0, _expect.expect)(untyped.string2).toBe('2');
(0, _expect.expect)(untyped.num2).toBe('2');
(0, _expect.expect)(untyped.string3).toBe('3');
(0, _expect.expect)(untyped.num3).toBe(3);
(0, _expect.expect)(untyped.string4).toBe('4');
(0, _expect.expect)(untyped.num4).toBe(4);
var typed = yield (0, _sdkRtl.sdkOk)(xp.parseResponse(resp));
(0, _expect.expect)(typed.string1).toBe(1);
(0, _expect.expect)(typed.num1).toBe(1);
(0, _expect.expect)(typed.string2).toBe('2');
(0, _expect.expect)(typed.num2).toBe('2');
(0, _expect.expect)(typed.string3).toBe('3');
(0, _expect.expect)(typed.num3).toBe(3);
(0, _expect.expect)(typed.string4).toBe('4');
(0, _expect.expect)(typed.num4).toBe(4);
}));
(0, _nodeTest.describe)('NodeCryptoHash', () => {
(0, _nodeTest.it)('secureRandom', () => {
var hasher = new _nodeTransport.NodeCryptoHash();
var rand1 = hasher.secureRandom(5);
(0, _expect.expect)(rand1.length).toEqual(10);
var rand2 = hasher.secureRandom(32);
(0, _expect.expect)(rand2.length).toEqual(64);
});
(0, _nodeTest.it)('sha256hash', _asyncToGenerator(function* () {
var hasher = new _nodeTransport.NodeCryptoHash();
var message = 'The quick brown fox jumped over the lazy dog.';
var hash = yield hasher.sha256Hash(message);
(0, _expect.expect)(hash).toEqual('aLEoK5HeLAVMNmKcuN1EfxLwltPjxYeXjcIkhERjNIM=');
}));
});
});
//# sourceMappingURL=nodeTransport.apispec.js.map