@nest-boot/permission 7.1.0 → 7.1.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/dist/decorators/can.decorator.spec.js +4 -0
- package/dist/decorators/can.decorator.spec.js.map +1 -1
- package/dist/index.spec.d.ts +0 -0
- package/dist/index.spec.js +47 -0
- package/dist/index.spec.js.map +1 -0
- package/dist/permission.ability-builder.spec.d.ts +1 -0
- package/dist/permission.ability-builder.spec.js +16 -0
- package/dist/permission.ability-builder.spec.js.map +1 -0
- package/dist/permission.guard.spec.js +235 -16
- package/dist/permission.guard.spec.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +8 -7
|
@@ -42,5 +42,9 @@ describe("Can", () => {
|
|
|
42
42
|
value: options,
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
|
+
it("throws when positional arguments omit the subject", () => {
|
|
46
|
+
expect(() => (0, can_decorator_1.Can)(permission_action_enum_1.PermissionAction.READ)).toThrow("Permission subject is required.");
|
|
47
|
+
expect(common_1.SetMetadata).not.toHaveBeenCalled();
|
|
48
|
+
});
|
|
45
49
|
});
|
|
46
50
|
//# sourceMappingURL=can.decorator.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"can.decorator.spec.js","sourceRoot":"","sources":["../../src/decorators/can.decorator.spec.ts"],"names":[],"mappings":";;AAAA,2CAA6C;AAE7C,4EAAmE;AACnE,kEAAuD;AACvD,mDAAsC;AAEtC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;CACvD,CAAC,CAAC,CAAC;AAEJ,MAAM,OAAO;CAAG;AAEhB,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,oBAAW,CAAC,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,IAAA,mBAAG,EAAC,yCAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAClD,GAAG,EAAE,mCAAY;YACjB,KAAK,EAAE;gBACL,MAAM,EAAE,yCAAgB,CAAC,IAAI;gBAC7B,OAAO,EAAE,OAAO;aACjB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEjC,MAAM,CAAC,IAAA,mBAAG,EAAC,yCAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;YACzD,GAAG,EAAE,mCAAY;YACjB,KAAK,EAAE;gBACL,MAAM,EAAE,yCAAgB,CAAC,IAAI;gBAC7B,OAAO,EAAE,cAAc;aACxB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,yCAAgB,CAAC,MAAM;YAC/B,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,MAAM,CAAC,IAAA,mBAAG,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3B,GAAG,EAAE,mCAAY;YACjB,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"can.decorator.spec.js","sourceRoot":"","sources":["../../src/decorators/can.decorator.spec.ts"],"names":[],"mappings":";;AAAA,2CAA6C;AAE7C,4EAAmE;AACnE,kEAAuD;AACvD,mDAAsC;AAEtC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;CACvD,CAAC,CAAC,CAAC;AAEJ,MAAM,OAAO;CAAG;AAEhB,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,MAAM,CAAC,oBAAW,CAAC,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,IAAA,mBAAG,EAAC,yCAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAClD,GAAG,EAAE,mCAAY;YACjB,KAAK,EAAE;gBACL,MAAM,EAAE,yCAAgB,CAAC,IAAI;gBAC7B,OAAO,EAAE,OAAO;aACjB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEjC,MAAM,CAAC,IAAA,mBAAG,EAAC,yCAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;YACzD,GAAG,EAAE,mCAAY;YACjB,KAAK,EAAE;gBACL,MAAM,EAAE,yCAAgB,CAAC,IAAI;gBAC7B,OAAO,EAAE,cAAc;aACxB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,yCAAgB,CAAC,MAAM;YAC/B,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,MAAM,CAAC,IAAA,mBAAG,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3B,GAAG,EAAE,mCAAY;YACjB,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,mBAAG,EAAC,yCAAgB,CAAC,IAAa,CAAC,CAAC,CAAC,OAAO,CACvD,iCAAiC,CAClC,CAAC;QACF,MAAM,CAAC,oBAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
describe("public API", () => {
|
|
36
|
+
it("should export permission package APIs", async () => {
|
|
37
|
+
const api = await Promise.resolve().then(() => __importStar(require(".")));
|
|
38
|
+
expect(api.Can).toBeDefined();
|
|
39
|
+
expect(api.PermissionAction).toBeDefined();
|
|
40
|
+
expect(api.PermissionAbilityBuilder).toBeDefined();
|
|
41
|
+
expect(api.PermissionGuard).toBeDefined();
|
|
42
|
+
expect(api.PermissionModule).toBeDefined();
|
|
43
|
+
expect(api.can).toBeDefined();
|
|
44
|
+
expect(api.getPermissionAbility).toBeDefined();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../src/index.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,GAAG,GAAG,wDAAa,GAAG,GAAC,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const permission_action_enum_1 = require("./enums/permission-action.enum");
|
|
4
|
+
const permission_ability_builder_1 = require("./permission.ability-builder");
|
|
5
|
+
class Post {
|
|
6
|
+
}
|
|
7
|
+
describe("PermissionAbilityBuilder", () => {
|
|
8
|
+
it("should build a CASL mongo ability", () => {
|
|
9
|
+
const builder = new permission_ability_builder_1.PermissionAbilityBuilder();
|
|
10
|
+
builder.can(permission_action_enum_1.PermissionAction.READ, Post);
|
|
11
|
+
const ability = builder.build();
|
|
12
|
+
expect(ability.can(permission_action_enum_1.PermissionAction.READ, Post)).toBe(true);
|
|
13
|
+
expect(ability.can(permission_action_enum_1.PermissionAction.DELETE, Post)).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=permission.ability-builder.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.ability-builder.spec.js","sourceRoot":"","sources":["../src/permission.ability-builder.spec.ts"],"names":[],"mappings":";;AAAA,2EAAkE;AAClE,6EAAwE;AAExE,MAAM,IAAI;CAAG;AAEb,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAI,qDAAwB,EAAE,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,yCAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const request_context_1 = require("@nest-boot/request-context");
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
+
const core_1 = require("@nestjs/core");
|
|
6
|
+
const testing_1 = require("@nestjs/testing");
|
|
5
7
|
const permission_action_enum_1 = require("./enums/permission-action.enum");
|
|
6
8
|
const permission_constants_1 = require("./permission.constants");
|
|
7
9
|
const permission_guard_1 = require("./permission.guard");
|
|
10
|
+
const permission_module_definition_1 = require("./permission.module-definition");
|
|
8
11
|
const get_permission_ability_util_1 = require("./utils/get-permission-ability.util");
|
|
9
12
|
class Subject {
|
|
10
13
|
}
|
|
@@ -15,13 +18,13 @@ describe("PermissionGuard", () => {
|
|
|
15
18
|
Reflect.deleteMetadata(permission_constants_1.ROUTE_ARGS_METADATA, Controller, "handler");
|
|
16
19
|
});
|
|
17
20
|
it("allows requests without permission metadata", async () => {
|
|
18
|
-
const { guard, reflector, buildAbility } = createGuard();
|
|
21
|
+
const { guard, reflector, buildAbility } = await createGuard();
|
|
19
22
|
reflector.getAllAndOverride.mockReturnValue(undefined);
|
|
20
23
|
await expect(guard.canActivate(createContext())).resolves.toBe(true);
|
|
21
24
|
expect(buildAbility).not.toHaveBeenCalled();
|
|
22
25
|
});
|
|
23
26
|
it("throws when permission metadata exists but no ability is available", async () => {
|
|
24
|
-
const { guard, reflector, buildAbility } = createGuard();
|
|
27
|
+
const { guard, reflector, buildAbility } = await createGuard();
|
|
25
28
|
reflector.getAllAndOverride.mockReturnValue({
|
|
26
29
|
action: permission_action_enum_1.PermissionAction.READ,
|
|
27
30
|
subject: Subject,
|
|
@@ -37,7 +40,7 @@ describe("PermissionGuard", () => {
|
|
|
37
40
|
const ability = {
|
|
38
41
|
can: canMock,
|
|
39
42
|
};
|
|
40
|
-
const { guard, reflector, buildAbility, req, res } = createGuard(ability);
|
|
43
|
+
const { guard, reflector, buildAbility, req, res } = await createGuard(ability);
|
|
41
44
|
reflector.getAllAndOverride.mockReturnValue({
|
|
42
45
|
action: permission_action_enum_1.PermissionAction.UPDATE,
|
|
43
46
|
subject: Subject,
|
|
@@ -57,7 +60,7 @@ describe("PermissionGuard", () => {
|
|
|
57
60
|
const ability = {
|
|
58
61
|
can: canMock,
|
|
59
62
|
};
|
|
60
|
-
const { guard, reflector, buildAbility, req, res } = createGuard(ability);
|
|
63
|
+
const { guard, reflector, buildAbility, req, res } = await createGuard(ability);
|
|
61
64
|
const gqlContext = { req, res };
|
|
62
65
|
reflector.getAllAndOverride.mockReturnValue({
|
|
63
66
|
action: permission_action_enum_1.PermissionAction.UPDATE,
|
|
@@ -74,7 +77,7 @@ describe("PermissionGuard", () => {
|
|
|
74
77
|
const ability = {
|
|
75
78
|
can: canMock,
|
|
76
79
|
};
|
|
77
|
-
const { guard, reflector, buildAbility } = createGuard();
|
|
80
|
+
const { guard, reflector, buildAbility } = await createGuard();
|
|
78
81
|
reflector.getAllAndOverride.mockReturnValue({
|
|
79
82
|
action: permission_action_enum_1.PermissionAction.UPDATE,
|
|
80
83
|
subject: Subject,
|
|
@@ -99,7 +102,7 @@ describe("PermissionGuard", () => {
|
|
|
99
102
|
const ability = {
|
|
100
103
|
can: canMock,
|
|
101
104
|
};
|
|
102
|
-
const { guard, reflector, moduleRef } = createGuard(ability, handlerThis);
|
|
105
|
+
const { guard, reflector, moduleRef } = await createGuard(ability, handlerThis);
|
|
103
106
|
setRouteArgsMetadata({
|
|
104
107
|
"3:0": {
|
|
105
108
|
index: 0,
|
|
@@ -131,7 +134,7 @@ describe("PermissionGuard", () => {
|
|
|
131
134
|
const ability = {
|
|
132
135
|
can: canMock,
|
|
133
136
|
};
|
|
134
|
-
const { guard, reflector, req, res } = createGuard(ability, handlerThis);
|
|
137
|
+
const { guard, reflector, req, res } = await createGuard(ability, handlerThis);
|
|
135
138
|
setRouteArgsMetadata({
|
|
136
139
|
"3:0": {
|
|
137
140
|
index: 0,
|
|
@@ -152,6 +155,46 @@ describe("PermissionGuard", () => {
|
|
|
152
155
|
expect(subjectFactory).toHaveBeenCalledWith(handlerThis, "post-1", input);
|
|
153
156
|
expect(handlerThis.postService.findOneOrFail).toHaveBeenCalledWith("post-1", input);
|
|
154
157
|
});
|
|
158
|
+
it("passes every GraphQL route argument source to subject factories", async () => {
|
|
159
|
+
const root = { root: true };
|
|
160
|
+
const info = { fieldName: "post" };
|
|
161
|
+
const subjectInstance = new Subject();
|
|
162
|
+
const handlerThis = {};
|
|
163
|
+
const subjectFactory = jest.fn(() => subjectInstance);
|
|
164
|
+
const canMock = jest.fn(() => true);
|
|
165
|
+
const ability = {
|
|
166
|
+
can: canMock,
|
|
167
|
+
};
|
|
168
|
+
const { guard, reflector, req } = await createGuard(ability, handlerThis);
|
|
169
|
+
setRouteArgsMetadata({
|
|
170
|
+
"0:0": {
|
|
171
|
+
index: 0,
|
|
172
|
+
},
|
|
173
|
+
"3:1": {
|
|
174
|
+
index: 1,
|
|
175
|
+
data: "id",
|
|
176
|
+
},
|
|
177
|
+
"1:2": {
|
|
178
|
+
index: 2,
|
|
179
|
+
data: "viewer",
|
|
180
|
+
},
|
|
181
|
+
"2:3": {
|
|
182
|
+
index: 3,
|
|
183
|
+
},
|
|
184
|
+
"99:4": {
|
|
185
|
+
index: 4,
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
reflector.getAllAndOverride.mockReturnValue({
|
|
189
|
+
action: permission_action_enum_1.PermissionAction.READ,
|
|
190
|
+
subject: subjectFactory,
|
|
191
|
+
});
|
|
192
|
+
await request_context_1.RequestContext.run(new request_context_1.RequestContext({ type: "graphql" }), async () => {
|
|
193
|
+
await expect(guard.canActivate(createContext(undefined, undefined, [root, { id: "post-1" }, { req, viewer: "user-1" }, info], "graphql"))).resolves.toBe(true);
|
|
194
|
+
});
|
|
195
|
+
expect(subjectFactory).toHaveBeenCalledWith(handlerThis, root, "post-1", "user-1", info, undefined);
|
|
196
|
+
expect(canMock).toHaveBeenCalledWith(permission_action_enum_1.PermissionAction.READ, subjectInstance);
|
|
197
|
+
});
|
|
155
198
|
it("passes HTTP controller arguments in decorated parameter order", async () => {
|
|
156
199
|
const input = { title: "New title" };
|
|
157
200
|
const subjectInstance = new Subject();
|
|
@@ -165,7 +208,7 @@ describe("PermissionGuard", () => {
|
|
|
165
208
|
const ability = {
|
|
166
209
|
can: canMock,
|
|
167
210
|
};
|
|
168
|
-
const { guard, reflector } = createGuard(ability, handlerThis);
|
|
211
|
+
const { guard, reflector } = await createGuard(ability, handlerThis);
|
|
169
212
|
setRouteArgsMetadata({
|
|
170
213
|
"5:0": {
|
|
171
214
|
index: 0,
|
|
@@ -190,6 +233,93 @@ describe("PermissionGuard", () => {
|
|
|
190
233
|
expect(subjectFactory).toHaveBeenCalledWith(handlerThis, "post-1", input);
|
|
191
234
|
expect(handlerThis.postService.findOneOrFail).toHaveBeenCalledWith("post-1", input);
|
|
192
235
|
});
|
|
236
|
+
it("passes every HTTP route argument source to subject factories", async () => {
|
|
237
|
+
const req = {
|
|
238
|
+
body: { input: { title: "Draft" } },
|
|
239
|
+
files: ["first-file"],
|
|
240
|
+
headers: { "x-user-id": "user-1" },
|
|
241
|
+
hosts: { account: "acme" },
|
|
242
|
+
ip: "127.0.0.1",
|
|
243
|
+
params: { id: "post-1" },
|
|
244
|
+
query: { preview: "true" },
|
|
245
|
+
rawBody: Buffer.from("raw"),
|
|
246
|
+
session: { id: "session-1" },
|
|
247
|
+
upload: { filename: "avatar.png" },
|
|
248
|
+
};
|
|
249
|
+
const res = {
|
|
250
|
+
locals: {},
|
|
251
|
+
};
|
|
252
|
+
const next = jest.fn();
|
|
253
|
+
const subjectInstance = new Subject();
|
|
254
|
+
const handlerThis = {};
|
|
255
|
+
const subjectFactory = jest.fn(() => subjectInstance);
|
|
256
|
+
const canMock = jest.fn(() => true);
|
|
257
|
+
const ability = {
|
|
258
|
+
can: canMock,
|
|
259
|
+
};
|
|
260
|
+
const { guard, reflector } = await createGuard(ability, handlerThis);
|
|
261
|
+
setRouteArgsMetadata({
|
|
262
|
+
"0:0": {
|
|
263
|
+
index: 0,
|
|
264
|
+
},
|
|
265
|
+
"1:1": {
|
|
266
|
+
index: 1,
|
|
267
|
+
},
|
|
268
|
+
"2:2": {
|
|
269
|
+
index: 2,
|
|
270
|
+
},
|
|
271
|
+
"3:3": {
|
|
272
|
+
index: 3,
|
|
273
|
+
},
|
|
274
|
+
"12:4": {
|
|
275
|
+
index: 4,
|
|
276
|
+
},
|
|
277
|
+
"5:5": {
|
|
278
|
+
index: 5,
|
|
279
|
+
data: "id",
|
|
280
|
+
},
|
|
281
|
+
"10:6": {
|
|
282
|
+
index: 6,
|
|
283
|
+
data: "account",
|
|
284
|
+
},
|
|
285
|
+
"4:7": {
|
|
286
|
+
index: 7,
|
|
287
|
+
data: "preview",
|
|
288
|
+
},
|
|
289
|
+
"6:8": {
|
|
290
|
+
index: 8,
|
|
291
|
+
data: "X-USER-ID",
|
|
292
|
+
},
|
|
293
|
+
"7:9": {
|
|
294
|
+
index: 9,
|
|
295
|
+
},
|
|
296
|
+
"8:10": {
|
|
297
|
+
index: 10,
|
|
298
|
+
data: "upload",
|
|
299
|
+
},
|
|
300
|
+
"8:11": {
|
|
301
|
+
index: 11,
|
|
302
|
+
},
|
|
303
|
+
"9:12": {
|
|
304
|
+
index: 12,
|
|
305
|
+
},
|
|
306
|
+
"11:13": {
|
|
307
|
+
index: 13,
|
|
308
|
+
},
|
|
309
|
+
"99:14": {
|
|
310
|
+
index: 14,
|
|
311
|
+
},
|
|
312
|
+
});
|
|
313
|
+
reflector.getAllAndOverride.mockReturnValue({
|
|
314
|
+
action: permission_action_enum_1.PermissionAction.READ,
|
|
315
|
+
subject: subjectFactory,
|
|
316
|
+
});
|
|
317
|
+
await request_context_1.RequestContext.run(new request_context_1.RequestContext({ type: "http" }), async () => {
|
|
318
|
+
await expect(guard.canActivate(createContext(req, res, [undefined, undefined, next]))).resolves.toBe(true);
|
|
319
|
+
});
|
|
320
|
+
expect(subjectFactory).toHaveBeenCalledWith(handlerThis, req, res, next, req.body, req.rawBody, "post-1", "acme", "true", "user-1", req.session, req.upload, undefined, req.files, req.ip, undefined);
|
|
321
|
+
expect(canMock).toHaveBeenCalledWith(permission_action_enum_1.PermissionAction.READ, subjectInstance);
|
|
322
|
+
});
|
|
193
323
|
it("passes custom HTTP controller arguments to subject factories", async () => {
|
|
194
324
|
const workspace = { id: "workspace-1" };
|
|
195
325
|
const subjectInstance = new Subject();
|
|
@@ -206,7 +336,7 @@ describe("PermissionGuard", () => {
|
|
|
206
336
|
const ability = {
|
|
207
337
|
can: canMock,
|
|
208
338
|
};
|
|
209
|
-
const { guard, reflector } = createGuard(ability, handlerThis);
|
|
339
|
+
const { guard, reflector } = await createGuard(ability, handlerThis);
|
|
210
340
|
setRouteArgsMetadata({
|
|
211
341
|
[`workspace${permission_constants_1.CUSTOM_ROUTE_ARGS_METADATA}:0`]: {
|
|
212
342
|
index: 0,
|
|
@@ -247,7 +377,7 @@ describe("PermissionGuard", () => {
|
|
|
247
377
|
const ability = {
|
|
248
378
|
can: canMock,
|
|
249
379
|
};
|
|
250
|
-
const { guard, reflector } = createGuard(ability, handlerThis);
|
|
380
|
+
const { guard, reflector } = await createGuard(ability, handlerThis);
|
|
251
381
|
setRouteArgsMetadata({
|
|
252
382
|
[`workspace${permission_constants_1.CUSTOM_ROUTE_ARGS_METADATA}:0`]: {
|
|
253
383
|
index: 0,
|
|
@@ -277,7 +407,7 @@ describe("PermissionGuard", () => {
|
|
|
277
407
|
const ability = {
|
|
278
408
|
can: canMock,
|
|
279
409
|
};
|
|
280
|
-
const { guard, reflector, buildAbility } = createGuard();
|
|
410
|
+
const { guard, reflector, buildAbility } = await createGuard();
|
|
281
411
|
let resolveAbility;
|
|
282
412
|
const abilityPromise = new Promise((resolve) => {
|
|
283
413
|
resolveAbility = resolve;
|
|
@@ -300,9 +430,74 @@ describe("PermissionGuard", () => {
|
|
|
300
430
|
});
|
|
301
431
|
expect(canMock).toHaveBeenCalledTimes(2);
|
|
302
432
|
});
|
|
433
|
+
it("passes no subject factory args when route metadata is missing", async () => {
|
|
434
|
+
const subjectInstance = new Subject();
|
|
435
|
+
const handlerThis = {};
|
|
436
|
+
const subjectFactory = jest.fn(() => subjectInstance);
|
|
437
|
+
const canMock = jest.fn(() => true);
|
|
438
|
+
const { guard, reflector, moduleRef } = await createGuard({
|
|
439
|
+
can: canMock,
|
|
440
|
+
}, handlerThis);
|
|
441
|
+
reflector.getAllAndOverride.mockReturnValue({
|
|
442
|
+
action: permission_action_enum_1.PermissionAction.READ,
|
|
443
|
+
subject: subjectFactory,
|
|
444
|
+
});
|
|
445
|
+
await request_context_1.RequestContext.run(new request_context_1.RequestContext({ type: "rpc" }), async () => {
|
|
446
|
+
await expect(guard.canActivate(createContext(undefined, undefined, [], "rpc"))).resolves.toBe(true);
|
|
447
|
+
});
|
|
448
|
+
expect(moduleRef.resolve).toHaveBeenCalledWith(Controller, undefined, {
|
|
449
|
+
strict: false,
|
|
450
|
+
});
|
|
451
|
+
expect(subjectFactory).toHaveBeenCalledWith(handlerThis);
|
|
452
|
+
});
|
|
453
|
+
it("falls back to prototype lookup and null when handler names are unavailable", async () => {
|
|
454
|
+
const subjectInstance = new Subject();
|
|
455
|
+
const handlerThis = {};
|
|
456
|
+
const subjectFactory = jest.fn(() => subjectInstance);
|
|
457
|
+
const canMock = jest.fn(() => true);
|
|
458
|
+
const { guard, reflector } = await createGuard({
|
|
459
|
+
can: canMock,
|
|
460
|
+
}, handlerThis);
|
|
461
|
+
const matchedHandler = createUnnamedHandler();
|
|
462
|
+
const unmatchedHandler = createUnnamedHandler();
|
|
463
|
+
Object.defineProperty(Controller.prototype, "matched", {
|
|
464
|
+
configurable: true,
|
|
465
|
+
value: matchedHandler,
|
|
466
|
+
});
|
|
467
|
+
Reflect.defineMetadata(permission_constants_1.ROUTE_ARGS_METADATA, {
|
|
468
|
+
"3:0": {
|
|
469
|
+
index: 0,
|
|
470
|
+
data: 1,
|
|
471
|
+
},
|
|
472
|
+
}, Controller, "matched");
|
|
473
|
+
reflector.getAllAndOverride.mockReturnValue({
|
|
474
|
+
action: permission_action_enum_1.PermissionAction.READ,
|
|
475
|
+
subject: subjectFactory,
|
|
476
|
+
});
|
|
477
|
+
await request_context_1.RequestContext.run(new request_context_1.RequestContext({ type: "http" }), async () => {
|
|
478
|
+
const matchedContext = createContext({
|
|
479
|
+
body: { input: true },
|
|
480
|
+
headers: {},
|
|
481
|
+
}, {});
|
|
482
|
+
matchedContext.getHandler = jest.fn(() => matchedHandler);
|
|
483
|
+
await expect(guard.canActivate(matchedContext)).resolves.toBe(true);
|
|
484
|
+
const unmatchedContext = createContext({
|
|
485
|
+
body: "not-an-object",
|
|
486
|
+
headers: {},
|
|
487
|
+
}, {});
|
|
488
|
+
unmatchedContext.getHandler = jest.fn(() => unmatchedHandler);
|
|
489
|
+
await expect(guard.canActivate(unmatchedContext)).resolves.toBe(true);
|
|
490
|
+
});
|
|
491
|
+
expect(subjectFactory).toHaveBeenNthCalledWith(1, handlerThis, {
|
|
492
|
+
input: true,
|
|
493
|
+
});
|
|
494
|
+
expect(subjectFactory).toHaveBeenNthCalledWith(2, handlerThis);
|
|
495
|
+
Reflect.deleteMetadata(permission_constants_1.ROUTE_ARGS_METADATA, Controller, "matched");
|
|
496
|
+
delete Controller.prototype.matched;
|
|
497
|
+
});
|
|
303
498
|
it("returns false when ability denies the permission", async () => {
|
|
304
499
|
const canMock = jest.fn(() => false);
|
|
305
|
-
const { guard, reflector } = createGuard({
|
|
500
|
+
const { guard, reflector } = await createGuard({
|
|
306
501
|
can: canMock,
|
|
307
502
|
});
|
|
308
503
|
reflector.getAllAndOverride.mockReturnValue({
|
|
@@ -314,23 +509,42 @@ describe("PermissionGuard", () => {
|
|
|
314
509
|
});
|
|
315
510
|
});
|
|
316
511
|
});
|
|
317
|
-
function createGuard(ability = null, handlerThis = {}) {
|
|
512
|
+
async function createGuard(ability = null, handlerThis = {}) {
|
|
318
513
|
const reflector = {
|
|
319
514
|
getAllAndOverride: jest.fn(),
|
|
320
515
|
};
|
|
321
516
|
const buildAbility = jest.fn((_ctx) => ability);
|
|
322
|
-
const
|
|
517
|
+
const moduleRefMock = {
|
|
323
518
|
resolve: jest.fn(() => Promise.resolve(handlerThis)),
|
|
324
519
|
};
|
|
325
520
|
const req = {
|
|
326
521
|
headers: {},
|
|
327
522
|
};
|
|
328
523
|
const res = {};
|
|
524
|
+
const testingModule = await testing_1.Test.createTestingModule({
|
|
525
|
+
providers: [
|
|
526
|
+
permission_guard_1.PermissionGuard,
|
|
527
|
+
{
|
|
528
|
+
provide: core_1.Reflector,
|
|
529
|
+
useValue: reflector,
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
provide: permission_module_definition_1.MODULE_OPTIONS_TOKEN,
|
|
533
|
+
useValue: {
|
|
534
|
+
buildAbility,
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
provide: core_1.ModuleRef,
|
|
539
|
+
useValue: moduleRefMock,
|
|
540
|
+
},
|
|
541
|
+
],
|
|
542
|
+
}).compile();
|
|
329
543
|
return {
|
|
330
|
-
guard:
|
|
544
|
+
guard: testingModule.get(permission_guard_1.PermissionGuard),
|
|
331
545
|
reflector,
|
|
332
546
|
buildAbility,
|
|
333
|
-
moduleRef,
|
|
547
|
+
moduleRef: moduleRefMock,
|
|
334
548
|
req,
|
|
335
549
|
res,
|
|
336
550
|
};
|
|
@@ -355,4 +569,9 @@ function createContext(req, res, args = [], type = "http") {
|
|
|
355
569
|
function setRouteArgsMetadata(metadata) {
|
|
356
570
|
Reflect.defineMetadata(permission_constants_1.ROUTE_ARGS_METADATA, metadata, Controller, "handler");
|
|
357
571
|
}
|
|
572
|
+
function createUnnamedHandler() {
|
|
573
|
+
return function () {
|
|
574
|
+
return undefined;
|
|
575
|
+
};
|
|
576
|
+
}
|
|
358
577
|
//# sourceMappingURL=permission.guard.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.guard.spec.js","sourceRoot":"","sources":["../src/permission.guard.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"permission.guard.spec.js","sourceRoot":"","sources":["../src/permission.guard.spec.ts"],"names":[],"mappings":"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"}
|