UNPKG

@bitblit/epsilon

Version:

Tiny adapter to simplify building API gateway Lambda APIS

100 lines 4.88 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const response_util_1 = require("./response-util"); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const built_in_filters_1 = require("../built-in/http/built-in-filters"); const epsilon_constants_1 = require("../epsilon-constants"); describe('#responseUtil', function () { it('should correctly combine a redirect url and query params', function () { const evt = { httpMethod: 'get', multiValueHeaders: {}, multiValueQueryStringParameters: {}, path: '/v0/meta/server', body: null, headers: null, isBase64Encoded: false, pathParameters: null, stageVariables: null, resource: null, queryStringParameters: { a: 'b', c: 'd', }, requestContext: { stage: 'v0', }, }; const out1 = response_util_1.ResponseUtil.redirect('myTarget?e=f', 301, evt.queryStringParameters); expect(out1).toBeTruthy(); expect(out1.headers).toBeTruthy(); expect(out1.headers.Location).toEqual('myTarget?e=f&a=b&c=d'); const out2 = response_util_1.ResponseUtil.redirect('myTarget', 301, evt.queryStringParameters); expect(out2).toBeTruthy(); expect(out2.headers).toBeTruthy(); expect(out2.headers.Location).toEqual('myTarget?a=b&c=d'); }); it('should leave already encoded stuff alone', () => __awaiter(this, void 0, void 0, function* () { const singlePixel = fs_1.default.readFileSync(path_1.default.join(__dirname, '../../test-data/test.png')).toString('base64'); const temp = { body: singlePixel, statusCode: 200, isBase64Encoded: true, headers: { 'content-type': 'application/zip', 'content-disposition': 'attachment; filename="adomni_bs_' + new Date().getTime() + '.zip"', }, }; const cast = response_util_1.ResponseUtil.coerceToProxyResult(temp); expect(cast.body).toEqual(temp.body); const gzip = yield response_util_1.ResponseUtil.applyGzipIfPossible('gzip', cast); expect(cast.body).toEqual(gzip.body); })); it('should add cors to proxy result MATCH 1', () => __awaiter(this, void 0, void 0, function* () { const evt = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, '../../test-data/sample-json/sample-request-1.json')).toString()); const proxy = {}; const fCtx = { event: evt, rawResult: null, context: null, result: proxy, routeAndParse: null, modelValidator: null, authenticators: null, }; yield built_in_filters_1.BuiltInFilters.addAllowReflectionCORSHeaders(fCtx); expect(proxy.headers).toBeTruthy(); expect(proxy.headers['Access-Control-Allow-Origin']).toEqual('http://localhost:4200'); expect(proxy.headers['Access-Control-Allow-Methods']).toEqual('GET'); expect(proxy.headers['Access-Control-Allow-Headers']).toEqual(epsilon_constants_1.EpsilonConstants.AUTH_HEADER_NAME.toLowerCase()); })); it('should add cors to proxy result MATCH 2', () => __awaiter(this, void 0, void 0, function* () { const evt = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, '../../test-data/sample-json/sample-request-2.json')).toString()); const proxy = {}; const fCtx = { event: evt, rawResult: null, context: null, result: proxy, routeAndParse: null, modelValidator: null, authenticators: null, }; yield built_in_filters_1.BuiltInFilters.addAllowReflectionCORSHeaders(fCtx); expect(proxy.headers).toBeTruthy(); })); }); //# sourceMappingURL=response-util.spec.js.map