@tsed/platform-test-sdk 7.13.4 → 7.13.5
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,7 +4,6 @@ exports.testSession = exports.SessionCtrl = exports.User = exports.UserCreation
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const common_1 = require("@tsed/common");
|
|
6
6
|
const exceptions_1 = require("@tsed/exceptions");
|
|
7
|
-
const mongoose_1 = require("@tsed/mongoose");
|
|
8
7
|
const schema_1 = require("@tsed/schema");
|
|
9
8
|
const supertest_1 = tslib_1.__importDefault(require("supertest"));
|
|
10
9
|
const util_1 = require("util");
|
|
@@ -18,10 +17,8 @@ tslib_1.__decorate([
|
|
|
18
17
|
tslib_1.__metadata("design:type", String)
|
|
19
18
|
], UserCreation.prototype, "name", void 0);
|
|
20
19
|
tslib_1.__decorate([
|
|
21
|
-
(0, mongoose_1.Indexed)(),
|
|
22
20
|
(0, schema_1.Required)(),
|
|
23
21
|
(0, schema_1.Email)(),
|
|
24
|
-
(0, mongoose_1.Unique)(),
|
|
25
22
|
(0, schema_1.Allow)(null),
|
|
26
23
|
tslib_1.__metadata("design:type", String)
|
|
27
24
|
], UserCreation.prototype, "email", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testSession.js","sourceRoot":"","sources":["../../../src/tests/testSession.ts"],"names":[],"mappings":";;;;AAAA,yCAAqG;AACrG,iDAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"testSession.js","sourceRoot":"","sources":["../../../src/tests/testSession.ts"],"names":[],"mappings":";;;;AAAA,yCAAqG;AACrG,iDAA0C;AAC1C,yCAA0F;AAC1F,kEAAkC;AAClC,+BAA+B;AAE/B,MAAa,YAAY;IAEvB,IAAI,CAAS;IAKb,KAAK,CAAS;IAKd,QAAQ,CAAS;CAClB;AAXC;IADC,IAAA,iBAAQ,GAAE;;0CACE;AAKb;IAHC,IAAA,iBAAQ,GAAE;IACV,IAAA,cAAK,GAAE;IACP,IAAA,cAAK,EAAC,IAAI,CAAC;;2CACE;AAKd;IAHC,IAAA,iBAAQ,GAAE;IACV,IAAA,kBAAS,EAAC,CAAC,CAAC;IACZ,IAAA,cAAK,EAAC,IAAI,CAAC;;8CACK;AAZnB,oCAaC;AAED,MAAa,IAAK,SAAQ,YAAY;CAGrC;AADC;IADC,IAAA,eAAM,GAAE;;sCACgB;AAF3B,oBAGC;AAGD,IAAa,WAAW,GAAxB,MAAa,WAAW;IAEtB,YAAY,CAAS;IAGrB,KAAK,CAAC,OAAO,CAAY,OAAY,EAAgB,IAAkB;QACrE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAEpB,OAAO,IAAI,CAAC;IACd,CAAC;IAID,KAAK,CAAC,QAAQ,CAAkB,IAAU;QACxC,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,qBAAQ,CAAC,gBAAgB,CAAC,CAAC;SACtC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAID,KAAK,CAAC,MAAM,CAAQ,GAAQ;QAC1B,QAAQ,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK,KAAK;gBACR,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;YAClC,KAAK,SAAS;gBACZ,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;gBAExB,OAAO,IAAA,gBAAS,EAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;SAC7D;IACH,CAAC;CACF,CAAA;AA/BC;IADC,IAAA,iBAAQ,EAAC,eAAe,CAAC;;iDACL;AAGrB;IADC,IAAA,aAAI,EAAC,UAAU,CAAC;IACF,mBAAA,IAAA,gBAAO,GAAE,CAAA;IAAgB,mBAAA,IAAA,mBAAU,GAAE,CAAA;;qDAAO,YAAY;;0CAItE;AAID;IAFC,IAAA,YAAG,EAAC,WAAW,CAAC;IAChB,IAAA,gBAAO,EAAC,GAAG,EAAE,IAAI,CAAC;IACH,mBAAA,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAA;;6CAAO,IAAI;;2CAMzC;AAID;IAFC,IAAA,YAAG,EAAC,SAAS,CAAC;IACd,IAAA,gBAAO,EAAC,GAAG,CAAC;IACC,mBAAA,IAAA,YAAG,GAAE,CAAA;;;;yCASlB;AAhCU,WAAW;IADvB,IAAA,mBAAU,EAAC,UAAU,CAAC;GACV,WAAW,CAiCvB;AAjCY,kCAAW;AAmCxB,SAAgB,WAAW,CAAC,OAA+B;IACzD,IAAI,OAA4C,CAAC;IACjD,SAAS,CACP,qBAAY,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;QACrC,GAAG,OAAO;QACV,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,WAAW,CAAC;SACvB;KACF,CAAC,CACH,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,mBAAS,CAAC,KAAK,CAAC,qBAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,qBAAY,CAAC,KAAK,CAAC,CAAC;IAE7B,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACvD,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAExD,MAAM,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC;gBAC/C,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;YAEH,aAAa;YACb,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEzE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gBAC5B,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AArCD,kCAqCC","sourcesContent":["import {BodyParams, Constant, Controller, Get, PlatformTest, Post, Req, Session} from \"@tsed/common\";\nimport {NotFound} from \"@tsed/exceptions\";\nimport {Allow, Email, Ignore, MinLength, Property, Required, Returns} from \"@tsed/schema\";\nimport SuperTest from \"supertest\";\nimport {promisify} from \"util\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\nexport class UserCreation {\n @Property()\n name: string;\n\n @Required()\n @Email()\n @Allow(null)\n email: string;\n\n @Required()\n @MinLength(6)\n @Allow(null)\n password: string;\n}\n\nexport class User extends UserCreation {\n @Ignore()\n declare password: string;\n}\n\n@Controller(\"/session\")\nexport class SessionCtrl {\n @Constant(\"PLATFORM_NAME\")\n platformName: string;\n\n @Post(\"/connect\")\n async connect(@Session() session: any, @BodyParams() user: UserCreation) {\n session.user = user;\n\n return user;\n }\n\n @Get(\"/userinfo\")\n @Returns(200, User)\n async userInfo(@Session(\"user\") user: User): Promise<User> {\n if (!user) {\n throw new NotFound(\"User not found\");\n }\n\n return user;\n }\n\n @Get(\"/logout\")\n @Returns(204)\n async logout(@Req() req: any) {\n switch (this.platformName) {\n case \"koa\":\n return (req.ctx.session = null);\n case \"express\":\n delete req.session.user;\n\n return promisify(req.session.destroy.bind(req.session))();\n }\n }\n}\n\nexport function testSession(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [SessionCtrl]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest.agent(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n\n describe(\"Scenario1: POST /rest/session/connected\", () => {\n it(\"should keep connected user in session and destroy session\", async () => {\n await request.get(\"/rest/session/userinfo\").expect(404);\n\n await request.post(\"/rest/session/connect\").send({\n name: \"name\",\n email: \"test@test.fr\",\n password: \"password1234\"\n });\n\n // @ts-ignore\n const response = await request.get(\"/rest/session/userinfo\").expect(200);\n\n expect(response.body).toEqual({\n email: \"test@test.fr\",\n name: \"name\"\n });\n\n await request.get(\"/rest/session/logout\").expect(204);\n await request.get(\"/rest/session/userinfo\").expect(404);\n });\n });\n}\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { __decorate, __metadata, __param } from "tslib";
|
|
2
2
|
import { BodyParams, Constant, Controller, Get, PlatformTest, Post, Req, Session } from "@tsed/common";
|
|
3
3
|
import { NotFound } from "@tsed/exceptions";
|
|
4
|
-
import { Indexed, Unique } from "@tsed/mongoose";
|
|
5
4
|
import { Allow, Email, Ignore, MinLength, Property, Required, Returns } from "@tsed/schema";
|
|
6
5
|
import SuperTest from "supertest";
|
|
7
6
|
import { promisify } from "util";
|
|
@@ -15,10 +14,8 @@ __decorate([
|
|
|
15
14
|
__metadata("design:type", String)
|
|
16
15
|
], UserCreation.prototype, "name", void 0);
|
|
17
16
|
__decorate([
|
|
18
|
-
Indexed(),
|
|
19
17
|
Required(),
|
|
20
18
|
Email(),
|
|
21
|
-
Unique(),
|
|
22
19
|
Allow(null),
|
|
23
20
|
__metadata("design:type", String)
|
|
24
21
|
], UserCreation.prototype, "email", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testSession.js","sourceRoot":"","sources":["../../../src/tests/testSession.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;AACrG,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"testSession.js","sourceRoot":"","sources":["../../../src/tests/testSession.ts"],"names":[],"mappings":"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","sourcesContent":["import {BodyParams, Constant, Controller, Get, PlatformTest, Post, Req, Session} from \"@tsed/common\";\nimport {NotFound} from \"@tsed/exceptions\";\nimport {Allow, Email, Ignore, MinLength, Property, Required, Returns} from \"@tsed/schema\";\nimport SuperTest from \"supertest\";\nimport {promisify} from \"util\";\nimport {PlatformTestingSdkOpts} from \"../interfaces\";\nexport class UserCreation {\n @Property()\n name: string;\n\n @Required()\n @Email()\n @Allow(null)\n email: string;\n\n @Required()\n @MinLength(6)\n @Allow(null)\n password: string;\n}\n\nexport class User extends UserCreation {\n @Ignore()\n declare password: string;\n}\n\n@Controller(\"/session\")\nexport class SessionCtrl {\n @Constant(\"PLATFORM_NAME\")\n platformName: string;\n\n @Post(\"/connect\")\n async connect(@Session() session: any, @BodyParams() user: UserCreation) {\n session.user = user;\n\n return user;\n }\n\n @Get(\"/userinfo\")\n @Returns(200, User)\n async userInfo(@Session(\"user\") user: User): Promise<User> {\n if (!user) {\n throw new NotFound(\"User not found\");\n }\n\n return user;\n }\n\n @Get(\"/logout\")\n @Returns(204)\n async logout(@Req() req: any) {\n switch (this.platformName) {\n case \"koa\":\n return (req.ctx.session = null);\n case \"express\":\n delete req.session.user;\n\n return promisify(req.session.destroy.bind(req.session))();\n }\n }\n}\n\nexport function testSession(options: PlatformTestingSdkOpts) {\n let request: SuperTest.SuperTest<SuperTest.Test>;\n beforeAll(\n PlatformTest.bootstrap(options.server, {\n ...options,\n mount: {\n \"/rest\": [SessionCtrl]\n }\n })\n );\n beforeAll(() => {\n request = SuperTest.agent(PlatformTest.callback());\n });\n afterAll(PlatformTest.reset);\n\n describe(\"Scenario1: POST /rest/session/connected\", () => {\n it(\"should keep connected user in session and destroy session\", async () => {\n await request.get(\"/rest/session/userinfo\").expect(404);\n\n await request.post(\"/rest/session/connect\").send({\n name: \"name\",\n email: \"test@test.fr\",\n password: \"password1234\"\n });\n\n // @ts-ignore\n const response = await request.get(\"/rest/session/userinfo\").expect(200);\n\n expect(response.body).toEqual({\n email: \"test@test.fr\",\n name: \"name\"\n });\n\n await request.get(\"/rest/session/logout\").expect(204);\n await request.get(\"/rest/session/userinfo\").expect(404);\n });\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/platform-test-sdk",
|
|
3
|
-
"version": "7.13.
|
|
3
|
+
"version": "7.13.5",
|
|
4
4
|
"description": "Package to test platform adapter integration with Ts.ED",
|
|
5
5
|
"private": false,
|
|
6
6
|
"source": "./src/index.ts",
|
|
@@ -27,10 +27,20 @@
|
|
|
27
27
|
"Adapter"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tsed/
|
|
31
|
-
"@tsed/
|
|
32
|
-
"@tsed/
|
|
33
|
-
"@tsed/
|
|
30
|
+
"@tsed/ajv": "7.13.5",
|
|
31
|
+
"@tsed/common": "7.13.5",
|
|
32
|
+
"@tsed/core": "7.13.5",
|
|
33
|
+
"@tsed/di": "7.13.5",
|
|
34
|
+
"@tsed/json-mapper": "7.13.5",
|
|
35
|
+
"@tsed/logger": "6.2.2",
|
|
36
|
+
"@tsed/platform-cache": "7.13.5",
|
|
37
|
+
"@tsed/platform-params": "7.13.5",
|
|
38
|
+
"@tsed/platform-router": "7.13.5",
|
|
39
|
+
"@tsed/platform-views": "7.13.5",
|
|
40
|
+
"@tsed/schema": "7.13.5",
|
|
41
|
+
"@tsed/swagger": "7.13.5",
|
|
42
|
+
"ajv": "^8.12.0",
|
|
43
|
+
"axios": "^1.3.0"
|
|
34
44
|
},
|
|
35
45
|
"devDependencies": {},
|
|
36
46
|
"peerDependencies": {},
|
package/src/tests/testSession.ts
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import {BodyParams, Constant, Controller, Get, PlatformTest, Post, Req, Session} from "@tsed/common";
|
|
2
2
|
import {NotFound} from "@tsed/exceptions";
|
|
3
|
-
import {Indexed, Unique} from "@tsed/mongoose";
|
|
4
3
|
import {Allow, Email, Ignore, MinLength, Property, Required, Returns} from "@tsed/schema";
|
|
5
4
|
import SuperTest from "supertest";
|
|
6
5
|
import {promisify} from "util";
|
|
7
6
|
import {PlatformTestingSdkOpts} from "../interfaces";
|
|
8
|
-
|
|
9
7
|
export class UserCreation {
|
|
10
8
|
@Property()
|
|
11
9
|
name: string;
|
|
12
10
|
|
|
13
|
-
@Indexed()
|
|
14
11
|
@Required()
|
|
15
12
|
@Email()
|
|
16
|
-
@Unique()
|
|
17
13
|
@Allow(null)
|
|
18
14
|
email: string;
|
|
19
15
|
|