UNPKG

@looker/sdk-node

Version:
129 lines (128 loc) 6.12 kB
"use strict"; 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