@tsed/platform-test-sdk 7.18.2 → 7.18.3-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,8 +4,11 @@ exports.testMulter = exports.TestMulterController = exports.Event = exports.Task
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@tsed/common");
6
6
  const schema_1 = require("@tsed/schema");
7
+ const filedirname_1 = tslib_1.__importDefault(require("filedirname"));
7
8
  const multer_1 = tslib_1.__importDefault(require("multer"));
8
9
  const supertest_1 = tslib_1.__importDefault(require("supertest"));
10
+ // FIXME remove when esm is ready
11
+ const [, rootDir] = (0, filedirname_1.default)();
9
12
  class Task {
10
13
  id;
11
14
  title;
@@ -42,7 +45,7 @@ function getFileConfig() {
42
45
  return {
43
46
  storage: multer_1.default.diskStorage({
44
47
  destination: (req, _fileItem, cb) => {
45
- const path = `${__dirname}/../.tmp`;
48
+ const path = `${rootDir}/../.tmp`;
46
49
  cb(null, path);
47
50
  }
48
51
  }),
@@ -68,7 +71,7 @@ let TestMulterController = class TestMulterController {
68
71
  tslib_1.__decorate([
69
72
  (0, common_1.Post)("/scenario-1"),
70
73
  (0, schema_1.Status)(201),
71
- (0, common_1.MulterOptions)({ dest: `${__dirname}/../.tmp` }),
74
+ (0, common_1.MulterOptions)({ dest: `${rootDir}/../.tmp` }),
72
75
  tslib_1.__param(0, (0, schema_1.Required)()),
73
76
  tslib_1.__param(0, (0, common_1.MultipartFile)("media")),
74
77
  tslib_1.__metadata("design:type", Function),
@@ -78,7 +81,7 @@ tslib_1.__decorate([
78
81
  tslib_1.__decorate([
79
82
  (0, common_1.Post)("/scenario-2"),
80
83
  (0, schema_1.Status)(201),
81
- (0, common_1.MulterOptions)({ dest: `${__dirname}/../.tmp` }),
84
+ (0, common_1.MulterOptions)({ dest: `${rootDir}/../.tmp` }),
82
85
  tslib_1.__param(0, (0, common_1.MultipartFile)("media")),
83
86
  tslib_1.__param(1, (0, common_1.BodyParams)("form_id")),
84
87
  tslib_1.__metadata("design:type", Function),
@@ -113,7 +116,7 @@ function testMulter(options) {
113
116
  beforeAll(() => jest.resetAllMocks());
114
117
  describe("Scenario 1: POST /rest/multer/scenario-1", () => {
115
118
  it("should upload file with multer", async () => {
116
- const result = await request.post("/rest/multer/scenario-1").attach("media", `${__dirname}/../data/file.txt`).expect(201);
119
+ const result = await request.post("/rest/multer/scenario-1").attach("media", `${rootDir}/../data/file.txt`).expect(201);
117
120
  expect(result.text).toEqual("file.txt");
118
121
  });
119
122
  it("should throw an exception when there is no file", async () => {
@@ -139,7 +142,7 @@ function testMulter(options) {
139
142
  it("should upload file with multer", async () => {
140
143
  const result = await request
141
144
  .post("/rest/multer/scenario-2")
142
- .attach("media", `${__dirname}/../data/file.txt`)
145
+ .attach("media", `${rootDir}/../data/file.txt`)
143
146
  .field({
144
147
  form_id: "form_id"
145
148
  })
@@ -149,7 +152,7 @@ function testMulter(options) {
149
152
  });
150
153
  describe("Scenario 3: POST /rest/multer/scenario-3", () => {
151
154
  it("should upload file with multer", async () => {
152
- const result = await request.post("/rest/multer/scenario-3").attach("media", `${__dirname}/../data/file.txt`).field({}).expect(201);
155
+ const result = await request.post("/rest/multer/scenario-3").attach("media", `${rootDir}/../data/file.txt`).field({}).expect(201);
153
156
  expect(result.body).toEqual({
154
157
  file: "file.txt"
155
158
  });
@@ -1 +1 @@
1
- {"version":3,"file":"testMulter.js","sourceRoot":"","sources":["../../../src/tests/testMulter.ts"],"names":[],"mappings":"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","sourcesContent":["import {BodyParams, Controller, MulterOptions, MultipartFile, PlatformMulterFile, PlatformTest, Post} from \"@tsed/common\";\nimport {CollectionOf, Property, Required, Status} from \"@tsed/schema\";\nimport {Request} from \"express\";\nimport multer, {FileFilterCallback} from \"multer\";\nimport SuperTest from \"supertest\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\n\nexport class Task {\n @Property()\n id: string;\n\n @Property()\n title: string;\n}\n\nexport class Event {\n @Property()\n @Required()\n id: string;\n\n @CollectionOf(Task)\n tasks: Task[];\n}\n\nconst fileFilterStub = jest.fn();\nconst fileFilter = (req: Request, file: PlatformMulterFile, callback: FileFilterCallback) => {\n fileFilterStub();\n callback(null, true);\n};\n\nfunction getFileConfig(): any {\n return {\n storage: multer.diskStorage({\n destination: (req: Express.Request, _fileItem, cb) => {\n const path = `${__dirname}/../.tmp`;\n cb(null, path);\n }\n }),\n fileFilter\n };\n}\n\n@Controller(\"/multer\")\nexport class TestMulterController {\n @Post(\"/scenario-1\")\n @Status(201)\n @MulterOptions({dest: `${__dirname}/../.tmp`})\n uploadWithName(@Required() @MultipartFile(\"media\") media: PlatformMulterFile) {\n return media.originalname;\n }\n\n @Post(\"/scenario-2\")\n @Status(201)\n @MulterOptions({dest: `${__dirname}/../.tmp`})\n uploadWithPayload(@MultipartFile(\"media\") media: PlatformMulterFile, @BodyParams(\"form_id\") formId: string) {\n return {\n file: media.originalname,\n formId\n };\n }\n\n @Post(\"/scenario-3\")\n @Status(201)\n @MulterOptions(getFileConfig())\n uploadWithOptions(@MultipartFile(\"media\") media: PlatformMulterFile) {\n return {\n file: media.originalname\n };\n }\n}\n\nexport function testMulter(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [TestMulterController]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n beforeAll(() => jest.resetAllMocks());\n describe(\"Scenario 1: POST /rest/multer/scenario-1\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request.post(\"/rest/multer/scenario-1\").attach(\"media\", `${__dirname}/../data/file.txt`).expect(201);\n\n expect(result.text).toEqual(\"file.txt\");\n });\n\n it(\"should throw an exception when there is no file\", async () => {\n const result = await request.post(\"/rest/multer/scenario-1\").expect(400);\n\n expect(result.body).toEqual({\n name: \"REQUIRED_VALIDATION_ERROR\",\n message: \"Bad request on parameter \\\"request.files.media.0\\\".\\nIt should have required parameter 'media.0'\",\n status: 400,\n errors: [\n {\n dataPath: \"\",\n keyword: \"required\",\n message: \"It should have required parameter 'media.0'\",\n modelName: \"files\",\n params: {missingProperty: \"media.0\"},\n schemaPath: \"#/required\"\n }\n ]\n });\n });\n });\n describe(\"Scenario 2: POST /rest/multer/scenario-2\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request\n .post(\"/rest/multer/scenario-2\")\n .attach(\"media\", `${__dirname}/../data/file.txt`)\n .field({\n form_id: \"form_id\"\n })\n .expect(201);\n\n expect(result.body).toEqual({file: \"file.txt\", formId: \"form_id\"});\n });\n });\n describe(\"Scenario 3: POST /rest/multer/scenario-3\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request.post(\"/rest/multer/scenario-3\").attach(\"media\", `${__dirname}/../data/file.txt`).field({}).expect(201);\n\n expect(result.body).toEqual({\n file: \"file.txt\"\n });\n\n // filterFilter is called\n expect(fileFilterStub).toBeCalled();\n });\n });\n}\n"]}
1
+ {"version":3,"file":"testMulter.js","sourceRoot":"","sources":["../../../src/tests/testMulter.ts"],"names":[],"mappings":"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","sourcesContent":["import {BodyParams, Controller, MulterOptions, MultipartFile, PlatformMulterFile, PlatformTest, Post} from \"@tsed/common\";\nimport {CollectionOf, Property, Required, Status} from \"@tsed/schema\";\nimport {Request} from \"express\";\nimport filedirname from \"filedirname\";\nimport multer, {FileFilterCallback} from \"multer\";\nimport SuperTest from \"supertest\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\n\n// FIXME remove when esm is ready\nconst [, rootDir] = filedirname();\n\nexport class Task {\n @Property()\n id: string;\n\n @Property()\n title: string;\n}\n\nexport class Event {\n @Property()\n @Required()\n id: string;\n\n @CollectionOf(Task)\n tasks: Task[];\n}\n\nconst fileFilterStub = jest.fn();\nconst fileFilter = (req: Request, file: PlatformMulterFile, callback: FileFilterCallback) => {\n fileFilterStub();\n callback(null, true);\n};\n\nfunction getFileConfig(): any {\n return {\n storage: multer.diskStorage({\n destination: (req: Express.Request, _fileItem, cb) => {\n const path = `${rootDir}/../.tmp`;\n cb(null, path);\n }\n }),\n fileFilter\n };\n}\n\n@Controller(\"/multer\")\nexport class TestMulterController {\n @Post(\"/scenario-1\")\n @Status(201)\n @MulterOptions({dest: `${rootDir}/../.tmp`})\n uploadWithName(@Required() @MultipartFile(\"media\") media: PlatformMulterFile) {\n return media.originalname;\n }\n\n @Post(\"/scenario-2\")\n @Status(201)\n @MulterOptions({dest: `${rootDir}/../.tmp`})\n uploadWithPayload(@MultipartFile(\"media\") media: PlatformMulterFile, @BodyParams(\"form_id\") formId: string) {\n return {\n file: media.originalname,\n formId\n };\n }\n\n @Post(\"/scenario-3\")\n @Status(201)\n @MulterOptions(getFileConfig())\n uploadWithOptions(@MultipartFile(\"media\") media: PlatformMulterFile) {\n return {\n file: media.originalname\n };\n }\n}\n\nexport function testMulter(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [TestMulterController]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n beforeAll(() => jest.resetAllMocks());\n describe(\"Scenario 1: POST /rest/multer/scenario-1\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request.post(\"/rest/multer/scenario-1\").attach(\"media\", `${rootDir}/../data/file.txt`).expect(201);\n\n expect(result.text).toEqual(\"file.txt\");\n });\n\n it(\"should throw an exception when there is no file\", async () => {\n const result = await request.post(\"/rest/multer/scenario-1\").expect(400);\n\n expect(result.body).toEqual({\n name: \"REQUIRED_VALIDATION_ERROR\",\n message: \"Bad request on parameter \\\"request.files.media.0\\\".\\nIt should have required parameter 'media.0'\",\n status: 400,\n errors: [\n {\n dataPath: \"\",\n keyword: \"required\",\n message: \"It should have required parameter 'media.0'\",\n modelName: \"files\",\n params: {missingProperty: \"media.0\"},\n schemaPath: \"#/required\"\n }\n ]\n });\n });\n });\n describe(\"Scenario 2: POST /rest/multer/scenario-2\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request\n .post(\"/rest/multer/scenario-2\")\n .attach(\"media\", `${rootDir}/../data/file.txt`)\n .field({\n form_id: \"form_id\"\n })\n .expect(201);\n\n expect(result.body).toEqual({file: \"file.txt\", formId: \"form_id\"});\n });\n });\n describe(\"Scenario 3: POST /rest/multer/scenario-3\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request.post(\"/rest/multer/scenario-3\").attach(\"media\", `${rootDir}/../data/file.txt`).field({}).expect(201);\n\n expect(result.body).toEqual({\n file: \"file.txt\"\n });\n\n // filterFilter is called\n expect(fileFilterStub).toBeCalled();\n });\n });\n}\n"]}
@@ -5,11 +5,14 @@ const tslib_1 = require("tslib");
5
5
  const common_1 = require("@tsed/common");
6
6
  const schema_1 = require("@tsed/schema");
7
7
  const axios_1 = tslib_1.__importDefault(require("axios"));
8
+ const filedirname_1 = tslib_1.__importDefault(require("filedirname"));
8
9
  const fs_1 = require("fs");
9
10
  const path_1 = require("path");
10
11
  const rxjs_1 = require("rxjs");
11
12
  const superagent_1 = require("superagent");
12
13
  const supertest_1 = tslib_1.__importDefault(require("supertest"));
14
+ // FIXME remove when esm is ready
15
+ const [, rootDir] = (0, filedirname_1.default)();
13
16
  class Base {
14
17
  ignoreMeBase;
15
18
  fooBase;
@@ -150,10 +153,10 @@ let TestResponseParamsCtrl = class TestResponseParamsCtrl {
150
153
  return (0, rxjs_1.of)({ id: 1 });
151
154
  }
152
155
  testScenario7Stream() {
153
- return (0, fs_1.createReadStream)((0, path_1.join)(__dirname, "../data/response.data.json"));
156
+ return (0, fs_1.createReadStream)((0, path_1.join)(rootDir, "../data/response.data.json"));
154
157
  }
155
158
  async testScenario7bStream() {
156
- return (0, fs_1.createReadStream)((0, path_1.join)(__dirname, "../data/response.data.json"));
159
+ return (0, fs_1.createReadStream)((0, path_1.join)(rootDir, "../data/response.data.json"));
157
160
  }
158
161
  testScenario9Get() {
159
162
  return "value";
@@ -1 +1 @@
1
- {"version":3,"file":"testResponse.js","sourceRoot":"","sources":["../../../src/tests/testResponse.ts"],"names":[],"mappings":"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","sourcesContent":["import {Context, Controller, Get, getContext, PathParams, PlatformResponse, PlatformTest, Post, Res} from \"@tsed/common\";\nimport {CollectionOf, ContentType, Enum, ForwardGroups, Groups, Ignore, Name, Property, Required, Returns, Status} from \"@tsed/schema\";\nimport axios from \"axios\";\nimport {createReadStream} from \"fs\";\nimport {join} from \"path\";\nimport {of} from \"rxjs\";\nimport {agent, SuperAgentStatic} from \"superagent\";\nimport SuperTest from \"supertest\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\n\nclass Base {\n @Ignore()\n ignoreMeBase: string;\n\n @Property()\n fooBase: string;\n}\n\nclass MyModel extends Base {\n @Property()\n foo: string;\n\n @Ignore()\n ignoreMe: string;\n\n @Ignore((value, ctx) => ctx.endpoint)\n ignoreMe2: string;\n}\n\nclass EmptyModel {\n raw: any;\n affected?: number | null;\n}\n\nexport enum EnumValue {\n One = \"one\",\n Two = \"two\"\n}\n\nexport class NestedEnum {\n @Required()\n @Enum(EnumValue)\n value: EnumValue;\n}\n\nexport class TestNestedEnum {\n @Property()\n nested: NestedEnum;\n}\n\nexport class ModelGroup {\n @Property()\n id: string;\n\n @Groups(\"!creation\")\n groups: string;\n}\n\nclass TeamModel {\n @Required()\n @Name(\"teamName\")\n name: string;\n}\n\nclass TeamsModel {\n @Required()\n @CollectionOf(TeamModel)\n @ForwardGroups()\n teams: TeamModel[];\n}\n\nclass AllowedModel {\n @Property()\n id: string;\n\n @Property()\n description: string;\n\n @Groups(\"summary\")\n prop1: string; // not display by default\n\n @Groups(\"details\")\n prop2: string; // not display by default\n\n @Groups(\"admin\")\n sensitiveProp: string; // not displayed because it's a sensitive props\n}\n\n@Controller(\"/response\")\nclass TestResponseParamsCtrl {\n @Get(\"/scenario1/:id\")\n public testScenario1Get(@PathParams(\"id\") id: number) {\n return `hello-${id}`;\n }\n\n @Post(\"/scenario3/:id?\")\n @Status(204)\n public testScenario3EmptyResponse(@PathParams(\"id\") id: number, @Context() ctx: Context) {\n if (id) {\n return;\n }\n\n ctx.response.status(201);\n\n return {\n id: 1\n };\n }\n\n @Get(\"/scenario5\")\n async testScenario5Promise() {\n await new Promise((resolve) => {\n resolve(undefined);\n });\n\n return {\n id: 1\n };\n }\n\n @Get(\"/scenario6\")\n testScenario6Observable() {\n return of({id: 1});\n }\n\n @Get(\"/scenario6b\")\n async testScenario6bObservable() {\n return of({id: 1});\n }\n\n @Get(\"/scenario7\")\n @ContentType(\"application/json\")\n testScenario7Stream() {\n return createReadStream(join(__dirname, \"../data/response.data.json\"));\n }\n\n @Get(\"/scenario7b\")\n @ContentType(\"application/json\")\n async testScenario7bStream() {\n return createReadStream(join(__dirname, \"../data/response.data.json\"));\n }\n\n @Get(\"/scenario9/static\")\n public testScenario9Get(): string {\n return \"value\";\n }\n\n @Get(\"/scenario9/:id\")\n public testScenario9WithDynamicParam(@PathParams(\"id\") id: number): string {\n return \"value\" + id;\n }\n\n @Get(\"/scenario10\")\n public testScenario10() {\n const model = new MyModel();\n model.foo = \"foo\";\n model.ignoreMe = \"ignoreMe\";\n model.ignoreMe2 = \"ignoreMe2\";\n model.fooBase = \"fooBase\";\n model.ignoreMeBase = \"ignoreMeBase\";\n\n return model;\n }\n\n @Get(\"/scenario11\")\n testScenario11() {\n const t = new EmptyModel();\n\n t.raw = 1;\n t.affected = 1;\n\n return t;\n }\n\n @Get(\"/scenario12\")\n testScenario12(@Res() res: PlatformResponse) {\n res.attachment(\"filename\");\n\n return Buffer.from(\"Hello\");\n }\n\n @Get(\"/scenario13\")\n async testScenario13(@Res() res: PlatformResponse) {\n const http: SuperAgentStatic = agent();\n\n const image_res = await http.get(\"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png\");\n\n res.setHeader(\"Content-Disposition\", \"inline;filename=googlelogo_color_272x92dp.png;\");\n res.setHeader(\"X-Content-Type-Options\", \"nosniff\");\n res.setHeader(\"Content-Type\", \"image/png\");\n\n return image_res.body;\n }\n\n @Get(\"/scenario14\")\n public scenario14() {\n return {\n jsonexample: 1\n };\n }\n\n @Get(\"/scenario15a\")\n testScenario15a() {\n return axios.get(`https://tsed.io/api.json`, {\n responseType: \"json\"\n });\n }\n\n @Get(\"/scenario15b\")\n async testScenario15b() {\n return axios.get(`https://api.tsed.io/rest/github/typed/test`, {\n responseType: \"json\"\n });\n }\n\n @Get(\"/scenario16\")\n async testScenario16(): Promise<TestNestedEnum> {\n const test = new TestNestedEnum();\n const nested = new NestedEnum();\n nested.value = EnumValue.One;\n test.nested = nested;\n return test;\n }\n\n @Get(\"/scenario17\")\n @Returns(201, ModelGroup).Groups(\"creation\")\n async testScenario17(): Promise<ModelGroup> {\n const model = new ModelGroup();\n model.id = \"id\";\n model.groups = \"groups\";\n\n return model;\n }\n\n @Get(\"/scenario18\")\n @Returns(200, TeamsModel)\n testScenario18() {\n const data = new TeamsModel();\n const team: any = {};\n team.name = \"name\";\n data.teams = [team];\n\n return data;\n }\n\n @Get(\"/scenario19\")\n @Returns(200, AllowedModel).Groups(\"!admin\").AllowedGroups(\"summary\", \"details\")\n async testScenario19(): Promise<AllowedModel> {\n const model = new AllowedModel();\n model.id = \"id\";\n model.prop1 = \"prop1\";\n model.description = \"description\";\n model.prop2 = \"prop2\";\n model.sensitiveProp = \"sensitiveProp\";\n\n return model;\n }\n\n @Get(\"/scenario20\")\n async testScenario20() {\n const $ctx = getContext();\n\n return {id: $ctx?.request.query.id};\n }\n}\n\nexport function testResponse(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [TestResponseParamsCtrl]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n\n describe(\"Scenario1: return the id (classic)\", () => {\n describe(\"GET /rest/response/scenario1/:id\", () => {\n it(\"should return the id + test\", async () => {\n const response = await request.get(\"/rest/response/scenario1/10\").expect(200);\n\n expect(response.text).toEqual(\"hello-10\");\n });\n });\n });\n\n describe(\"Scenario3: when response is empty or created\", () => {\n describe(\"GET /rest/response/scenario3/:id?\", () => {\n it(\"should return nothing with a 204 status\", async () => {\n const response = await request.post(\"/rest/response/scenario3/10\").expect(204);\n\n expect(response.text).toEqual(\"\");\n });\n\n it(\"should return a body\", async () => {\n const response = await request.post(\"/rest/response/scenario3\").expect(201);\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario5: when endpoint response from promise\", () => {\n describe(\"GET /rest/response/scenario5\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario5\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario6: when endpoint return an observable\", () => {\n describe(\"GET /rest/response/scenario6\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario6\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n\n describe(\"GET /rest/response/scenario6b\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario6b\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario7: when endpoint return a stream\", () => {\n describe(\"GET /rest/response/scenario7\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario7\");\n\n expect(response.body).toEqual({id: \"1\"});\n });\n });\n\n describe(\"GET /rest/response/scenario7b\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario7b\");\n\n expect(response.body).toEqual({id: \"1\"});\n });\n });\n });\n\n describe(\"Scenario9: routes without parameters must be defined first\", () => {\n describe(\"GET /rest/response/scenario9/static\", () => {\n it(\"should return the test\", async () => {\n const response = await request.get(\"/rest/response/scenario9/static\").expect(200);\n\n expect(response.text).toEqual(\"value\");\n });\n });\n\n describe(\"GET /rest/response/scenario9/:dynamic\", () => {\n it(\"should return the test + id\", async () => {\n const response = await request.get(\"/rest/response/scenario9/10\").expect(200);\n\n expect(response.text).toEqual(\"value10\");\n });\n });\n\n describe(\"GET /rest/response/scenario9/:dynamic\", () => {\n it(\"should throw a badRequest when path params isn't set as number\", async () => {\n const response = await request.get(\"/rest/response/scenario9/kkk\").expect(400);\n\n expect(response.body).toEqual({\n errors: [\n {\n data: \"kkk\",\n dataPath: \"\",\n instancePath: \"\",\n keyword: \"type\",\n message: \"must be number\",\n params: {\n type: \"number\"\n },\n schemaPath: \"#/type\"\n }\n ],\n message: 'Bad request on parameter \"request.path.id\".\\nValue must be number. Given value: \"kkk\"',\n name: \"AJV_VALIDATION_ERROR\",\n status: 400\n });\n });\n });\n });\n\n describe(\"Scenario10: return a model with ignored props\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario10\");\n\n expect(response.body).toEqual({\n foo: \"foo\",\n fooBase: \"fooBase\"\n });\n });\n });\n\n describe(\"Scenario11: return models without props\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario11\");\n\n expect(response.body).toEqual({\n affected: 1,\n raw: 1\n });\n });\n });\n\n describe(\"Scenario12: Return buffer\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario12\");\n\n expect(response.headers[\"content-disposition\"]).toEqual('attachment; filename=\"filename\"');\n expect(response.headers[\"content-type\"]).toContain(\"application/octet-stream\");\n expect(response.headers[\"content-length\"]).toEqual(\"5\");\n expect(response.body.toString()).toEqual(\"Hello\");\n });\n });\n\n describe(\"Scenario13: Return buffer\", () => {\n it(\"should return image\", async () => {\n const response = await request.get(\"/rest/response/scenario13\");\n\n expect(response.headers[\"content-disposition\"]).toEqual(\"inline;filename=googlelogo_color_272x92dp.png;\");\n expect(response.headers[\"content-type\"]).toContain(\"image/png\");\n expect(response.headers[\"content-length\"]).toEqual(\"5969\");\n });\n });\n\n describe(\"Scenario14: Return application/json when Accept is */*\", () => {\n it(\"should return a */* content-type\", async () => {\n const response = await request\n .get(\"/rest/response/scenario14\")\n .set(\"Accept\", \"*/*\")\n .set(\"Content-Type\", \"application/json\")\n .expect(200);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n expect(response.body).toEqual({\n jsonexample: 1\n });\n });\n });\n describe(\"Scenario15: Use axios as proxy\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario15a\").expect(200);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n });\n\n it(\"should return the response (401)\", async () => {\n const response = await request.get(\"/rest/response/scenario15b\").expect(401);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n });\n });\n\n describe(\"Scenario16: Return response with nested enum\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario16\").expect(200);\n\n expect(response.body).toEqual({nested: {value: \"one\"}});\n });\n });\n\n describe(\"Scenario17: Return response with groups on 201\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario17\").expect(201);\n\n expect(response.body).toEqual({id: \"id\"});\n });\n });\n\n describe(\"Scenario18: Return data with alias\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario18\").expect(200);\n\n expect(response.body).toEqual({\n teams: [\n {\n teamName: \"name\"\n }\n ]\n });\n });\n });\n\n describe(\"Scenario19: includes options\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario19\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop1: \"prop1\",\n prop2: \"prop2\"\n });\n });\n it(\"should return the response (200 + [summary])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + [summary, details])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary&includes=details\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + [summary, details, admin])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary&includes=details&includes=admin\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + 'summary,details,admin')\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary,details,admin\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n });\n\n describe(\"Scenario20: should return query data from Context\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario20?id=id\").expect(200);\n\n expect(response.body).toEqual({id: \"id\"});\n });\n });\n}\n"]}
1
+ {"version":3,"file":"testResponse.js","sourceRoot":"","sources":["../../../src/tests/testResponse.ts"],"names":[],"mappings":"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","sourcesContent":["import {Context, Controller, Get, getContext, PathParams, PlatformResponse, PlatformTest, Post, Res} from \"@tsed/common\";\nimport {CollectionOf, ContentType, Enum, ForwardGroups, Groups, Ignore, Name, Property, Required, Returns, Status} from \"@tsed/schema\";\nimport axios from \"axios\";\nimport filedirname from \"filedirname\";\nimport {createReadStream} from \"fs\";\nimport {join} from \"path\";\nimport {of} from \"rxjs\";\nimport {agent, SuperAgentStatic} from \"superagent\";\nimport SuperTest from \"supertest\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\n// FIXME remove when esm is ready\nconst [, rootDir] = filedirname();\n\nclass Base {\n @Ignore()\n ignoreMeBase: string;\n\n @Property()\n fooBase: string;\n}\n\nclass MyModel extends Base {\n @Property()\n foo: string;\n\n @Ignore()\n ignoreMe: string;\n\n @Ignore((value, ctx) => ctx.endpoint)\n ignoreMe2: string;\n}\n\nclass EmptyModel {\n raw: any;\n affected?: number | null;\n}\n\nexport enum EnumValue {\n One = \"one\",\n Two = \"two\"\n}\n\nexport class NestedEnum {\n @Required()\n @Enum(EnumValue)\n value: EnumValue;\n}\n\nexport class TestNestedEnum {\n @Property()\n nested: NestedEnum;\n}\n\nexport class ModelGroup {\n @Property()\n id: string;\n\n @Groups(\"!creation\")\n groups: string;\n}\n\nclass TeamModel {\n @Required()\n @Name(\"teamName\")\n name: string;\n}\n\nclass TeamsModel {\n @Required()\n @CollectionOf(TeamModel)\n @ForwardGroups()\n teams: TeamModel[];\n}\n\nclass AllowedModel {\n @Property()\n id: string;\n\n @Property()\n description: string;\n\n @Groups(\"summary\")\n prop1: string; // not display by default\n\n @Groups(\"details\")\n prop2: string; // not display by default\n\n @Groups(\"admin\")\n sensitiveProp: string; // not displayed because it's a sensitive props\n}\n\n@Controller(\"/response\")\nclass TestResponseParamsCtrl {\n @Get(\"/scenario1/:id\")\n public testScenario1Get(@PathParams(\"id\") id: number) {\n return `hello-${id}`;\n }\n\n @Post(\"/scenario3/:id?\")\n @Status(204)\n public testScenario3EmptyResponse(@PathParams(\"id\") id: number, @Context() ctx: Context) {\n if (id) {\n return;\n }\n\n ctx.response.status(201);\n\n return {\n id: 1\n };\n }\n\n @Get(\"/scenario5\")\n async testScenario5Promise() {\n await new Promise((resolve) => {\n resolve(undefined);\n });\n\n return {\n id: 1\n };\n }\n\n @Get(\"/scenario6\")\n testScenario6Observable() {\n return of({id: 1});\n }\n\n @Get(\"/scenario6b\")\n async testScenario6bObservable() {\n return of({id: 1});\n }\n\n @Get(\"/scenario7\")\n @ContentType(\"application/json\")\n testScenario7Stream() {\n return createReadStream(join(rootDir, \"../data/response.data.json\"));\n }\n\n @Get(\"/scenario7b\")\n @ContentType(\"application/json\")\n async testScenario7bStream() {\n return createReadStream(join(rootDir, \"../data/response.data.json\"));\n }\n\n @Get(\"/scenario9/static\")\n public testScenario9Get(): string {\n return \"value\";\n }\n\n @Get(\"/scenario9/:id\")\n public testScenario9WithDynamicParam(@PathParams(\"id\") id: number): string {\n return \"value\" + id;\n }\n\n @Get(\"/scenario10\")\n public testScenario10() {\n const model = new MyModel();\n model.foo = \"foo\";\n model.ignoreMe = \"ignoreMe\";\n model.ignoreMe2 = \"ignoreMe2\";\n model.fooBase = \"fooBase\";\n model.ignoreMeBase = \"ignoreMeBase\";\n\n return model;\n }\n\n @Get(\"/scenario11\")\n testScenario11() {\n const t = new EmptyModel();\n\n t.raw = 1;\n t.affected = 1;\n\n return t;\n }\n\n @Get(\"/scenario12\")\n testScenario12(@Res() res: PlatformResponse) {\n res.attachment(\"filename\");\n\n return Buffer.from(\"Hello\");\n }\n\n @Get(\"/scenario13\")\n async testScenario13(@Res() res: PlatformResponse) {\n const http: SuperAgentStatic = agent();\n\n const image_res = await http.get(\"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png\");\n\n res.setHeader(\"Content-Disposition\", \"inline;filename=googlelogo_color_272x92dp.png;\");\n res.setHeader(\"X-Content-Type-Options\", \"nosniff\");\n res.setHeader(\"Content-Type\", \"image/png\");\n\n return image_res.body;\n }\n\n @Get(\"/scenario14\")\n public scenario14() {\n return {\n jsonexample: 1\n };\n }\n\n @Get(\"/scenario15a\")\n testScenario15a() {\n return axios.get(`https://tsed.io/api.json`, {\n responseType: \"json\"\n });\n }\n\n @Get(\"/scenario15b\")\n async testScenario15b() {\n return axios.get(`https://api.tsed.io/rest/github/typed/test`, {\n responseType: \"json\"\n });\n }\n\n @Get(\"/scenario16\")\n async testScenario16(): Promise<TestNestedEnum> {\n const test = new TestNestedEnum();\n const nested = new NestedEnum();\n nested.value = EnumValue.One;\n test.nested = nested;\n return test;\n }\n\n @Get(\"/scenario17\")\n @Returns(201, ModelGroup).Groups(\"creation\")\n async testScenario17(): Promise<ModelGroup> {\n const model = new ModelGroup();\n model.id = \"id\";\n model.groups = \"groups\";\n\n return model;\n }\n\n @Get(\"/scenario18\")\n @Returns(200, TeamsModel)\n testScenario18() {\n const data = new TeamsModel();\n const team: any = {};\n team.name = \"name\";\n data.teams = [team];\n\n return data;\n }\n\n @Get(\"/scenario19\")\n @Returns(200, AllowedModel).Groups(\"!admin\").AllowedGroups(\"summary\", \"details\")\n async testScenario19(): Promise<AllowedModel> {\n const model = new AllowedModel();\n model.id = \"id\";\n model.prop1 = \"prop1\";\n model.description = \"description\";\n model.prop2 = \"prop2\";\n model.sensitiveProp = \"sensitiveProp\";\n\n return model;\n }\n\n @Get(\"/scenario20\")\n async testScenario20() {\n const $ctx = getContext();\n\n return {id: $ctx?.request.query.id};\n }\n}\n\nexport function testResponse(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [TestResponseParamsCtrl]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n\n describe(\"Scenario1: return the id (classic)\", () => {\n describe(\"GET /rest/response/scenario1/:id\", () => {\n it(\"should return the id + test\", async () => {\n const response = await request.get(\"/rest/response/scenario1/10\").expect(200);\n\n expect(response.text).toEqual(\"hello-10\");\n });\n });\n });\n\n describe(\"Scenario3: when response is empty or created\", () => {\n describe(\"GET /rest/response/scenario3/:id?\", () => {\n it(\"should return nothing with a 204 status\", async () => {\n const response = await request.post(\"/rest/response/scenario3/10\").expect(204);\n\n expect(response.text).toEqual(\"\");\n });\n\n it(\"should return a body\", async () => {\n const response = await request.post(\"/rest/response/scenario3\").expect(201);\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario5: when endpoint response from promise\", () => {\n describe(\"GET /rest/response/scenario5\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario5\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario6: when endpoint return an observable\", () => {\n describe(\"GET /rest/response/scenario6\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario6\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n\n describe(\"GET /rest/response/scenario6b\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario6b\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario7: when endpoint return a stream\", () => {\n describe(\"GET /rest/response/scenario7\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario7\");\n\n expect(response.body).toEqual({id: \"1\"});\n });\n });\n\n describe(\"GET /rest/response/scenario7b\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario7b\");\n\n expect(response.body).toEqual({id: \"1\"});\n });\n });\n });\n\n describe(\"Scenario9: routes without parameters must be defined first\", () => {\n describe(\"GET /rest/response/scenario9/static\", () => {\n it(\"should return the test\", async () => {\n const response = await request.get(\"/rest/response/scenario9/static\").expect(200);\n\n expect(response.text).toEqual(\"value\");\n });\n });\n\n describe(\"GET /rest/response/scenario9/:dynamic\", () => {\n it(\"should return the test + id\", async () => {\n const response = await request.get(\"/rest/response/scenario9/10\").expect(200);\n\n expect(response.text).toEqual(\"value10\");\n });\n });\n\n describe(\"GET /rest/response/scenario9/:dynamic\", () => {\n it(\"should throw a badRequest when path params isn't set as number\", async () => {\n const response = await request.get(\"/rest/response/scenario9/kkk\").expect(400);\n\n expect(response.body).toEqual({\n errors: [\n {\n data: \"kkk\",\n dataPath: \"\",\n instancePath: \"\",\n keyword: \"type\",\n message: \"must be number\",\n params: {\n type: \"number\"\n },\n schemaPath: \"#/type\"\n }\n ],\n message: 'Bad request on parameter \"request.path.id\".\\nValue must be number. Given value: \"kkk\"',\n name: \"AJV_VALIDATION_ERROR\",\n status: 400\n });\n });\n });\n });\n\n describe(\"Scenario10: return a model with ignored props\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario10\");\n\n expect(response.body).toEqual({\n foo: \"foo\",\n fooBase: \"fooBase\"\n });\n });\n });\n\n describe(\"Scenario11: return models without props\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario11\");\n\n expect(response.body).toEqual({\n affected: 1,\n raw: 1\n });\n });\n });\n\n describe(\"Scenario12: Return buffer\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario12\");\n\n expect(response.headers[\"content-disposition\"]).toEqual('attachment; filename=\"filename\"');\n expect(response.headers[\"content-type\"]).toContain(\"application/octet-stream\");\n expect(response.headers[\"content-length\"]).toEqual(\"5\");\n expect(response.body.toString()).toEqual(\"Hello\");\n });\n });\n\n describe(\"Scenario13: Return buffer\", () => {\n it(\"should return image\", async () => {\n const response = await request.get(\"/rest/response/scenario13\");\n\n expect(response.headers[\"content-disposition\"]).toEqual(\"inline;filename=googlelogo_color_272x92dp.png;\");\n expect(response.headers[\"content-type\"]).toContain(\"image/png\");\n expect(response.headers[\"content-length\"]).toEqual(\"5969\");\n });\n });\n\n describe(\"Scenario14: Return application/json when Accept is */*\", () => {\n it(\"should return a */* content-type\", async () => {\n const response = await request\n .get(\"/rest/response/scenario14\")\n .set(\"Accept\", \"*/*\")\n .set(\"Content-Type\", \"application/json\")\n .expect(200);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n expect(response.body).toEqual({\n jsonexample: 1\n });\n });\n });\n describe(\"Scenario15: Use axios as proxy\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario15a\").expect(200);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n });\n\n it(\"should return the response (401)\", async () => {\n const response = await request.get(\"/rest/response/scenario15b\").expect(401);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n });\n });\n\n describe(\"Scenario16: Return response with nested enum\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario16\").expect(200);\n\n expect(response.body).toEqual({nested: {value: \"one\"}});\n });\n });\n\n describe(\"Scenario17: Return response with groups on 201\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario17\").expect(201);\n\n expect(response.body).toEqual({id: \"id\"});\n });\n });\n\n describe(\"Scenario18: Return data with alias\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario18\").expect(200);\n\n expect(response.body).toEqual({\n teams: [\n {\n teamName: \"name\"\n }\n ]\n });\n });\n });\n\n describe(\"Scenario19: includes options\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario19\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop1: \"prop1\",\n prop2: \"prop2\"\n });\n });\n it(\"should return the response (200 + [summary])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + [summary, details])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary&includes=details\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + [summary, details, admin])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary&includes=details&includes=admin\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + 'summary,details,admin')\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary,details,admin\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n });\n\n describe(\"Scenario20: should return query data from Context\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario20?id=id\").expect(200);\n\n expect(response.body).toEqual({id: \"id\"});\n });\n });\n}\n"]}
@@ -1,8 +1,11 @@
1
1
  import { __decorate, __metadata, __param } from "tslib";
2
2
  import { BodyParams, Controller, MulterOptions, MultipartFile, PlatformTest, Post } from "@tsed/common";
3
3
  import { CollectionOf, Property, Required, Status } from "@tsed/schema";
4
+ import filedirname from "filedirname";
4
5
  import multer from "multer";
5
6
  import SuperTest from "supertest";
7
+ // FIXME remove when esm is ready
8
+ const [, rootDir] = filedirname();
6
9
  export class Task {
7
10
  id;
8
11
  title;
@@ -37,7 +40,7 @@ function getFileConfig() {
37
40
  return {
38
41
  storage: multer.diskStorage({
39
42
  destination: (req, _fileItem, cb) => {
40
- const path = `${__dirname}/../.tmp`;
43
+ const path = `${rootDir}/../.tmp`;
41
44
  cb(null, path);
42
45
  }
43
46
  }),
@@ -63,7 +66,7 @@ let TestMulterController = class TestMulterController {
63
66
  __decorate([
64
67
  Post("/scenario-1"),
65
68
  Status(201),
66
- MulterOptions({ dest: `${__dirname}/../.tmp` }),
69
+ MulterOptions({ dest: `${rootDir}/../.tmp` }),
67
70
  __param(0, Required()),
68
71
  __param(0, MultipartFile("media")),
69
72
  __metadata("design:type", Function),
@@ -73,7 +76,7 @@ __decorate([
73
76
  __decorate([
74
77
  Post("/scenario-2"),
75
78
  Status(201),
76
- MulterOptions({ dest: `${__dirname}/../.tmp` }),
79
+ MulterOptions({ dest: `${rootDir}/../.tmp` }),
77
80
  __param(0, MultipartFile("media")),
78
81
  __param(1, BodyParams("form_id")),
79
82
  __metadata("design:type", Function),
@@ -108,7 +111,7 @@ export function testMulter(options) {
108
111
  beforeAll(() => jest.resetAllMocks());
109
112
  describe("Scenario 1: POST /rest/multer/scenario-1", () => {
110
113
  it("should upload file with multer", async () => {
111
- const result = await request.post("/rest/multer/scenario-1").attach("media", `${__dirname}/../data/file.txt`).expect(201);
114
+ const result = await request.post("/rest/multer/scenario-1").attach("media", `${rootDir}/../data/file.txt`).expect(201);
112
115
  expect(result.text).toEqual("file.txt");
113
116
  });
114
117
  it("should throw an exception when there is no file", async () => {
@@ -134,7 +137,7 @@ export function testMulter(options) {
134
137
  it("should upload file with multer", async () => {
135
138
  const result = await request
136
139
  .post("/rest/multer/scenario-2")
137
- .attach("media", `${__dirname}/../data/file.txt`)
140
+ .attach("media", `${rootDir}/../data/file.txt`)
138
141
  .field({
139
142
  form_id: "form_id"
140
143
  })
@@ -144,7 +147,7 @@ export function testMulter(options) {
144
147
  });
145
148
  describe("Scenario 3: POST /rest/multer/scenario-3", () => {
146
149
  it("should upload file with multer", async () => {
147
- const result = await request.post("/rest/multer/scenario-3").attach("media", `${__dirname}/../data/file.txt`).field({}).expect(201);
150
+ const result = await request.post("/rest/multer/scenario-3").attach("media", `${rootDir}/../data/file.txt`).field({}).expect(201);
148
151
  expect(result.body).toEqual({
149
152
  file: "file.txt"
150
153
  });
@@ -1 +1 @@
1
- {"version":3,"file":"testMulter.js","sourceRoot":"","sources":["../../../src/tests/testMulter.ts"],"names":[],"mappings":"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","sourcesContent":["import {BodyParams, Controller, MulterOptions, MultipartFile, PlatformMulterFile, PlatformTest, Post} from \"@tsed/common\";\nimport {CollectionOf, Property, Required, Status} from \"@tsed/schema\";\nimport {Request} from \"express\";\nimport multer, {FileFilterCallback} from \"multer\";\nimport SuperTest from \"supertest\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\n\nexport class Task {\n @Property()\n id: string;\n\n @Property()\n title: string;\n}\n\nexport class Event {\n @Property()\n @Required()\n id: string;\n\n @CollectionOf(Task)\n tasks: Task[];\n}\n\nconst fileFilterStub = jest.fn();\nconst fileFilter = (req: Request, file: PlatformMulterFile, callback: FileFilterCallback) => {\n fileFilterStub();\n callback(null, true);\n};\n\nfunction getFileConfig(): any {\n return {\n storage: multer.diskStorage({\n destination: (req: Express.Request, _fileItem, cb) => {\n const path = `${__dirname}/../.tmp`;\n cb(null, path);\n }\n }),\n fileFilter\n };\n}\n\n@Controller(\"/multer\")\nexport class TestMulterController {\n @Post(\"/scenario-1\")\n @Status(201)\n @MulterOptions({dest: `${__dirname}/../.tmp`})\n uploadWithName(@Required() @MultipartFile(\"media\") media: PlatformMulterFile) {\n return media.originalname;\n }\n\n @Post(\"/scenario-2\")\n @Status(201)\n @MulterOptions({dest: `${__dirname}/../.tmp`})\n uploadWithPayload(@MultipartFile(\"media\") media: PlatformMulterFile, @BodyParams(\"form_id\") formId: string) {\n return {\n file: media.originalname,\n formId\n };\n }\n\n @Post(\"/scenario-3\")\n @Status(201)\n @MulterOptions(getFileConfig())\n uploadWithOptions(@MultipartFile(\"media\") media: PlatformMulterFile) {\n return {\n file: media.originalname\n };\n }\n}\n\nexport function testMulter(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [TestMulterController]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n beforeAll(() => jest.resetAllMocks());\n describe(\"Scenario 1: POST /rest/multer/scenario-1\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request.post(\"/rest/multer/scenario-1\").attach(\"media\", `${__dirname}/../data/file.txt`).expect(201);\n\n expect(result.text).toEqual(\"file.txt\");\n });\n\n it(\"should throw an exception when there is no file\", async () => {\n const result = await request.post(\"/rest/multer/scenario-1\").expect(400);\n\n expect(result.body).toEqual({\n name: \"REQUIRED_VALIDATION_ERROR\",\n message: \"Bad request on parameter \\\"request.files.media.0\\\".\\nIt should have required parameter 'media.0'\",\n status: 400,\n errors: [\n {\n dataPath: \"\",\n keyword: \"required\",\n message: \"It should have required parameter 'media.0'\",\n modelName: \"files\",\n params: {missingProperty: \"media.0\"},\n schemaPath: \"#/required\"\n }\n ]\n });\n });\n });\n describe(\"Scenario 2: POST /rest/multer/scenario-2\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request\n .post(\"/rest/multer/scenario-2\")\n .attach(\"media\", `${__dirname}/../data/file.txt`)\n .field({\n form_id: \"form_id\"\n })\n .expect(201);\n\n expect(result.body).toEqual({file: \"file.txt\", formId: \"form_id\"});\n });\n });\n describe(\"Scenario 3: POST /rest/multer/scenario-3\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request.post(\"/rest/multer/scenario-3\").attach(\"media\", `${__dirname}/../data/file.txt`).field({}).expect(201);\n\n expect(result.body).toEqual({\n file: \"file.txt\"\n });\n\n // filterFilter is called\n expect(fileFilterStub).toBeCalled();\n });\n });\n}\n"]}
1
+ {"version":3,"file":"testMulter.js","sourceRoot":"","sources":["../../../src/tests/testMulter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAsB,YAAY,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAC1H,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,cAAc,CAAC;AAEtE,OAAO,WAAW,MAAM,aAAa,CAAC;AACtC,OAAO,MAA4B,MAAM,QAAQ,CAAC;AAClD,OAAO,SAAS,MAAM,WAAW,CAAC;AAGlC,iCAAiC;AACjC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC;AAElC,MAAM,OAAO,IAAI;IAEf,EAAE,CAAS;IAGX,KAAK,CAAS;CACf;AAJC;IADC,QAAQ,EAAE;;gCACA;AAGX;IADC,QAAQ,EAAE;;mCACG;AAGhB,MAAM,OAAO,KAAK;IAGhB,EAAE,CAAS;IAGX,KAAK,CAAS;CACf;AAJC;IAFC,QAAQ,EAAE;IACV,QAAQ,EAAE;;iCACA;AAGX;IADC,YAAY,CAAC,IAAI,CAAC;;oCACL;AAGhB,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACjC,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,IAAwB,EAAE,QAA4B,EAAE,EAAE;IAC1F,cAAc,EAAE,CAAC;IACjB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,SAAS,aAAa;IACpB,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC;YAC1B,WAAW,EAAE,CAAC,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;gBACnD,MAAM,IAAI,GAAG,GAAG,OAAO,UAAU,CAAC;gBAClC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjB,CAAC;SACF,CAAC;QACF,UAAU;KACX,CAAC;AACJ,CAAC;AAGD,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAI/B,cAAc,CAAqC,KAAyB;QAC1E,OAAO,KAAK,CAAC,YAAY,CAAC;IAC5B,CAAC;IAKD,iBAAiB,CAAyB,KAAyB,EAAyB,MAAc;QACxG,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,YAAY;YACxB,MAAM;SACP,CAAC;IACJ,CAAC;IAKD,iBAAiB,CAAyB,KAAyB;QACjE,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,YAAY;SACzB,CAAC;IACJ,CAAC;CACF,CAAA;AAtBC;IAHC,IAAI,CAAC,aAAa,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC;IACX,aAAa,CAAC,EAAC,IAAI,EAAE,GAAG,OAAO,UAAU,EAAC,CAAC;IAC5B,WAAA,QAAQ,EAAE,CAAA;IAAE,WAAA,aAAa,CAAC,OAAO,CAAC,CAAA;;;;0DAEjD;AAKD;IAHC,IAAI,CAAC,aAAa,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC;IACX,aAAa,CAAC,EAAC,IAAI,EAAE,GAAG,OAAO,UAAU,EAAC,CAAC;IACzB,WAAA,aAAa,CAAC,OAAO,CAAC,CAAA;IAA6B,WAAA,UAAU,CAAC,SAAS,CAAC,CAAA;;;;6DAK1F;AAKD;IAHC,IAAI,CAAC,aAAa,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC;IACX,aAAa,CAAC,aAAa,EAAE,CAAC;IACZ,WAAA,aAAa,CAAC,OAAO,CAAC,CAAA;;;;6DAIxC;AAzBU,oBAAoB;IADhC,UAAU,CAAC,SAAS,CAAC;GACT,oBAAoB,CA0BhC;SA1BY,oBAAoB;AA4BjC,MAAM,UAAU,UAAU,CAAC,OAA+B;IACxD,IAAI,OAA4C,CAAC;IAEjD,SAAS,CACP,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;QACrC,GAAG,OAAO;QACV,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,oBAAoB,CAAC;SAChC;KACF,CAAC,CACH,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAExH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEzE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gBAC1B,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,kGAAkG;gBAC3G,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE;oBACN;wBACE,QAAQ,EAAE,EAAE;wBACZ,OAAO,EAAE,UAAU;wBACnB,OAAO,EAAE,6CAA6C;wBACtD,SAAS,EAAE,OAAO;wBAClB,MAAM,EAAE,EAAC,eAAe,EAAE,SAAS,EAAC;wBACpC,UAAU,EAAE,YAAY;qBACzB;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,OAAO;iBACzB,IAAI,CAAC,yBAAyB,CAAC;iBAC/B,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,mBAAmB,CAAC;iBAC9C,KAAK,CAAC;gBACL,OAAO,EAAE,SAAS;aACnB,CAAC;iBACD,MAAM,CAAC,GAAG,CAAC,CAAC;YAEf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,mBAAmB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAElI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gBAC1B,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YAEH,yBAAyB;YACzB,MAAM,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {BodyParams, Controller, MulterOptions, MultipartFile, PlatformMulterFile, PlatformTest, Post} from \"@tsed/common\";\nimport {CollectionOf, Property, Required, Status} from \"@tsed/schema\";\nimport {Request} from \"express\";\nimport filedirname from \"filedirname\";\nimport multer, {FileFilterCallback} from \"multer\";\nimport SuperTest from \"supertest\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\n\n// FIXME remove when esm is ready\nconst [, rootDir] = filedirname();\n\nexport class Task {\n @Property()\n id: string;\n\n @Property()\n title: string;\n}\n\nexport class Event {\n @Property()\n @Required()\n id: string;\n\n @CollectionOf(Task)\n tasks: Task[];\n}\n\nconst fileFilterStub = jest.fn();\nconst fileFilter = (req: Request, file: PlatformMulterFile, callback: FileFilterCallback) => {\n fileFilterStub();\n callback(null, true);\n};\n\nfunction getFileConfig(): any {\n return {\n storage: multer.diskStorage({\n destination: (req: Express.Request, _fileItem, cb) => {\n const path = `${rootDir}/../.tmp`;\n cb(null, path);\n }\n }),\n fileFilter\n };\n}\n\n@Controller(\"/multer\")\nexport class TestMulterController {\n @Post(\"/scenario-1\")\n @Status(201)\n @MulterOptions({dest: `${rootDir}/../.tmp`})\n uploadWithName(@Required() @MultipartFile(\"media\") media: PlatformMulterFile) {\n return media.originalname;\n }\n\n @Post(\"/scenario-2\")\n @Status(201)\n @MulterOptions({dest: `${rootDir}/../.tmp`})\n uploadWithPayload(@MultipartFile(\"media\") media: PlatformMulterFile, @BodyParams(\"form_id\") formId: string) {\n return {\n file: media.originalname,\n formId\n };\n }\n\n @Post(\"/scenario-3\")\n @Status(201)\n @MulterOptions(getFileConfig())\n uploadWithOptions(@MultipartFile(\"media\") media: PlatformMulterFile) {\n return {\n file: media.originalname\n };\n }\n}\n\nexport function testMulter(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [TestMulterController]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n beforeAll(() => jest.resetAllMocks());\n describe(\"Scenario 1: POST /rest/multer/scenario-1\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request.post(\"/rest/multer/scenario-1\").attach(\"media\", `${rootDir}/../data/file.txt`).expect(201);\n\n expect(result.text).toEqual(\"file.txt\");\n });\n\n it(\"should throw an exception when there is no file\", async () => {\n const result = await request.post(\"/rest/multer/scenario-1\").expect(400);\n\n expect(result.body).toEqual({\n name: \"REQUIRED_VALIDATION_ERROR\",\n message: \"Bad request on parameter \\\"request.files.media.0\\\".\\nIt should have required parameter 'media.0'\",\n status: 400,\n errors: [\n {\n dataPath: \"\",\n keyword: \"required\",\n message: \"It should have required parameter 'media.0'\",\n modelName: \"files\",\n params: {missingProperty: \"media.0\"},\n schemaPath: \"#/required\"\n }\n ]\n });\n });\n });\n describe(\"Scenario 2: POST /rest/multer/scenario-2\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request\n .post(\"/rest/multer/scenario-2\")\n .attach(\"media\", `${rootDir}/../data/file.txt`)\n .field({\n form_id: \"form_id\"\n })\n .expect(201);\n\n expect(result.body).toEqual({file: \"file.txt\", formId: \"form_id\"});\n });\n });\n describe(\"Scenario 3: POST /rest/multer/scenario-3\", () => {\n it(\"should upload file with multer\", async () => {\n const result = await request.post(\"/rest/multer/scenario-3\").attach(\"media\", `${rootDir}/../data/file.txt`).field({}).expect(201);\n\n expect(result.body).toEqual({\n file: \"file.txt\"\n });\n\n // filterFilter is called\n expect(fileFilterStub).toBeCalled();\n });\n });\n}\n"]}
@@ -2,11 +2,14 @@ import { __decorate, __metadata, __param } from "tslib";
2
2
  import { Context, Controller, Get, getContext, PathParams, PlatformResponse, PlatformTest, Post, Res } from "@tsed/common";
3
3
  import { CollectionOf, ContentType, Enum, ForwardGroups, Groups, Ignore, Name, Property, Required, Returns, Status } from "@tsed/schema";
4
4
  import axios from "axios";
5
+ import filedirname from "filedirname";
5
6
  import { createReadStream } from "fs";
6
7
  import { join } from "path";
7
8
  import { of } from "rxjs";
8
9
  import { agent } from "superagent";
9
10
  import SuperTest from "supertest";
11
+ // FIXME remove when esm is ready
12
+ const [, rootDir] = filedirname();
10
13
  class Base {
11
14
  ignoreMeBase;
12
15
  fooBase;
@@ -144,10 +147,10 @@ let TestResponseParamsCtrl = class TestResponseParamsCtrl {
144
147
  return of({ id: 1 });
145
148
  }
146
149
  testScenario7Stream() {
147
- return createReadStream(join(__dirname, "../data/response.data.json"));
150
+ return createReadStream(join(rootDir, "../data/response.data.json"));
148
151
  }
149
152
  async testScenario7bStream() {
150
- return createReadStream(join(__dirname, "../data/response.data.json"));
153
+ return createReadStream(join(rootDir, "../data/response.data.json"));
151
154
  }
152
155
  testScenario9Get() {
153
156
  return "value";
@@ -1 +1 @@
1
- {"version":3,"file":"testResponse.js","sourceRoot":"","sources":["../../../src/tests/testResponse.ts"],"names":[],"mappings":"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","sourcesContent":["import {Context, Controller, Get, getContext, PathParams, PlatformResponse, PlatformTest, Post, Res} from \"@tsed/common\";\nimport {CollectionOf, ContentType, Enum, ForwardGroups, Groups, Ignore, Name, Property, Required, Returns, Status} from \"@tsed/schema\";\nimport axios from \"axios\";\nimport {createReadStream} from \"fs\";\nimport {join} from \"path\";\nimport {of} from \"rxjs\";\nimport {agent, SuperAgentStatic} from \"superagent\";\nimport SuperTest from \"supertest\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\n\nclass Base {\n @Ignore()\n ignoreMeBase: string;\n\n @Property()\n fooBase: string;\n}\n\nclass MyModel extends Base {\n @Property()\n foo: string;\n\n @Ignore()\n ignoreMe: string;\n\n @Ignore((value, ctx) => ctx.endpoint)\n ignoreMe2: string;\n}\n\nclass EmptyModel {\n raw: any;\n affected?: number | null;\n}\n\nexport enum EnumValue {\n One = \"one\",\n Two = \"two\"\n}\n\nexport class NestedEnum {\n @Required()\n @Enum(EnumValue)\n value: EnumValue;\n}\n\nexport class TestNestedEnum {\n @Property()\n nested: NestedEnum;\n}\n\nexport class ModelGroup {\n @Property()\n id: string;\n\n @Groups(\"!creation\")\n groups: string;\n}\n\nclass TeamModel {\n @Required()\n @Name(\"teamName\")\n name: string;\n}\n\nclass TeamsModel {\n @Required()\n @CollectionOf(TeamModel)\n @ForwardGroups()\n teams: TeamModel[];\n}\n\nclass AllowedModel {\n @Property()\n id: string;\n\n @Property()\n description: string;\n\n @Groups(\"summary\")\n prop1: string; // not display by default\n\n @Groups(\"details\")\n prop2: string; // not display by default\n\n @Groups(\"admin\")\n sensitiveProp: string; // not displayed because it's a sensitive props\n}\n\n@Controller(\"/response\")\nclass TestResponseParamsCtrl {\n @Get(\"/scenario1/:id\")\n public testScenario1Get(@PathParams(\"id\") id: number) {\n return `hello-${id}`;\n }\n\n @Post(\"/scenario3/:id?\")\n @Status(204)\n public testScenario3EmptyResponse(@PathParams(\"id\") id: number, @Context() ctx: Context) {\n if (id) {\n return;\n }\n\n ctx.response.status(201);\n\n return {\n id: 1\n };\n }\n\n @Get(\"/scenario5\")\n async testScenario5Promise() {\n await new Promise((resolve) => {\n resolve(undefined);\n });\n\n return {\n id: 1\n };\n }\n\n @Get(\"/scenario6\")\n testScenario6Observable() {\n return of({id: 1});\n }\n\n @Get(\"/scenario6b\")\n async testScenario6bObservable() {\n return of({id: 1});\n }\n\n @Get(\"/scenario7\")\n @ContentType(\"application/json\")\n testScenario7Stream() {\n return createReadStream(join(__dirname, \"../data/response.data.json\"));\n }\n\n @Get(\"/scenario7b\")\n @ContentType(\"application/json\")\n async testScenario7bStream() {\n return createReadStream(join(__dirname, \"../data/response.data.json\"));\n }\n\n @Get(\"/scenario9/static\")\n public testScenario9Get(): string {\n return \"value\";\n }\n\n @Get(\"/scenario9/:id\")\n public testScenario9WithDynamicParam(@PathParams(\"id\") id: number): string {\n return \"value\" + id;\n }\n\n @Get(\"/scenario10\")\n public testScenario10() {\n const model = new MyModel();\n model.foo = \"foo\";\n model.ignoreMe = \"ignoreMe\";\n model.ignoreMe2 = \"ignoreMe2\";\n model.fooBase = \"fooBase\";\n model.ignoreMeBase = \"ignoreMeBase\";\n\n return model;\n }\n\n @Get(\"/scenario11\")\n testScenario11() {\n const t = new EmptyModel();\n\n t.raw = 1;\n t.affected = 1;\n\n return t;\n }\n\n @Get(\"/scenario12\")\n testScenario12(@Res() res: PlatformResponse) {\n res.attachment(\"filename\");\n\n return Buffer.from(\"Hello\");\n }\n\n @Get(\"/scenario13\")\n async testScenario13(@Res() res: PlatformResponse) {\n const http: SuperAgentStatic = agent();\n\n const image_res = await http.get(\"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png\");\n\n res.setHeader(\"Content-Disposition\", \"inline;filename=googlelogo_color_272x92dp.png;\");\n res.setHeader(\"X-Content-Type-Options\", \"nosniff\");\n res.setHeader(\"Content-Type\", \"image/png\");\n\n return image_res.body;\n }\n\n @Get(\"/scenario14\")\n public scenario14() {\n return {\n jsonexample: 1\n };\n }\n\n @Get(\"/scenario15a\")\n testScenario15a() {\n return axios.get(`https://tsed.io/api.json`, {\n responseType: \"json\"\n });\n }\n\n @Get(\"/scenario15b\")\n async testScenario15b() {\n return axios.get(`https://api.tsed.io/rest/github/typed/test`, {\n responseType: \"json\"\n });\n }\n\n @Get(\"/scenario16\")\n async testScenario16(): Promise<TestNestedEnum> {\n const test = new TestNestedEnum();\n const nested = new NestedEnum();\n nested.value = EnumValue.One;\n test.nested = nested;\n return test;\n }\n\n @Get(\"/scenario17\")\n @Returns(201, ModelGroup).Groups(\"creation\")\n async testScenario17(): Promise<ModelGroup> {\n const model = new ModelGroup();\n model.id = \"id\";\n model.groups = \"groups\";\n\n return model;\n }\n\n @Get(\"/scenario18\")\n @Returns(200, TeamsModel)\n testScenario18() {\n const data = new TeamsModel();\n const team: any = {};\n team.name = \"name\";\n data.teams = [team];\n\n return data;\n }\n\n @Get(\"/scenario19\")\n @Returns(200, AllowedModel).Groups(\"!admin\").AllowedGroups(\"summary\", \"details\")\n async testScenario19(): Promise<AllowedModel> {\n const model = new AllowedModel();\n model.id = \"id\";\n model.prop1 = \"prop1\";\n model.description = \"description\";\n model.prop2 = \"prop2\";\n model.sensitiveProp = \"sensitiveProp\";\n\n return model;\n }\n\n @Get(\"/scenario20\")\n async testScenario20() {\n const $ctx = getContext();\n\n return {id: $ctx?.request.query.id};\n }\n}\n\nexport function testResponse(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [TestResponseParamsCtrl]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n\n describe(\"Scenario1: return the id (classic)\", () => {\n describe(\"GET /rest/response/scenario1/:id\", () => {\n it(\"should return the id + test\", async () => {\n const response = await request.get(\"/rest/response/scenario1/10\").expect(200);\n\n expect(response.text).toEqual(\"hello-10\");\n });\n });\n });\n\n describe(\"Scenario3: when response is empty or created\", () => {\n describe(\"GET /rest/response/scenario3/:id?\", () => {\n it(\"should return nothing with a 204 status\", async () => {\n const response = await request.post(\"/rest/response/scenario3/10\").expect(204);\n\n expect(response.text).toEqual(\"\");\n });\n\n it(\"should return a body\", async () => {\n const response = await request.post(\"/rest/response/scenario3\").expect(201);\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario5: when endpoint response from promise\", () => {\n describe(\"GET /rest/response/scenario5\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario5\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario6: when endpoint return an observable\", () => {\n describe(\"GET /rest/response/scenario6\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario6\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n\n describe(\"GET /rest/response/scenario6b\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario6b\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario7: when endpoint return a stream\", () => {\n describe(\"GET /rest/response/scenario7\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario7\");\n\n expect(response.body).toEqual({id: \"1\"});\n });\n });\n\n describe(\"GET /rest/response/scenario7b\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario7b\");\n\n expect(response.body).toEqual({id: \"1\"});\n });\n });\n });\n\n describe(\"Scenario9: routes without parameters must be defined first\", () => {\n describe(\"GET /rest/response/scenario9/static\", () => {\n it(\"should return the test\", async () => {\n const response = await request.get(\"/rest/response/scenario9/static\").expect(200);\n\n expect(response.text).toEqual(\"value\");\n });\n });\n\n describe(\"GET /rest/response/scenario9/:dynamic\", () => {\n it(\"should return the test + id\", async () => {\n const response = await request.get(\"/rest/response/scenario9/10\").expect(200);\n\n expect(response.text).toEqual(\"value10\");\n });\n });\n\n describe(\"GET /rest/response/scenario9/:dynamic\", () => {\n it(\"should throw a badRequest when path params isn't set as number\", async () => {\n const response = await request.get(\"/rest/response/scenario9/kkk\").expect(400);\n\n expect(response.body).toEqual({\n errors: [\n {\n data: \"kkk\",\n dataPath: \"\",\n instancePath: \"\",\n keyword: \"type\",\n message: \"must be number\",\n params: {\n type: \"number\"\n },\n schemaPath: \"#/type\"\n }\n ],\n message: 'Bad request on parameter \"request.path.id\".\\nValue must be number. Given value: \"kkk\"',\n name: \"AJV_VALIDATION_ERROR\",\n status: 400\n });\n });\n });\n });\n\n describe(\"Scenario10: return a model with ignored props\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario10\");\n\n expect(response.body).toEqual({\n foo: \"foo\",\n fooBase: \"fooBase\"\n });\n });\n });\n\n describe(\"Scenario11: return models without props\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario11\");\n\n expect(response.body).toEqual({\n affected: 1,\n raw: 1\n });\n });\n });\n\n describe(\"Scenario12: Return buffer\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario12\");\n\n expect(response.headers[\"content-disposition\"]).toEqual('attachment; filename=\"filename\"');\n expect(response.headers[\"content-type\"]).toContain(\"application/octet-stream\");\n expect(response.headers[\"content-length\"]).toEqual(\"5\");\n expect(response.body.toString()).toEqual(\"Hello\");\n });\n });\n\n describe(\"Scenario13: Return buffer\", () => {\n it(\"should return image\", async () => {\n const response = await request.get(\"/rest/response/scenario13\");\n\n expect(response.headers[\"content-disposition\"]).toEqual(\"inline;filename=googlelogo_color_272x92dp.png;\");\n expect(response.headers[\"content-type\"]).toContain(\"image/png\");\n expect(response.headers[\"content-length\"]).toEqual(\"5969\");\n });\n });\n\n describe(\"Scenario14: Return application/json when Accept is */*\", () => {\n it(\"should return a */* content-type\", async () => {\n const response = await request\n .get(\"/rest/response/scenario14\")\n .set(\"Accept\", \"*/*\")\n .set(\"Content-Type\", \"application/json\")\n .expect(200);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n expect(response.body).toEqual({\n jsonexample: 1\n });\n });\n });\n describe(\"Scenario15: Use axios as proxy\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario15a\").expect(200);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n });\n\n it(\"should return the response (401)\", async () => {\n const response = await request.get(\"/rest/response/scenario15b\").expect(401);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n });\n });\n\n describe(\"Scenario16: Return response with nested enum\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario16\").expect(200);\n\n expect(response.body).toEqual({nested: {value: \"one\"}});\n });\n });\n\n describe(\"Scenario17: Return response with groups on 201\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario17\").expect(201);\n\n expect(response.body).toEqual({id: \"id\"});\n });\n });\n\n describe(\"Scenario18: Return data with alias\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario18\").expect(200);\n\n expect(response.body).toEqual({\n teams: [\n {\n teamName: \"name\"\n }\n ]\n });\n });\n });\n\n describe(\"Scenario19: includes options\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario19\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop1: \"prop1\",\n prop2: \"prop2\"\n });\n });\n it(\"should return the response (200 + [summary])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + [summary, details])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary&includes=details\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + [summary, details, admin])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary&includes=details&includes=admin\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + 'summary,details,admin')\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary,details,admin\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n });\n\n describe(\"Scenario20: should return query data from Context\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario20?id=id\").expect(200);\n\n expect(response.body).toEqual({id: \"id\"});\n });\n });\n}\n"]}
1
+ {"version":3,"file":"testResponse.js","sourceRoot":"","sources":["../../../src/tests/testResponse.ts"],"names":[],"mappings":"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","sourcesContent":["import {Context, Controller, Get, getContext, PathParams, PlatformResponse, PlatformTest, Post, Res} from \"@tsed/common\";\nimport {CollectionOf, ContentType, Enum, ForwardGroups, Groups, Ignore, Name, Property, Required, Returns, Status} from \"@tsed/schema\";\nimport axios from \"axios\";\nimport filedirname from \"filedirname\";\nimport {createReadStream} from \"fs\";\nimport {join} from \"path\";\nimport {of} from \"rxjs\";\nimport {agent, SuperAgentStatic} from \"superagent\";\nimport SuperTest from \"supertest\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\n// FIXME remove when esm is ready\nconst [, rootDir] = filedirname();\n\nclass Base {\n @Ignore()\n ignoreMeBase: string;\n\n @Property()\n fooBase: string;\n}\n\nclass MyModel extends Base {\n @Property()\n foo: string;\n\n @Ignore()\n ignoreMe: string;\n\n @Ignore((value, ctx) => ctx.endpoint)\n ignoreMe2: string;\n}\n\nclass EmptyModel {\n raw: any;\n affected?: number | null;\n}\n\nexport enum EnumValue {\n One = \"one\",\n Two = \"two\"\n}\n\nexport class NestedEnum {\n @Required()\n @Enum(EnumValue)\n value: EnumValue;\n}\n\nexport class TestNestedEnum {\n @Property()\n nested: NestedEnum;\n}\n\nexport class ModelGroup {\n @Property()\n id: string;\n\n @Groups(\"!creation\")\n groups: string;\n}\n\nclass TeamModel {\n @Required()\n @Name(\"teamName\")\n name: string;\n}\n\nclass TeamsModel {\n @Required()\n @CollectionOf(TeamModel)\n @ForwardGroups()\n teams: TeamModel[];\n}\n\nclass AllowedModel {\n @Property()\n id: string;\n\n @Property()\n description: string;\n\n @Groups(\"summary\")\n prop1: string; // not display by default\n\n @Groups(\"details\")\n prop2: string; // not display by default\n\n @Groups(\"admin\")\n sensitiveProp: string; // not displayed because it's a sensitive props\n}\n\n@Controller(\"/response\")\nclass TestResponseParamsCtrl {\n @Get(\"/scenario1/:id\")\n public testScenario1Get(@PathParams(\"id\") id: number) {\n return `hello-${id}`;\n }\n\n @Post(\"/scenario3/:id?\")\n @Status(204)\n public testScenario3EmptyResponse(@PathParams(\"id\") id: number, @Context() ctx: Context) {\n if (id) {\n return;\n }\n\n ctx.response.status(201);\n\n return {\n id: 1\n };\n }\n\n @Get(\"/scenario5\")\n async testScenario5Promise() {\n await new Promise((resolve) => {\n resolve(undefined);\n });\n\n return {\n id: 1\n };\n }\n\n @Get(\"/scenario6\")\n testScenario6Observable() {\n return of({id: 1});\n }\n\n @Get(\"/scenario6b\")\n async testScenario6bObservable() {\n return of({id: 1});\n }\n\n @Get(\"/scenario7\")\n @ContentType(\"application/json\")\n testScenario7Stream() {\n return createReadStream(join(rootDir, \"../data/response.data.json\"));\n }\n\n @Get(\"/scenario7b\")\n @ContentType(\"application/json\")\n async testScenario7bStream() {\n return createReadStream(join(rootDir, \"../data/response.data.json\"));\n }\n\n @Get(\"/scenario9/static\")\n public testScenario9Get(): string {\n return \"value\";\n }\n\n @Get(\"/scenario9/:id\")\n public testScenario9WithDynamicParam(@PathParams(\"id\") id: number): string {\n return \"value\" + id;\n }\n\n @Get(\"/scenario10\")\n public testScenario10() {\n const model = new MyModel();\n model.foo = \"foo\";\n model.ignoreMe = \"ignoreMe\";\n model.ignoreMe2 = \"ignoreMe2\";\n model.fooBase = \"fooBase\";\n model.ignoreMeBase = \"ignoreMeBase\";\n\n return model;\n }\n\n @Get(\"/scenario11\")\n testScenario11() {\n const t = new EmptyModel();\n\n t.raw = 1;\n t.affected = 1;\n\n return t;\n }\n\n @Get(\"/scenario12\")\n testScenario12(@Res() res: PlatformResponse) {\n res.attachment(\"filename\");\n\n return Buffer.from(\"Hello\");\n }\n\n @Get(\"/scenario13\")\n async testScenario13(@Res() res: PlatformResponse) {\n const http: SuperAgentStatic = agent();\n\n const image_res = await http.get(\"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png\");\n\n res.setHeader(\"Content-Disposition\", \"inline;filename=googlelogo_color_272x92dp.png;\");\n res.setHeader(\"X-Content-Type-Options\", \"nosniff\");\n res.setHeader(\"Content-Type\", \"image/png\");\n\n return image_res.body;\n }\n\n @Get(\"/scenario14\")\n public scenario14() {\n return {\n jsonexample: 1\n };\n }\n\n @Get(\"/scenario15a\")\n testScenario15a() {\n return axios.get(`https://tsed.io/api.json`, {\n responseType: \"json\"\n });\n }\n\n @Get(\"/scenario15b\")\n async testScenario15b() {\n return axios.get(`https://api.tsed.io/rest/github/typed/test`, {\n responseType: \"json\"\n });\n }\n\n @Get(\"/scenario16\")\n async testScenario16(): Promise<TestNestedEnum> {\n const test = new TestNestedEnum();\n const nested = new NestedEnum();\n nested.value = EnumValue.One;\n test.nested = nested;\n return test;\n }\n\n @Get(\"/scenario17\")\n @Returns(201, ModelGroup).Groups(\"creation\")\n async testScenario17(): Promise<ModelGroup> {\n const model = new ModelGroup();\n model.id = \"id\";\n model.groups = \"groups\";\n\n return model;\n }\n\n @Get(\"/scenario18\")\n @Returns(200, TeamsModel)\n testScenario18() {\n const data = new TeamsModel();\n const team: any = {};\n team.name = \"name\";\n data.teams = [team];\n\n return data;\n }\n\n @Get(\"/scenario19\")\n @Returns(200, AllowedModel).Groups(\"!admin\").AllowedGroups(\"summary\", \"details\")\n async testScenario19(): Promise<AllowedModel> {\n const model = new AllowedModel();\n model.id = \"id\";\n model.prop1 = \"prop1\";\n model.description = \"description\";\n model.prop2 = \"prop2\";\n model.sensitiveProp = \"sensitiveProp\";\n\n return model;\n }\n\n @Get(\"/scenario20\")\n async testScenario20() {\n const $ctx = getContext();\n\n return {id: $ctx?.request.query.id};\n }\n}\n\nexport function testResponse(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [TestResponseParamsCtrl]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n\n describe(\"Scenario1: return the id (classic)\", () => {\n describe(\"GET /rest/response/scenario1/:id\", () => {\n it(\"should return the id + test\", async () => {\n const response = await request.get(\"/rest/response/scenario1/10\").expect(200);\n\n expect(response.text).toEqual(\"hello-10\");\n });\n });\n });\n\n describe(\"Scenario3: when response is empty or created\", () => {\n describe(\"GET /rest/response/scenario3/:id?\", () => {\n it(\"should return nothing with a 204 status\", async () => {\n const response = await request.post(\"/rest/response/scenario3/10\").expect(204);\n\n expect(response.text).toEqual(\"\");\n });\n\n it(\"should return a body\", async () => {\n const response = await request.post(\"/rest/response/scenario3\").expect(201);\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario5: when endpoint response from promise\", () => {\n describe(\"GET /rest/response/scenario5\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario5\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario6: when endpoint return an observable\", () => {\n describe(\"GET /rest/response/scenario6\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario6\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n\n describe(\"GET /rest/response/scenario6b\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario6b\");\n\n expect(response.body).toEqual({id: 1});\n });\n });\n });\n\n describe(\"Scenario7: when endpoint return a stream\", () => {\n describe(\"GET /rest/response/scenario7\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario7\");\n\n expect(response.body).toEqual({id: \"1\"});\n });\n });\n\n describe(\"GET /rest/response/scenario7b\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario7b\");\n\n expect(response.body).toEqual({id: \"1\"});\n });\n });\n });\n\n describe(\"Scenario9: routes without parameters must be defined first\", () => {\n describe(\"GET /rest/response/scenario9/static\", () => {\n it(\"should return the test\", async () => {\n const response = await request.get(\"/rest/response/scenario9/static\").expect(200);\n\n expect(response.text).toEqual(\"value\");\n });\n });\n\n describe(\"GET /rest/response/scenario9/:dynamic\", () => {\n it(\"should return the test + id\", async () => {\n const response = await request.get(\"/rest/response/scenario9/10\").expect(200);\n\n expect(response.text).toEqual(\"value10\");\n });\n });\n\n describe(\"GET /rest/response/scenario9/:dynamic\", () => {\n it(\"should throw a badRequest when path params isn't set as number\", async () => {\n const response = await request.get(\"/rest/response/scenario9/kkk\").expect(400);\n\n expect(response.body).toEqual({\n errors: [\n {\n data: \"kkk\",\n dataPath: \"\",\n instancePath: \"\",\n keyword: \"type\",\n message: \"must be number\",\n params: {\n type: \"number\"\n },\n schemaPath: \"#/type\"\n }\n ],\n message: 'Bad request on parameter \"request.path.id\".\\nValue must be number. Given value: \"kkk\"',\n name: \"AJV_VALIDATION_ERROR\",\n status: 400\n });\n });\n });\n });\n\n describe(\"Scenario10: return a model with ignored props\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario10\");\n\n expect(response.body).toEqual({\n foo: \"foo\",\n fooBase: \"fooBase\"\n });\n });\n });\n\n describe(\"Scenario11: return models without props\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario11\");\n\n expect(response.body).toEqual({\n affected: 1,\n raw: 1\n });\n });\n });\n\n describe(\"Scenario12: Return buffer\", () => {\n it(\"should return a body\", async () => {\n const response = await request.get(\"/rest/response/scenario12\");\n\n expect(response.headers[\"content-disposition\"]).toEqual('attachment; filename=\"filename\"');\n expect(response.headers[\"content-type\"]).toContain(\"application/octet-stream\");\n expect(response.headers[\"content-length\"]).toEqual(\"5\");\n expect(response.body.toString()).toEqual(\"Hello\");\n });\n });\n\n describe(\"Scenario13: Return buffer\", () => {\n it(\"should return image\", async () => {\n const response = await request.get(\"/rest/response/scenario13\");\n\n expect(response.headers[\"content-disposition\"]).toEqual(\"inline;filename=googlelogo_color_272x92dp.png;\");\n expect(response.headers[\"content-type\"]).toContain(\"image/png\");\n expect(response.headers[\"content-length\"]).toEqual(\"5969\");\n });\n });\n\n describe(\"Scenario14: Return application/json when Accept is */*\", () => {\n it(\"should return a */* content-type\", async () => {\n const response = await request\n .get(\"/rest/response/scenario14\")\n .set(\"Accept\", \"*/*\")\n .set(\"Content-Type\", \"application/json\")\n .expect(200);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n expect(response.body).toEqual({\n jsonexample: 1\n });\n });\n });\n describe(\"Scenario15: Use axios as proxy\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario15a\").expect(200);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n });\n\n it(\"should return the response (401)\", async () => {\n const response = await request.get(\"/rest/response/scenario15b\").expect(401);\n\n expect(response.headers[\"content-type\"]).toEqual(\"application/json; charset=utf-8\");\n });\n });\n\n describe(\"Scenario16: Return response with nested enum\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario16\").expect(200);\n\n expect(response.body).toEqual({nested: {value: \"one\"}});\n });\n });\n\n describe(\"Scenario17: Return response with groups on 201\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario17\").expect(201);\n\n expect(response.body).toEqual({id: \"id\"});\n });\n });\n\n describe(\"Scenario18: Return data with alias\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario18\").expect(200);\n\n expect(response.body).toEqual({\n teams: [\n {\n teamName: \"name\"\n }\n ]\n });\n });\n });\n\n describe(\"Scenario19: includes options\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario19\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop1: \"prop1\",\n prop2: \"prop2\"\n });\n });\n it(\"should return the response (200 + [summary])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + [summary, details])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary&includes=details\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + [summary, details, admin])\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary&includes=details&includes=admin\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n it(\"should return the response (200 + 'summary,details,admin')\", async () => {\n const response = await request.get(\"/rest/response/scenario19?includes=summary,details,admin\").expect(200);\n\n expect(response.body).toEqual({\n description: \"description\",\n id: \"id\",\n prop2: \"prop2\",\n prop1: \"prop1\"\n });\n });\n });\n\n describe(\"Scenario20: should return query data from Context\", () => {\n it(\"should return the response (200)\", async () => {\n const response = await request.get(\"/rest/response/scenario20?id=id\").expect(200);\n\n expect(response.body).toEqual({id: \"id\"});\n });\n });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/platform-test-sdk",
3
- "version": "7.18.2",
3
+ "version": "7.18.3-rc.1",
4
4
  "description": "Package to test platform adapter integration with Ts.ED",
5
5
  "private": false,
6
6
  "source": "./src/index.ts",
@@ -27,18 +27,18 @@
27
27
  "Adapter"
28
28
  ],
29
29
  "dependencies": {
30
- "@tsed/ajv": "7.18.2",
31
- "@tsed/common": "7.18.2",
32
- "@tsed/core": "7.18.2",
33
- "@tsed/di": "7.18.2",
34
- "@tsed/json-mapper": "7.18.2",
30
+ "@tsed/ajv": "7.18.3-rc.1",
31
+ "@tsed/common": "7.18.3-rc.1",
32
+ "@tsed/core": "7.18.3-rc.1",
33
+ "@tsed/di": "7.18.3-rc.1",
34
+ "@tsed/json-mapper": "7.18.3-rc.1",
35
35
  "@tsed/logger": "6.2.2",
36
- "@tsed/platform-cache": "7.18.2",
37
- "@tsed/platform-params": "7.18.2",
38
- "@tsed/platform-router": "7.18.2",
39
- "@tsed/platform-views": "7.18.2",
40
- "@tsed/schema": "7.18.2",
41
- "@tsed/swagger": "7.18.2",
36
+ "@tsed/platform-cache": "7.18.3-rc.1",
37
+ "@tsed/platform-params": "7.18.3-rc.1",
38
+ "@tsed/platform-router": "7.18.3-rc.1",
39
+ "@tsed/platform-views": "7.18.3-rc.1",
40
+ "@tsed/schema": "7.18.3-rc.1",
41
+ "@tsed/swagger": "7.18.3-rc.1",
42
42
  "ajv": "^8.12.0",
43
43
  "axios": "^1.3.0"
44
44
  },
@@ -50,5 +50,8 @@
50
50
  },
51
51
  "homepage": "https://github.com/tsedio/tsed/tree/production/packages/platform/platform-test-sdk",
52
52
  "author": "Romain Lenzotti",
53
- "license": "MIT"
53
+ "license": "MIT",
54
+ "publishConfig": {
55
+ "tag": "rc"
56
+ }
54
57
  }
@@ -1,10 +1,14 @@
1
1
  import {BodyParams, Controller, MulterOptions, MultipartFile, PlatformMulterFile, PlatformTest, Post} from "@tsed/common";
2
2
  import {CollectionOf, Property, Required, Status} from "@tsed/schema";
3
3
  import {Request} from "express";
4
+ import filedirname from "filedirname";
4
5
  import multer, {FileFilterCallback} from "multer";
5
6
  import SuperTest from "supertest";
6
7
  import {PlatformTestingSdkOpts} from "../interfaces";
7
8
 
9
+ // FIXME remove when esm is ready
10
+ const [, rootDir] = filedirname();
11
+
8
12
  export class Task {
9
13
  @Property()
10
14
  id: string;
@@ -32,7 +36,7 @@ function getFileConfig(): any {
32
36
  return {
33
37
  storage: multer.diskStorage({
34
38
  destination: (req: Express.Request, _fileItem, cb) => {
35
- const path = `${__dirname}/../.tmp`;
39
+ const path = `${rootDir}/../.tmp`;
36
40
  cb(null, path);
37
41
  }
38
42
  }),
@@ -44,14 +48,14 @@ function getFileConfig(): any {
44
48
  export class TestMulterController {
45
49
  @Post("/scenario-1")
46
50
  @Status(201)
47
- @MulterOptions({dest: `${__dirname}/../.tmp`})
51
+ @MulterOptions({dest: `${rootDir}/../.tmp`})
48
52
  uploadWithName(@Required() @MultipartFile("media") media: PlatformMulterFile) {
49
53
  return media.originalname;
50
54
  }
51
55
 
52
56
  @Post("/scenario-2")
53
57
  @Status(201)
54
- @MulterOptions({dest: `${__dirname}/../.tmp`})
58
+ @MulterOptions({dest: `${rootDir}/../.tmp`})
55
59
  uploadWithPayload(@MultipartFile("media") media: PlatformMulterFile, @BodyParams("form_id") formId: string) {
56
60
  return {
57
61
  file: media.originalname,
@@ -87,7 +91,7 @@ export function testMulter(options: PlatformTestingSdkOpts) {
87
91
  beforeAll(() => jest.resetAllMocks());
88
92
  describe("Scenario 1: POST /rest/multer/scenario-1", () => {
89
93
  it("should upload file with multer", async () => {
90
- const result = await request.post("/rest/multer/scenario-1").attach("media", `${__dirname}/../data/file.txt`).expect(201);
94
+ const result = await request.post("/rest/multer/scenario-1").attach("media", `${rootDir}/../data/file.txt`).expect(201);
91
95
 
92
96
  expect(result.text).toEqual("file.txt");
93
97
  });
@@ -116,7 +120,7 @@ export function testMulter(options: PlatformTestingSdkOpts) {
116
120
  it("should upload file with multer", async () => {
117
121
  const result = await request
118
122
  .post("/rest/multer/scenario-2")
119
- .attach("media", `${__dirname}/../data/file.txt`)
123
+ .attach("media", `${rootDir}/../data/file.txt`)
120
124
  .field({
121
125
  form_id: "form_id"
122
126
  })
@@ -127,7 +131,7 @@ export function testMulter(options: PlatformTestingSdkOpts) {
127
131
  });
128
132
  describe("Scenario 3: POST /rest/multer/scenario-3", () => {
129
133
  it("should upload file with multer", async () => {
130
- const result = await request.post("/rest/multer/scenario-3").attach("media", `${__dirname}/../data/file.txt`).field({}).expect(201);
134
+ const result = await request.post("/rest/multer/scenario-3").attach("media", `${rootDir}/../data/file.txt`).field({}).expect(201);
131
135
 
132
136
  expect(result.body).toEqual({
133
137
  file: "file.txt"
@@ -1,12 +1,15 @@
1
1
  import {Context, Controller, Get, getContext, PathParams, PlatformResponse, PlatformTest, Post, Res} from "@tsed/common";
2
2
  import {CollectionOf, ContentType, Enum, ForwardGroups, Groups, Ignore, Name, Property, Required, Returns, Status} from "@tsed/schema";
3
3
  import axios from "axios";
4
+ import filedirname from "filedirname";
4
5
  import {createReadStream} from "fs";
5
6
  import {join} from "path";
6
7
  import {of} from "rxjs";
7
8
  import {agent, SuperAgentStatic} from "superagent";
8
9
  import SuperTest from "supertest";
9
10
  import {PlatformTestingSdkOpts} from "../interfaces";
11
+ // FIXME remove when esm is ready
12
+ const [, rootDir] = filedirname();
10
13
 
11
14
  class Base {
12
15
  @Ignore()
@@ -131,13 +134,13 @@ class TestResponseParamsCtrl {
131
134
  @Get("/scenario7")
132
135
  @ContentType("application/json")
133
136
  testScenario7Stream() {
134
- return createReadStream(join(__dirname, "../data/response.data.json"));
137
+ return createReadStream(join(rootDir, "../data/response.data.json"));
135
138
  }
136
139
 
137
140
  @Get("/scenario7b")
138
141
  @ContentType("application/json")
139
142
  async testScenario7bStream() {
140
- return createReadStream(join(__dirname, "../data/response.data.json"));
143
+ return createReadStream(join(rootDir, "../data/response.data.json"));
141
144
  }
142
145
 
143
146
  @Get("/scenario9/static")