@webda/core
Version:
Expose API with Lambda
77 lines • 3.15 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { suite, test } from "@testdeck/mocha";
import * as assert from "assert";
import { Readable } from "stream";
import { HttpContext } from "./httpcontext.js";
export class FakeReadable extends Readable {
_read() { }
}
let HttpContextTest = class HttpContextTest {
lowerCaseHeader() {
let ctx = new HttpContext("test.webda.io", "GET", "/test", "http", 80, {
"X-Test": "weBda",
other: ["head1", "head2"],
cookie: ["", ""]
});
assert.strictEqual(ctx.getHeader("X-Test"), "weBda");
assert.strictEqual(ctx.getHeader("X-Test"), ctx.getHeader("x-test"));
assert.strictEqual(ctx.getPort(), "");
assert.strictEqual(ctx.getUniqueHeader("other"), "head2");
}
async stream() {
let ctx = new HttpContext("test.webda.io", "GET", "/test", "http", 80, {
"X-Test": "weBda"
});
ctx.setBody("Test");
// Next line is just for cov
ctx.setClientIp("127.0.0.1").getClientIp();
let stream = ctx.getRawStream();
ctx.setBody(stream);
ctx.getRawStream();
assert.strictEqual(await ctx.getRawBodyAsString(), "Test");
// @ts-ignore
ctx.getHeaders()["content-type"] = "application/json";
assert.strictEqual(await ctx.getRawBodyAsString(), "Test");
// @ts-ignore
ctx.getHeaders()["content-type"] = "application/json; charset=iso-8859-1";
await assert.rejects(() => ctx.getRawBodyAsString(), /Only UTF-8 is currently managed/);
}
async oversize() {
let ctx = new HttpContext("test.webda.io", "GET", "/test", "http", 80, {
"X-Test": "weBda"
});
ctx.setBody("Test".repeat(1024));
let stream = ctx.getRawStream();
ctx.setBody(stream);
await assert.rejects(() => ctx.getRawBody(128), /Request oversized/);
}
async timeout() {
let ctx = new HttpContext("test.webda.io", "GET", "/test", "http", 80, {
"X-Test": "weBda"
});
let str = new FakeReadable();
ctx.setBody(str);
await assert.rejects(() => ctx.getRawBody(undefined, 100), /Request timeout/);
}
};
__decorate([
test
], HttpContextTest.prototype, "lowerCaseHeader", null);
__decorate([
test
], HttpContextTest.prototype, "stream", null);
__decorate([
test
], HttpContextTest.prototype, "oversize", null);
__decorate([
test
], HttpContextTest.prototype, "timeout", null);
HttpContextTest = __decorate([
suite
], HttpContextTest);
//# sourceMappingURL=httpcontext.spec.js.map