@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.
@@ -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 moduleRef = {
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: new permission_guard_1.PermissionGuard(reflector, { buildAbility }, moduleRef),
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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"}