@tsed/platform-test-sdk 7.18.1 → 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.
- package/lib/cjs/tests/testMulter.js +9 -6
- package/lib/cjs/tests/testMulter.js.map +1 -1
- package/lib/cjs/tests/testResponse.js +5 -2
- package/lib/cjs/tests/testResponse.js.map +1 -1
- package/lib/esm/tests/testMulter.js +9 -6
- package/lib/esm/tests/testMulter.js.map +1 -1
- package/lib/esm/tests/testResponse.js +5 -2
- package/lib/esm/tests/testResponse.js.map +1 -1
- package/package.json +16 -13
- package/src/tests/testMulter.ts +10 -6
- package/src/tests/testResponse.ts +5 -2
|
@@ -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 = `${
|
|
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: `${
|
|
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: `${
|
|
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", `${
|
|
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", `${
|
|
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", `${
|
|
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":";;;;AAAA,yCAA0H;AAC1H,yCAAsE;AAEtE,4DAAkD;AAClD,kEAAkC;AAGlC,MAAa,IAAI;IAEf,EAAE,CAAS;IAGX,KAAK,CAAS;CACf;AAJC;IADC,IAAA,iBAAQ,GAAE;;gCACA;AAGX;IADC,IAAA,iBAAQ,GAAE;;mCACG;AALhB,oBAMC;AAED,MAAa,KAAK;IAGhB,EAAE,CAAS;IAGX,KAAK,CAAS;CACf;AAJC;IAFC,IAAA,iBAAQ,GAAE;IACV,IAAA,iBAAQ,GAAE;;iCACA;AAGX;IADC,IAAA,qBAAY,EAAC,IAAI,CAAC;;oCACL;AANhB,sBAOC;AAED,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,gBAAM,CAAC,WAAW,CAAC;YAC1B,WAAW,EAAE,CAAC,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;gBACnD,MAAM,IAAI,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"testMulter.js","sourceRoot":"","sources":["../../../src/tests/testMulter.ts"],"names":[],"mappings":";;;;AAAA,yCAA0H;AAC1H,yCAAsE;AAEtE,sEAAsC;AACtC,4DAAkD;AAClD,kEAAkC;AAGlC,iCAAiC;AACjC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,IAAA,qBAAW,GAAE,CAAC;AAElC,MAAa,IAAI;IAEf,EAAE,CAAS;IAGX,KAAK,CAAS;CACf;AAJC;IADC,IAAA,iBAAQ,GAAE;;gCACA;AAGX;IADC,IAAA,iBAAQ,GAAE;;mCACG;AALhB,oBAMC;AAED,MAAa,KAAK;IAGhB,EAAE,CAAS;IAGX,KAAK,CAAS;CACf;AAJC;IAFC,IAAA,iBAAQ,GAAE;IACV,IAAA,iBAAQ,GAAE;;iCACA;AAGX;IADC,IAAA,qBAAY,EAAC,IAAI,CAAC;;oCACL;AANhB,sBAOC;AAED,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,gBAAM,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,IAAA,aAAI,EAAC,aAAa,CAAC;IACnB,IAAA,eAAM,EAAC,GAAG,CAAC;IACX,IAAA,sBAAa,EAAC,EAAC,IAAI,EAAE,GAAG,OAAO,UAAU,EAAC,CAAC;IAC5B,mBAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,mBAAA,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAA;;;;0DAEjD;AAKD;IAHC,IAAA,aAAI,EAAC,aAAa,CAAC;IACnB,IAAA,eAAM,EAAC,GAAG,CAAC;IACX,IAAA,sBAAa,EAAC,EAAC,IAAI,EAAE,GAAG,OAAO,UAAU,EAAC,CAAC;IACzB,mBAAA,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAA;IAA6B,mBAAA,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAA;;;;6DAK1F;AAKD;IAHC,IAAA,aAAI,EAAC,aAAa,CAAC;IACnB,IAAA,eAAM,EAAC,GAAG,CAAC;IACX,IAAA,sBAAa,EAAC,aAAa,EAAE,CAAC;IACZ,mBAAA,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAA;;;;6DAIxC;AAzBU,oBAAoB;IADhC,IAAA,mBAAU,EAAC,SAAS,CAAC;GACT,oBAAoB,CA0BhC;AA1BY,oDAAoB;AA4BjC,SAAgB,UAAU,CAAC,OAA+B;IACxD,IAAI,OAA4C,CAAC;IAEjD,SAAS,CACP,qBAAY,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,IAAA,mBAAS,EAAC,qBAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,qBAAY,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;AApED,gCAoEC","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)(
|
|
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)(
|
|
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 = `${
|
|
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: `${
|
|
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: `${
|
|
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", `${
|
|
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", `${
|
|
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", `${
|
|
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":";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,MAA4B,MAAM,QAAQ,CAAC;AAClD,OAAO,SAAS,MAAM,WAAW,CAAC;AAGlC,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,
|
|
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"]}
|
|
@@ -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(
|
|
150
|
+
return createReadStream(join(rootDir, "../data/response.data.json"));
|
|
148
151
|
}
|
|
149
152
|
async testScenario7bStream() {
|
|
150
|
-
return createReadStream(join(
|
|
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.1",
|
|
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.1",
|
|
31
|
-
"@tsed/common": "7.18.1",
|
|
32
|
-
"@tsed/core": "7.18.1",
|
|
33
|
-
"@tsed/di": "7.18.1",
|
|
34
|
-
"@tsed/json-mapper": "7.18.1",
|
|
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.1",
|
|
37
|
-
"@tsed/platform-params": "7.18.1",
|
|
38
|
-
"@tsed/platform-router": "7.18.1",
|
|
39
|
-
"@tsed/platform-views": "7.18.1",
|
|
40
|
-
"@tsed/schema": "7.18.1",
|
|
41
|
-
"@tsed/swagger": "7.18.1",
|
|
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
|
}
|
package/src/tests/testMulter.ts
CHANGED
|
@@ -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 = `${
|
|
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: `${
|
|
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: `${
|
|
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", `${
|
|
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", `${
|
|
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", `${
|
|
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(
|
|
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(
|
|
143
|
+
return createReadStream(join(rootDir, "../data/response.data.json"));
|
|
141
144
|
}
|
|
142
145
|
|
|
143
146
|
@Get("/scenario9/static")
|