@tsed/platform-test-sdk
Version:
Package to test platform adapter integration with Ts.ED
143 lines (142 loc) • 5.59 kB
JavaScript
import { __decorate, __metadata, __param } from "tslib";
import { Controller } from "@tsed/di";
import { PlatformTest } from "@tsed/platform-http/testing";
import { Context } from "@tsed/platform-params";
import { Get, Location, Redirect } from "@tsed/schema";
import SuperTest from "supertest";
import { afterAll, beforeAll, expect, it } from "vitest";
let RedirectCtrl = class RedirectCtrl {
testScenario1() {
return "Hello";
}
testScenario2() {
return "Hello";
}
testScenario3(ctx) {
ctx.response.redirect(302, "/another/path");
return "Hello";
}
testScenario4(ctx) {
return "Hello";
}
testScenario5(ctx) {
return "Hello";
}
testScenario6(ctx) {
return "Hello";
}
testScenario7(ctx) {
ctx.response.location("/another/path");
return "Hello";
}
};
__decorate([
Get("/scenario-1"),
Redirect("/test"),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], RedirectCtrl.prototype, "testScenario1", null);
__decorate([
Get("/scenario-2"),
Redirect(301, "/test"),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], RedirectCtrl.prototype, "testScenario2", null);
__decorate([
Get("/scenario-3"),
Redirect(301, "/test"),
__param(0, Context()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], RedirectCtrl.prototype, "testScenario3", null);
__decorate([
Get("/scenario-4"),
Redirect("back"),
__param(0, Context()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], RedirectCtrl.prototype, "testScenario4", null);
__decorate([
Get("/scenario-5"),
Location("back"),
__param(0, Context()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], RedirectCtrl.prototype, "testScenario5", null);
__decorate([
Get("/scenario-6"),
(Location("/path/to").Status(301)),
__param(0, Context()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], RedirectCtrl.prototype, "testScenario6", null);
__decorate([
Get("/scenario-7"),
Location("/path/to"),
__param(0, Context()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], RedirectCtrl.prototype, "testScenario7", null);
RedirectCtrl = __decorate([
Controller("/redirect")
], RedirectCtrl);
export function testRedirect(options) {
let request;
beforeAll(PlatformTest.bootstrap(options.server, {
...options,
mount: {
"/rest": [RedirectCtrl]
}
}));
beforeAll(() => {
request = SuperTest(PlatformTest.callback());
});
afterAll(PlatformTest.reset);
it("Scenario1: GET /rest/redirect/scenario-1", async () => {
const response = await request.get("/rest/redirect/scenario-1").expect(302);
expect(response.text).toEqual("Found. Redirecting to /test");
expect(response.header.location).toEqual("/test");
});
it("Scenario1: HEAD /rest/redirect/scenario-1", async () => {
const response = await request.head("/rest/redirect/scenario-1").expect(302);
expect(response.text).toBeUndefined();
expect(response.header.location).toEqual("/test");
});
it("Scenario2: GET /rest/redirect/scenario-2", async () => {
const response = await request.get("/rest/redirect/scenario-2").expect(301);
expect(response.text).toEqual("Moved Permanently. Redirecting to /test");
expect(response.header.location).toEqual("/test");
});
it("Scenario3: GET /rest/redirect/scenario-3", async () => {
const response = await request.get("/rest/redirect/scenario-3").expect(302);
expect(response.header.location).toEqual("/another/path");
expect(response.text).toEqual("Found. Redirecting to /another/path");
});
it("Scenario4: GET /rest/redirect/scenario-4 with referer", async () => {
const response = await request.get("/rest/redirect/scenario-4").set("Referrer", "https://referrer.com").expect(302);
expect(response.text).toEqual("Found. Redirecting to https://referrer.com");
expect(response.header.location).toEqual("https://referrer.com");
});
it("Scenario5: GET /rest/redirect/scenario-5", async () => {
const response = await request.get("/rest/redirect/scenario-5").set("Referrer", "https://referrer.com").expect(200);
expect(response.text).toEqual("Hello");
expect(response.header.location).toEqual("https://referrer.com");
});
it("Scenario6: GET /rest/redirect/scenario-6", async () => {
const response = await request.get("/rest/redirect/scenario-6").set("Referrer", "https://referrer.com").expect(301);
expect(response.text).toEqual("Hello");
expect(response.header.location).toEqual("/path/to");
});
it("Scenario7: GET /rest/redirect/scenario-7", async () => {
const response = await request.get("/rest/redirect/scenario-7").set("Referrer", "https://referrer.com").expect(200);
expect(response.text).toEqual("Hello");
expect(response.header.location).toEqual("/another/path");
});
}