UNPKG

@tsed/platform-test-sdk

Version:
143 lines (142 loc) 5.59 kB
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"); }); }