@cedarjs/testing 8.0.0-canary.3569 → 8.0.0-canary.3571
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/api/vitest/vite-plugin-cedar-vitest-api-config.d.ts.map +1 -1
- package/dist/api/vitest/vite-plugin-cedar-vitest-api-config.js +11 -6
- package/dist/api/vitest/vitest-api.setup.d.ts.map +1 -1
- package/dist/api/vitest/vitest-api.setup.js +9 -1
- package/dist/permissions/loadAppPermissions.d.ts +9 -0
- package/dist/permissions/loadAppPermissions.d.ts.map +1 -0
- package/dist/permissions/loadAppPermissions.js +62 -0
- package/dist/permissions/mockPermissions.d.ts +9 -0
- package/dist/permissions/mockPermissions.d.ts.map +1 -0
- package/dist/permissions/mockPermissions.js +18 -0
- package/dist/web/mockAuth.d.ts.map +1 -1
- package/dist/web/mockAuth.js +2 -1
- package/dist/web/mockRequests.d.ts +5 -1
- package/dist/web/mockRequests.d.ts.map +1 -1
- package/dist/web/mockRequests.js +4 -2
- package/dist/web/vitest/vitest-web.setup.js +3 -0
- package/package.json +12 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-cedar-vitest-api-config.d.ts","sourceRoot":"","sources":["../../../src/api/vitest/vite-plugin-cedar-vitest-api-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAIlC,wBAAgB,0BAA0B,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"vite-plugin-cedar-vitest-api-config.d.ts","sourceRoot":"","sources":["../../../src/api/vitest/vite-plugin-cedar-vitest-api-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAIlC,wBAAgB,0BAA0B,IAAI,MAAM,CAsCnD"}
|
|
@@ -7,12 +7,17 @@ function cedarVitestApiConfigPlugin() {
|
|
|
7
7
|
return {
|
|
8
8
|
define: getEnvVarDefinitions(),
|
|
9
9
|
ssr: {
|
|
10
|
-
// `@cedarjs/tenancy`
|
|
11
|
-
// the api test setup replaces with a
|
|
12
|
-
// code Vite processes, so
|
|
13
|
-
// rather than loaded as
|
|
14
|
-
// test and its Prisma extension
|
|
15
|
-
|
|
10
|
+
// `@cedarjs/tenancy` and `@cedarjs/permissions/api` read and write
|
|
11
|
+
// the request context, which the api test setup replaces with a
|
|
12
|
+
// mock. The mock only reaches code Vite processes, so their
|
|
13
|
+
// runtimes have to be bundled rather than loaded as external
|
|
14
|
+
// dependencies, or a service under test and its Prisma extension
|
|
15
|
+
// or permission checks would see different contexts.
|
|
16
|
+
noExternal: [
|
|
17
|
+
"@cedarjs/testing",
|
|
18
|
+
"@cedarjs/tenancy",
|
|
19
|
+
"@cedarjs/permissions"
|
|
20
|
+
]
|
|
16
21
|
},
|
|
17
22
|
resolve: {
|
|
18
23
|
alias: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest-api.setup.d.ts","sourceRoot":"","sources":["../../../src/api/vitest/vitest-api.setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"vitest-api.setup.d.ts","sourceRoot":"","sources":["../../../src/api/vitest/vitest-api.setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAkD1D,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,eAAe,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CACjE;AAiBD,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,cAAc,EAAE,cAAc,CAAA;IAElC,IAAI,uBAAuB,EAAE,OAAO,CAAA;CACrC"}
|
|
@@ -3,6 +3,11 @@ import path from "node:path";
|
|
|
3
3
|
import { afterAll, beforeEach, it, describe, vi, beforeAll } from "vitest";
|
|
4
4
|
import { getPaths, getPrismaSchemas } from "@cedarjs/project-config";
|
|
5
5
|
import { defineScenario } from "@cedarjs/testing/api";
|
|
6
|
+
import { loadAppPermissions } from "../../permissions/loadAppPermissions.js";
|
|
7
|
+
import {
|
|
8
|
+
setMockPermissionDefinitions,
|
|
9
|
+
withMockPermissions
|
|
10
|
+
} from "../../permissions/mockPermissions.js";
|
|
6
11
|
import { emptyTablesInWorkingOrder } from "./teardown.js";
|
|
7
12
|
const mockContextStore = vi.hoisted(() => /* @__PURE__ */ new Map());
|
|
8
13
|
const mockContext = vi.hoisted(
|
|
@@ -34,8 +39,11 @@ vi.mock("@cedarjs/context", () => {
|
|
|
34
39
|
beforeEach(() => {
|
|
35
40
|
mockContextStore.set("context", {});
|
|
36
41
|
});
|
|
42
|
+
setMockPermissionDefinitions(await loadAppPermissions(getPaths().api.base));
|
|
37
43
|
globalThis.mockCurrentUser = (currentUser) => {
|
|
38
|
-
mockContextStore.set("context", {
|
|
44
|
+
mockContextStore.set("context", {
|
|
45
|
+
currentUser: withMockPermissions(currentUser)
|
|
46
|
+
});
|
|
39
47
|
};
|
|
40
48
|
globalThis.defineScenario = defineScenario;
|
|
41
49
|
const cedarPaths = getPaths();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PermissionDefinitions } from '@cedarjs/permissions';
|
|
2
|
+
/**
|
|
3
|
+
* The `permissions` that the app's permissions package (`packages/permissions`,
|
|
4
|
+
* from `cedar setup permissions`) exports, as `sideBase` (the api or web
|
|
5
|
+
* side) imports it. `undefined` in an app without one, and in an app with
|
|
6
|
+
* tenancy, where permissions belong to a membership instead of the user.
|
|
7
|
+
*/
|
|
8
|
+
export declare function loadAppPermissions(sideBase: string): Promise<PermissionDefinitions | undefined>;
|
|
9
|
+
//# sourceMappingURL=loadAppPermissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadAppPermissions.d.ts","sourceRoot":"","sources":["../../src/permissions/loadAppPermissions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AA+DjE;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA0C5C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
|
+
import { getPaths } from "@cedarjs/project-config";
|
|
6
|
+
function readPackageJson(file) {
|
|
7
|
+
try {
|
|
8
|
+
const packageJson = JSON.parse(fs.readFileSync(file, "utf-8"));
|
|
9
|
+
return packageJson && typeof packageJson === "object" ? { ...packageJson } : void 0;
|
|
10
|
+
} catch {
|
|
11
|
+
return void 0;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function dependsOn(packageJson, name) {
|
|
15
|
+
return ["dependencies", "devDependencies"].some((field) => {
|
|
16
|
+
const deps = packageJson[field];
|
|
17
|
+
return !!deps && typeof deps === "object" && Object.hasOwn(deps, name);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function isPermissionDefinitions(value) {
|
|
21
|
+
return !!value && typeof value === "object" && "permissions" in value && Array.isArray(value.permissions) && "roles" in value && !!value.roles && typeof value.roles === "object";
|
|
22
|
+
}
|
|
23
|
+
function sourceEntry(packageJson) {
|
|
24
|
+
const main = packageJson.main;
|
|
25
|
+
if (typeof main !== "string") {
|
|
26
|
+
return void 0;
|
|
27
|
+
}
|
|
28
|
+
const base = path.join(
|
|
29
|
+
getPaths().packages,
|
|
30
|
+
"permissions",
|
|
31
|
+
main.replace(/^\.\//, "").replace(/^dist\//, "src/").replace(/\.[cm]?js$/, "")
|
|
32
|
+
);
|
|
33
|
+
return [".ts", ".mts", ".js", ".mjs"].map((ext) => base + ext).find((file) => fs.existsSync(file));
|
|
34
|
+
}
|
|
35
|
+
async function loadAppPermissions(sideBase) {
|
|
36
|
+
const sidePackageJsonPath = path.join(sideBase, "package.json");
|
|
37
|
+
const sidePackageJson = readPackageJson(sidePackageJsonPath);
|
|
38
|
+
const packageJson = readPackageJson(
|
|
39
|
+
path.join(getPaths().packages, "permissions", "package.json")
|
|
40
|
+
);
|
|
41
|
+
const name = packageJson?.name;
|
|
42
|
+
if (!sidePackageJson || !packageJson || typeof name !== "string" || !dependsOn(sidePackageJson, name) || dependsOn(sidePackageJson, "@cedarjs/tenancy")) {
|
|
43
|
+
return void 0;
|
|
44
|
+
}
|
|
45
|
+
let entry = sourceEntry(packageJson);
|
|
46
|
+
try {
|
|
47
|
+
entry ??= createRequire(sidePackageJsonPath).resolve(name);
|
|
48
|
+
} catch {
|
|
49
|
+
console.warn(
|
|
50
|
+
`Couldn't find ${name}, so mockCurrentUser() gives users no permissions. Build it with \`yarn cedar build\`.`
|
|
51
|
+
);
|
|
52
|
+
return void 0;
|
|
53
|
+
}
|
|
54
|
+
const permissionsModule = await import(pathToFileURL(entry).href);
|
|
55
|
+
if (permissionsModule && typeof permissionsModule === "object" && "permissions" in permissionsModule && isPermissionDefinitions(permissionsModule.permissions)) {
|
|
56
|
+
return permissionsModule.permissions;
|
|
57
|
+
}
|
|
58
|
+
return void 0;
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
loadAppPermissions
|
|
62
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PermissionDefinitions } from '@cedarjs/permissions';
|
|
2
|
+
export declare function setMockPermissionDefinitions(appDefinitions: PermissionDefinitions | undefined): void;
|
|
3
|
+
/**
|
|
4
|
+
* `user` with the `permissions` the app's definitions give its `roles`, as
|
|
5
|
+
* `withPermissions` adds them in `getCurrentUser`. A user with permissions
|
|
6
|
+
* of its own keeps them.
|
|
7
|
+
*/
|
|
8
|
+
export declare function withMockPermissions<User>(user: User): User;
|
|
9
|
+
//# sourceMappingURL=mockPermissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockPermissions.d.ts","sourceRoot":"","sources":["../../src/permissions/mockPermissions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAQjE,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,qBAAqB,GAAG,SAAS,QAGlD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAwB1D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { permissionsOf } from "@cedarjs/permissions";
|
|
2
|
+
let definitions;
|
|
3
|
+
function setMockPermissionDefinitions(appDefinitions) {
|
|
4
|
+
definitions = appDefinitions;
|
|
5
|
+
}
|
|
6
|
+
function withMockPermissions(user) {
|
|
7
|
+
if (!definitions || typeof user !== "object" || user === null || "permissions" in user || !("roles" in user)) {
|
|
8
|
+
return user;
|
|
9
|
+
}
|
|
10
|
+
const { roles } = user;
|
|
11
|
+
const roleList = typeof roles === "string" ? [roles] : Array.isArray(roles) ? roles.filter((role) => typeof role === "string") : [];
|
|
12
|
+
const permissions = permissionsOf(definitions, roleList);
|
|
13
|
+
return permissions.length > 0 ? { ...user, permissions } : user;
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
setMockPermissionDefinitions,
|
|
17
|
+
withMockPermissions
|
|
18
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockAuth.d.ts","sourceRoot":"","sources":["../../src/web/mockAuth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,cAAc,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"mockAuth.d.ts","sourceRoot":"","sources":["../../src/web/mockAuth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,cAAc,eAAe,CAAA;AAQ7B,UAAU,KAAK;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAWD,wBAAgB,OAAO;;;;;;;;;;qBAYF,MAAM,GAAG,MAAM,EAAE;;;;;;;;;;EAerC;AAED,eAAO,MAAM,oBAAoB;;;CAEhC,CAAA"}
|
package/dist/web/mockAuth.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export * from "@cedarjs/auth";
|
|
3
3
|
import { HasPermissionContext } from "@cedarjs/auth";
|
|
4
|
+
import { currentUserHasPermission } from "@cedarjs/auth/currentUserHasPermission";
|
|
4
5
|
import { currentUserHasRole } from "@cedarjs/auth/currentUserHasRole";
|
|
5
6
|
import { mockedUserMeta } from "./mockRequests.js";
|
|
6
7
|
const AuthProvider = ({ children }) => {
|
|
@@ -22,7 +23,7 @@ function useAuth() {
|
|
|
22
23
|
getToken: async () => null,
|
|
23
24
|
getCurrentUser: async () => mockedUserMeta.currentUser,
|
|
24
25
|
hasRole: (roles) => currentUserHasRole(mockedUserMeta.currentUser, roles),
|
|
25
|
-
hasPermission: scopedHasPermission ?? (() =>
|
|
26
|
+
hasPermission: scopedHasPermission ?? ((permission) => currentUserHasPermission(mockedUserMeta.currentUser, permission)),
|
|
26
27
|
reauthenticate: async () => {
|
|
27
28
|
},
|
|
28
29
|
forgotPassword: async () => {
|
|
@@ -68,7 +68,11 @@ export declare const mockGraphQLMutation: <Query extends Record<string, unknown>
|
|
|
68
68
|
export declare const mockedUserMeta: {
|
|
69
69
|
currentUser: CurrentUser;
|
|
70
70
|
};
|
|
71
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* A mocked user only needs the fields the test uses. In an app with
|
|
73
|
+
* permissions (`cedar setup permissions`), a user with `roles` gets the
|
|
74
|
+
* `permissions` the app's definitions give them, as `getCurrentUser` does.
|
|
75
|
+
*/
|
|
72
76
|
export declare const mockCurrentUser: (user: Partial<CurrentUser>) => void;
|
|
73
77
|
export declare const mockedRouteParamsMeta: {
|
|
74
78
|
params: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockRequests.d.ts","sourceRoot":"","sources":["../../src/web/mockRequests.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"mockRequests.d.ts","sourceRoot":"","sources":["../../src/web/mockRequests.ts"],"names":[],"mappings":"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"}
|
package/dist/web/mockRequests.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { bypass, delay, graphql, HttpResponse } from "msw";
|
|
2
|
+
import { withMockPermissions } from "../permissions/mockPermissions.js";
|
|
2
3
|
let REQUEST_HANDLER_QUEUE = [];
|
|
3
4
|
let SERVER_INSTANCE;
|
|
4
5
|
const MSW_NODE_SPECIFIER = "msw/node";
|
|
@@ -148,11 +149,12 @@ const mockedUserMeta = {
|
|
|
148
149
|
currentUser: null
|
|
149
150
|
};
|
|
150
151
|
const mockCurrentUser = (user) => {
|
|
151
|
-
|
|
152
|
+
const currentUser = withMockPermissions(user);
|
|
153
|
+
mockedUserMeta.currentUser = currentUser;
|
|
152
154
|
mockGraphQLQuery("__CEDAR__AUTH_GET_CURRENT_USER", () => {
|
|
153
155
|
return {
|
|
154
156
|
cedar: {
|
|
155
|
-
currentUser
|
|
157
|
+
currentUser
|
|
156
158
|
}
|
|
157
159
|
};
|
|
158
160
|
});
|
|
@@ -3,6 +3,8 @@ import path from "node:path";
|
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
4
|
import { afterAll, afterEach, beforeAll } from "vitest";
|
|
5
5
|
import { getPaths } from "@cedarjs/project-config";
|
|
6
|
+
import { loadAppPermissions } from "../../permissions/loadAppPermissions.js";
|
|
7
|
+
import { setMockPermissionDefinitions } from "../../permissions/mockPermissions.js";
|
|
6
8
|
import { findCellMocks } from "../findCellMocks.js";
|
|
7
9
|
import {
|
|
8
10
|
closeServer,
|
|
@@ -11,6 +13,7 @@ import {
|
|
|
11
13
|
startMSW
|
|
12
14
|
} from "../mockRequests.js";
|
|
13
15
|
let clearOrgClients;
|
|
16
|
+
setMockPermissionDefinitions(await loadAppPermissions(getPaths().web.base));
|
|
14
17
|
beforeAll(async () => {
|
|
15
18
|
clearOrgClients = await importClearOrgClients();
|
|
16
19
|
const cellMocks = findCellMocks(getPaths().web.src);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cedarjs/testing",
|
|
3
|
-
"version": "8.0.0-canary.
|
|
3
|
+
"version": "8.0.0-canary.3571",
|
|
4
4
|
"description": "Tools, wrappers and configuration for testing a Cedar project.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -54,9 +54,10 @@
|
|
|
54
54
|
"test:watch": "vitest watch"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@cedarjs/context": "8.0.0-canary.
|
|
58
|
-
"@cedarjs/graphql-server": "8.0.0-canary.
|
|
59
|
-
"@cedarjs/
|
|
57
|
+
"@cedarjs/context": "8.0.0-canary.3571",
|
|
58
|
+
"@cedarjs/graphql-server": "8.0.0-canary.3571",
|
|
59
|
+
"@cedarjs/permissions": "8.0.0-canary.3571",
|
|
60
|
+
"@cedarjs/project-config": "8.0.0-canary.3571",
|
|
60
61
|
"@prisma/internals": "7.10.1",
|
|
61
62
|
"@testing-library/dom": "10.4.2",
|
|
62
63
|
"@testing-library/jest-dom": "6.9.1",
|
|
@@ -74,19 +75,19 @@
|
|
|
74
75
|
},
|
|
75
76
|
"devDependencies": {
|
|
76
77
|
"@arethetypeswrong/cli": "0.18.5",
|
|
77
|
-
"@cedarjs/auth": "8.0.0-canary.
|
|
78
|
-
"@cedarjs/framework-tools": "8.0.0-canary.
|
|
79
|
-
"@cedarjs/router": "8.0.0-canary.
|
|
80
|
-
"@cedarjs/web": "8.0.0-canary.
|
|
78
|
+
"@cedarjs/auth": "8.0.0-canary.3571",
|
|
79
|
+
"@cedarjs/framework-tools": "8.0.0-canary.3571",
|
|
80
|
+
"@cedarjs/router": "8.0.0-canary.3571",
|
|
81
|
+
"@cedarjs/web": "8.0.0-canary.3571",
|
|
81
82
|
"concurrently": "9.2.5",
|
|
82
83
|
"publint": "0.3.25",
|
|
83
84
|
"typescript": "5.9.3",
|
|
84
85
|
"vitest": "4.1.12"
|
|
85
86
|
},
|
|
86
87
|
"peerDependencies": {
|
|
87
|
-
"@cedarjs/auth": "8.0.0-canary.
|
|
88
|
-
"@cedarjs/router": "8.0.0-canary.
|
|
89
|
-
"@cedarjs/web": "8.0.0-canary.
|
|
88
|
+
"@cedarjs/auth": "8.0.0-canary.3571",
|
|
89
|
+
"@cedarjs/router": "8.0.0-canary.3571",
|
|
90
|
+
"@cedarjs/web": "8.0.0-canary.3571",
|
|
90
91
|
"vitest": "4.1.12"
|
|
91
92
|
},
|
|
92
93
|
"peerDependenciesMeta": {
|