@osdk/faux 0.5.0-beta.3 → 0.5.0-rc.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.
- package/CHANGELOG.md +76 -0
- package/build/browser/FauxFoundry/FauxAdmin.js +67 -0
- package/build/browser/FauxFoundry/FauxAdmin.js.map +1 -0
- package/build/browser/FauxFoundry/FauxAdmin.test.js +248 -0
- package/build/browser/FauxFoundry/FauxAdmin.test.js.map +1 -0
- package/build/browser/FauxFoundry/FauxDataStore.js +32 -49
- package/build/browser/FauxFoundry/FauxDataStore.js.map +1 -1
- package/build/browser/FauxFoundry/FauxFoundry.js +5 -0
- package/build/browser/FauxFoundry/FauxFoundry.js.map +1 -1
- package/build/browser/FauxFoundry/filterObjects.js +181 -2
- package/build/browser/FauxFoundry/filterObjects.js.map +1 -1
- package/build/browser/FauxFoundry/filterObjects.test.js +216 -0
- package/build/browser/FauxFoundry/filterObjects.test.js.map +1 -0
- package/build/browser/errors.js +51 -2
- package/build/browser/errors.js.map +1 -1
- package/build/browser/filterObjects.js +1 -2
- package/build/browser/filterObjects.js.map +1 -1
- package/build/browser/handlers/createAdminHandlers.js +52 -0
- package/build/browser/handlers/createAdminHandlers.js.map +1 -0
- package/build/browser/handlers/createFauxFoundryHandlers.js +2 -1
- package/build/browser/handlers/createFauxFoundryHandlers.js.map +1 -1
- package/build/browser/handlers/createObjectSetHandlers.js +2 -4
- package/build/browser/handlers/createObjectSetHandlers.js.map +1 -1
- package/build/browser/handlers/util/pageThroughResponseSearchParams.js +2 -3
- package/build/browser/handlers/util/pageThroughResponseSearchParams.js.map +1 -1
- package/build/browser/index.js +1 -0
- package/build/browser/index.js.map +1 -1
- package/build/browser/mock/Admin/Users.js +22 -0
- package/build/browser/mock/Admin/Users.js.map +1 -0
- package/build/browser/mock/Admin/index.js +18 -0
- package/build/browser/mock/Admin/index.js.map +1 -0
- package/build/browser/mock/index.js +1 -0
- package/build/browser/mock/index.js.map +1 -1
- package/build/cjs/index.cjs +473 -162
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/index.d.cts +33 -7
- package/build/esm/FauxFoundry/FauxAdmin.js +67 -0
- package/build/esm/FauxFoundry/FauxAdmin.js.map +1 -0
- package/build/esm/FauxFoundry/FauxAdmin.test.js +248 -0
- package/build/esm/FauxFoundry/FauxAdmin.test.js.map +1 -0
- package/build/esm/FauxFoundry/FauxDataStore.js +32 -49
- package/build/esm/FauxFoundry/FauxDataStore.js.map +1 -1
- package/build/esm/FauxFoundry/FauxFoundry.js +5 -0
- package/build/esm/FauxFoundry/FauxFoundry.js.map +1 -1
- package/build/esm/FauxFoundry/filterObjects.js +181 -2
- package/build/esm/FauxFoundry/filterObjects.js.map +1 -1
- package/build/esm/FauxFoundry/filterObjects.test.js +216 -0
- package/build/esm/FauxFoundry/filterObjects.test.js.map +1 -0
- package/build/esm/errors.js +51 -2
- package/build/esm/errors.js.map +1 -1
- package/build/esm/filterObjects.js +1 -2
- package/build/esm/filterObjects.js.map +1 -1
- package/build/esm/handlers/createAdminHandlers.js +52 -0
- package/build/esm/handlers/createAdminHandlers.js.map +1 -0
- package/build/esm/handlers/createFauxFoundryHandlers.js +2 -1
- package/build/esm/handlers/createFauxFoundryHandlers.js.map +1 -1
- package/build/esm/handlers/createObjectSetHandlers.js +2 -4
- package/build/esm/handlers/createObjectSetHandlers.js.map +1 -1
- package/build/esm/handlers/util/pageThroughResponseSearchParams.js +2 -3
- package/build/esm/handlers/util/pageThroughResponseSearchParams.js.map +1 -1
- package/build/esm/index.js +1 -0
- package/build/esm/index.js.map +1 -1
- package/build/esm/mock/Admin/Users.js +22 -0
- package/build/esm/mock/Admin/Users.js.map +1 -0
- package/build/esm/mock/Admin/index.js +18 -0
- package/build/esm/mock/Admin/index.js.map +1 -0
- package/build/esm/mock/index.js +1 -0
- package/build/esm/mock/index.js.map +1 -1
- package/build/types/FauxFoundry/FauxAdmin.d.ts +14 -0
- package/build/types/FauxFoundry/FauxAdmin.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxAdmin.test.d.ts +1 -0
- package/build/types/FauxFoundry/FauxAdmin.test.d.ts.map +1 -0
- package/build/types/FauxFoundry/FauxDataStore.d.ts +1 -2
- package/build/types/FauxFoundry/FauxDataStore.d.ts.map +1 -1
- package/build/types/FauxFoundry/FauxFoundry.d.ts +3 -0
- package/build/types/FauxFoundry/FauxFoundry.d.ts.map +1 -1
- package/build/types/FauxFoundry/filterObjects.test.d.ts +1 -0
- package/build/types/FauxFoundry/filterObjects.test.d.ts.map +1 -0
- package/build/types/errors.d.ts +8 -0
- package/build/types/errors.d.ts.map +1 -1
- package/build/types/handlers/createAdminHandlers.d.ts +2 -0
- package/build/types/handlers/createAdminHandlers.d.ts.map +1 -0
- package/build/types/handlers/createFauxFoundryHandlers.d.ts.map +1 -1
- package/build/types/handlers/util/pageThroughResponseSearchParams.d.ts +1 -3
- package/build/types/handlers/util/pageThroughResponseSearchParams.d.ts.map +1 -1
- package/build/types/index.d.ts +1 -0
- package/build/types/index.d.ts.map +1 -1
- package/build/types/mock/Admin/Users.d.ts +5 -0
- package/build/types/mock/Admin/Users.d.ts.map +1 -0
- package/build/types/mock/Admin/index.d.ts +1 -0
- package/build/types/mock/Admin/index.d.ts.map +1 -0
- package/build/types/mock/index.d.ts +1 -0
- package/build/types/mock/index.d.ts.map +1 -1
- package/package.json +9 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @osdk/shared.test
|
|
2
2
|
|
|
3
|
+
## 0.5.0-rc.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 31cd835: Revert beta changes
|
|
8
|
+
- 0dbd0d0: add useOsdkObjects rid querying support
|
|
9
|
+
- Updated dependencies [31cd835]
|
|
10
|
+
- @osdk/generator-converters@2.7.0-rc.15
|
|
11
|
+
- @osdk/api@2.7.0-rc.15
|
|
12
|
+
|
|
13
|
+
## 0.5.0-beta.4
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- ab1957f: Added FauxAdmin support
|
|
18
|
+
- 862910e: Adds support for wider variety of query filters
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- Updated dependencies [fb83808]
|
|
23
|
+
- @osdk/api@2.7.0-beta.13
|
|
24
|
+
- @osdk/generator-converters@2.7.0-beta.13
|
|
25
|
+
|
|
3
26
|
## 0.5.0-beta.3
|
|
4
27
|
|
|
5
28
|
### Minor Changes
|
|
@@ -24,6 +47,59 @@
|
|
|
24
47
|
- @osdk/api@2.7.0-beta.2
|
|
25
48
|
- @osdk/generator-converters@2.7.0-beta.2
|
|
26
49
|
|
|
50
|
+
## 0.4.0
|
|
51
|
+
|
|
52
|
+
### Patch Changes
|
|
53
|
+
|
|
54
|
+
- 150da1a: Simulated release
|
|
55
|
+
|
|
56
|
+
- 98cdfee: Added more object type validation
|
|
57
|
+
|
|
58
|
+
- b313525: bump osdk
|
|
59
|
+
|
|
60
|
+
- 3fbb596: Pipe through transactionId to endpoints that load data via object sets
|
|
61
|
+
|
|
62
|
+
- a1ffb20: Use new ephemeral media upload endpoint.
|
|
63
|
+
|
|
64
|
+
- af4f3bf: Remove the following features for RC:
|
|
65
|
+
- Property formatting
|
|
66
|
+
- Branching
|
|
67
|
+
- Constant RDPs
|
|
68
|
+
|
|
69
|
+
- Updated dependencies [322c5bc]
|
|
70
|
+
|
|
71
|
+
- Updated dependencies [322c5bc]
|
|
72
|
+
|
|
73
|
+
- Updated dependencies [b313525]
|
|
74
|
+
|
|
75
|
+
- Updated dependencies [3fbb596]
|
|
76
|
+
|
|
77
|
+
- Updated dependencies [f7ae38a]
|
|
78
|
+
|
|
79
|
+
- Updated dependencies [486ef7e]
|
|
80
|
+
|
|
81
|
+
- Updated dependencies [ea077c6]
|
|
82
|
+
|
|
83
|
+
- Updated dependencies [3d7dc0a]
|
|
84
|
+
|
|
85
|
+
- Updated dependencies [2556c64]
|
|
86
|
+
|
|
87
|
+
- Updated dependencies [5a9cd8f]
|
|
88
|
+
|
|
89
|
+
- Updated dependencies [b307201]
|
|
90
|
+
|
|
91
|
+
- Updated dependencies [e7bf02a]
|
|
92
|
+
|
|
93
|
+
- Updated dependencies [a1ffb20]
|
|
94
|
+
|
|
95
|
+
- Updated dependencies [b959085]
|
|
96
|
+
|
|
97
|
+
- Updated dependencies [af4f3bf]
|
|
98
|
+
|
|
99
|
+
- Updated dependencies [e62c692]
|
|
100
|
+
- @osdk/api@2.6.0
|
|
101
|
+
- @osdk/generator-converters@2.6.0
|
|
102
|
+
|
|
27
103
|
## 0.4.0-beta.6
|
|
28
104
|
|
|
29
105
|
### Minor Changes
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { CurrentUserPermissionDeniedError, GetInvalidPageTokenError, GetUserActiveStatusError, GetUserDeletedStatusError, GetUserNotFoundError } from "../errors.js";
|
|
18
|
+
import { OpenApiCallError } from "../handlers/util/handleOpenApiCall.js";
|
|
19
|
+
export class FauxAdmin {
|
|
20
|
+
#users = [];
|
|
21
|
+
#currentUserId;
|
|
22
|
+
registerUser(user) {
|
|
23
|
+
if (this.#users.some(({
|
|
24
|
+
id
|
|
25
|
+
}) => id === user.id)) {
|
|
26
|
+
throw new Error(`Failed to register new user. A user with ID ${user.id} already exists.`);
|
|
27
|
+
}
|
|
28
|
+
this.#users.push(user);
|
|
29
|
+
}
|
|
30
|
+
setCurrentUser(currentUserId) {
|
|
31
|
+
// Verify this user exists and is active
|
|
32
|
+
this.getUser(currentUserId, "ACTIVE");
|
|
33
|
+
this.#currentUserId = currentUserId;
|
|
34
|
+
}
|
|
35
|
+
getCurrentUser() {
|
|
36
|
+
if (this.#currentUserId == null) {
|
|
37
|
+
throw new OpenApiCallError(403, CurrentUserPermissionDeniedError);
|
|
38
|
+
}
|
|
39
|
+
const user = this.getUser(this.#currentUserId, "ACTIVE");
|
|
40
|
+
if (user == null) {
|
|
41
|
+
throw new OpenApiCallError(403, CurrentUserPermissionDeniedError);
|
|
42
|
+
}
|
|
43
|
+
return user;
|
|
44
|
+
}
|
|
45
|
+
getUser(userId, status) {
|
|
46
|
+
const user = this.#users.find(user => user.id === userId);
|
|
47
|
+
if (user == null) {
|
|
48
|
+
throw new OpenApiCallError(404, GetUserNotFoundError(userId));
|
|
49
|
+
}
|
|
50
|
+
if (user.status !== status) {
|
|
51
|
+
throw new OpenApiCallError(400, status === "DELETED" ? GetUserActiveStatusError(userId) : GetUserDeletedStatusError(userId));
|
|
52
|
+
}
|
|
53
|
+
return user;
|
|
54
|
+
}
|
|
55
|
+
listUsers(pageSize = this.#users.length, pageToken, status) {
|
|
56
|
+
const filteredUsers = status != null ? this.#users.filter(user => user.status === status) : this.#users;
|
|
57
|
+
const startIndex = pageToken != null ? filteredUsers.findIndex(user => user.id === pageToken) : 0;
|
|
58
|
+
if (pageToken != null && startIndex === -1) {
|
|
59
|
+
throw new OpenApiCallError(400, GetInvalidPageTokenError(pageToken));
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
users: filteredUsers.slice(startIndex, startIndex + pageSize),
|
|
63
|
+
nextPageToken: filteredUsers[startIndex + pageSize]?.id
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=FauxAdmin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FauxAdmin.js","names":["CurrentUserPermissionDeniedError","GetInvalidPageTokenError","GetUserActiveStatusError","GetUserDeletedStatusError","GetUserNotFoundError","OpenApiCallError","FauxAdmin","users","currentUserId","registerUser","user","some","id","Error","push","setCurrentUser","getUser","getCurrentUser","userId","status","find","listUsers","pageSize","length","pageToken","filteredUsers","filter","startIndex","findIndex","slice","nextPageToken"],"sources":["FauxAdmin.ts"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { User } from \"@osdk/foundry.admin\";\nimport {\n CurrentUserPermissionDeniedError,\n GetInvalidPageTokenError,\n GetUserActiveStatusError,\n GetUserDeletedStatusError,\n GetUserNotFoundError,\n} from \"../errors.js\";\nimport { OpenApiCallError } from \"../handlers/util/handleOpenApiCall.js\";\n\ntype UserStatus = \"ACTIVE\" | \"DELETED\";\n\nexport class FauxAdmin {\n #users: User[] = [];\n #currentUserId: string | undefined;\n\n registerUser(user: User): void {\n if (this.#users.some(({ id }) => id === user.id)) {\n throw new Error(\n `Failed to register new user. A user with ID ${user.id} already exists.`,\n );\n }\n\n this.#users.push(user);\n }\n\n setCurrentUser(currentUserId: string): void {\n // Verify this user exists and is active\n this.getUser(currentUserId, \"ACTIVE\");\n this.#currentUserId = currentUserId;\n }\n\n getCurrentUser(): User {\n if (this.#currentUserId == null) {\n throw new OpenApiCallError(\n 403,\n CurrentUserPermissionDeniedError,\n );\n }\n\n const user = this.getUser(this.#currentUserId, \"ACTIVE\");\n\n if (user == null) {\n throw new OpenApiCallError(\n 403,\n CurrentUserPermissionDeniedError,\n );\n }\n\n return user;\n }\n\n getUser(userId: string, status: UserStatus): User {\n const user = this.#users.find(user => user.id === userId);\n\n if (user == null) {\n throw new OpenApiCallError(404, GetUserNotFoundError(userId));\n }\n\n if (user.status !== status) {\n throw new OpenApiCallError(\n 400,\n status === \"DELETED\"\n ? GetUserActiveStatusError(userId)\n : GetUserDeletedStatusError(userId),\n );\n }\n\n return user;\n }\n\n listUsers(\n pageSize: number | undefined = this.#users.length,\n pageToken: string | undefined,\n status: UserStatus | undefined,\n ): { users: User[]; nextPageToken: string } {\n const filteredUsers = status != null\n ? this.#users.filter(user => user.status === status)\n : this.#users;\n\n const startIndex = pageToken != null\n ? filteredUsers.findIndex(user => user.id === pageToken)\n : 0;\n\n if (pageToken != null && startIndex === -1) {\n throw new OpenApiCallError(\n 400,\n GetInvalidPageTokenError(pageToken),\n );\n }\n\n return {\n users: filteredUsers.slice(startIndex, startIndex + pageSize),\n nextPageToken: filteredUsers[startIndex + pageSize]?.id,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
18
|
+
import { OpenApiCallError } from "../handlers/util/handleOpenApiCall.js";
|
|
19
|
+
import { FauxAdmin } from "./FauxAdmin.js";
|
|
20
|
+
function createUser(overrides = {}) {
|
|
21
|
+
return {
|
|
22
|
+
id: "user-1",
|
|
23
|
+
username: "test-user",
|
|
24
|
+
realm: "test-realm",
|
|
25
|
+
status: "ACTIVE",
|
|
26
|
+
attributes: {},
|
|
27
|
+
...overrides
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
describe(FauxAdmin, () => {
|
|
31
|
+
let fauxAdmin;
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
fauxAdmin = new FauxAdmin();
|
|
34
|
+
});
|
|
35
|
+
describe("registerUser", () => {
|
|
36
|
+
it("should register a new user", () => {
|
|
37
|
+
const user = createUser();
|
|
38
|
+
fauxAdmin.registerUser(user);
|
|
39
|
+
expect(fauxAdmin.getUser(user.id, "ACTIVE")).toEqual(user);
|
|
40
|
+
});
|
|
41
|
+
it("should throw an error when registering a user with duplicate id", () => {
|
|
42
|
+
const user = createUser();
|
|
43
|
+
fauxAdmin.registerUser(user);
|
|
44
|
+
expect(() => fauxAdmin.registerUser(user)).toThrow(`Failed to register new user. A user with ID ${user.id} already exists.`);
|
|
45
|
+
});
|
|
46
|
+
it("should allow registering multiple users with different ids", () => {
|
|
47
|
+
const user1 = createUser({
|
|
48
|
+
id: "user-1"
|
|
49
|
+
});
|
|
50
|
+
const user2 = createUser({
|
|
51
|
+
id: "user-2",
|
|
52
|
+
username: "test-user2"
|
|
53
|
+
});
|
|
54
|
+
fauxAdmin.registerUser(user1);
|
|
55
|
+
fauxAdmin.registerUser(user2);
|
|
56
|
+
expect(fauxAdmin.getUser("user-1", "ACTIVE")).toEqual(user1);
|
|
57
|
+
expect(fauxAdmin.getUser("user-2", "ACTIVE")).toEqual(user2);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe("setCurrentUser", () => {
|
|
61
|
+
it("should set the current user when user exists and is active", () => {
|
|
62
|
+
const user = createUser();
|
|
63
|
+
fauxAdmin.registerUser(user);
|
|
64
|
+
fauxAdmin.setCurrentUser(user.id);
|
|
65
|
+
expect(fauxAdmin.getCurrentUser()).toEqual(user);
|
|
66
|
+
});
|
|
67
|
+
it("should throw when setting current user to non-existent user", () => {
|
|
68
|
+
expect(() => fauxAdmin.setCurrentUser("non-existent")).toThrow(OpenApiCallError);
|
|
69
|
+
});
|
|
70
|
+
it("should throw when setting current user to deleted user", () => {
|
|
71
|
+
const user = createUser({
|
|
72
|
+
status: "DELETED"
|
|
73
|
+
});
|
|
74
|
+
fauxAdmin.registerUser(user);
|
|
75
|
+
expect(() => fauxAdmin.setCurrentUser(user.id)).toThrow(OpenApiCallError);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe("getCurrentUser", () => {
|
|
79
|
+
it("should return the current user when set", () => {
|
|
80
|
+
const user = createUser();
|
|
81
|
+
fauxAdmin.registerUser(user);
|
|
82
|
+
fauxAdmin.setCurrentUser(user.id);
|
|
83
|
+
expect(fauxAdmin.getCurrentUser()).toEqual(user);
|
|
84
|
+
});
|
|
85
|
+
it("should throw when no current user is set", () => {
|
|
86
|
+
expect(() => fauxAdmin.getCurrentUser()).toThrow();
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
describe("getUser", () => {
|
|
90
|
+
it("should return active user when requesting active status", () => {
|
|
91
|
+
const user = createUser({
|
|
92
|
+
status: "ACTIVE"
|
|
93
|
+
});
|
|
94
|
+
fauxAdmin.registerUser(user);
|
|
95
|
+
expect(fauxAdmin.getUser(user.id, "ACTIVE")).toEqual(user);
|
|
96
|
+
});
|
|
97
|
+
it("should return deleted user when requesting deleted status", () => {
|
|
98
|
+
const user = createUser({
|
|
99
|
+
status: "DELETED"
|
|
100
|
+
});
|
|
101
|
+
fauxAdmin.registerUser(user);
|
|
102
|
+
expect(fauxAdmin.getUser(user.id, "DELETED")).toEqual(user);
|
|
103
|
+
});
|
|
104
|
+
it("should throw 404 when user does not exist", () => {
|
|
105
|
+
try {
|
|
106
|
+
fauxAdmin.getUser("non-existent", "ACTIVE");
|
|
107
|
+
expect.fail("Expected error to be thrown");
|
|
108
|
+
} catch (e) {
|
|
109
|
+
expect(e).toBeInstanceOf(OpenApiCallError);
|
|
110
|
+
expect(e.status).toBe(404);
|
|
111
|
+
expect(e.json.errorName).toBe("UserNotFound");
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
it("should throw 400 when requesting active user but user is deleted", () => {
|
|
115
|
+
const user = createUser({
|
|
116
|
+
status: "DELETED"
|
|
117
|
+
});
|
|
118
|
+
fauxAdmin.registerUser(user);
|
|
119
|
+
try {
|
|
120
|
+
fauxAdmin.getUser(user.id, "ACTIVE");
|
|
121
|
+
expect.fail("Expected error to be thrown");
|
|
122
|
+
} catch (e) {
|
|
123
|
+
expect(e).toBeInstanceOf(OpenApiCallError);
|
|
124
|
+
expect(e.status).toBe(400);
|
|
125
|
+
expect(e.json.errorName).toBe("UserDeleted");
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
it("should throw 400 when requesting deleted user but user is active", () => {
|
|
129
|
+
const user = createUser({
|
|
130
|
+
status: "ACTIVE"
|
|
131
|
+
});
|
|
132
|
+
fauxAdmin.registerUser(user);
|
|
133
|
+
try {
|
|
134
|
+
fauxAdmin.getUser(user.id, "DELETED");
|
|
135
|
+
expect.fail("Expected error to be thrown");
|
|
136
|
+
} catch (e) {
|
|
137
|
+
expect(e).toBeInstanceOf(OpenApiCallError);
|
|
138
|
+
expect(e.status).toBe(400);
|
|
139
|
+
expect(e.json.errorName).toBe("UserIsActive");
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
describe("listUsers", () => {
|
|
144
|
+
it("should return empty list when no users", () => {
|
|
145
|
+
const result = fauxAdmin.listUsers(10, undefined, "ACTIVE");
|
|
146
|
+
expect(result.users).toEqual([]);
|
|
147
|
+
expect(result.nextPageToken).toBeUndefined();
|
|
148
|
+
});
|
|
149
|
+
it("should return only active users when status is ACTIVE", () => {
|
|
150
|
+
const activeUser = createUser({
|
|
151
|
+
id: "active-1",
|
|
152
|
+
status: "ACTIVE"
|
|
153
|
+
});
|
|
154
|
+
const deletedUser = createUser({
|
|
155
|
+
id: "deleted-1",
|
|
156
|
+
status: "DELETED"
|
|
157
|
+
});
|
|
158
|
+
fauxAdmin.registerUser(activeUser);
|
|
159
|
+
fauxAdmin.registerUser(deletedUser);
|
|
160
|
+
const result = fauxAdmin.listUsers(10, undefined, "ACTIVE");
|
|
161
|
+
expect(result.users).toEqual([activeUser]);
|
|
162
|
+
});
|
|
163
|
+
it("should return only deleted users when status is DELETED", () => {
|
|
164
|
+
const activeUser = createUser({
|
|
165
|
+
id: "active-1",
|
|
166
|
+
status: "ACTIVE"
|
|
167
|
+
});
|
|
168
|
+
const deletedUser = createUser({
|
|
169
|
+
id: "deleted-1",
|
|
170
|
+
status: "DELETED"
|
|
171
|
+
});
|
|
172
|
+
fauxAdmin.registerUser(activeUser);
|
|
173
|
+
fauxAdmin.registerUser(deletedUser);
|
|
174
|
+
const result = fauxAdmin.listUsers(10, undefined, "DELETED");
|
|
175
|
+
expect(result.users).toEqual([deletedUser]);
|
|
176
|
+
});
|
|
177
|
+
it("should paginate results correctly", () => {
|
|
178
|
+
const users = [createUser({
|
|
179
|
+
id: "user-1",
|
|
180
|
+
status: "ACTIVE"
|
|
181
|
+
}), createUser({
|
|
182
|
+
id: "user-2",
|
|
183
|
+
status: "ACTIVE"
|
|
184
|
+
}), createUser({
|
|
185
|
+
id: "user-3",
|
|
186
|
+
status: "ACTIVE"
|
|
187
|
+
})];
|
|
188
|
+
users.forEach(user => fauxAdmin.registerUser(user));
|
|
189
|
+
const page1 = fauxAdmin.listUsers(2, undefined, "ACTIVE");
|
|
190
|
+
expect(page1.users).toHaveLength(2);
|
|
191
|
+
expect(page1.users).toEqual([users[0], users[1]]);
|
|
192
|
+
expect(page1.nextPageToken).toBe("user-3");
|
|
193
|
+
const page2 = fauxAdmin.listUsers(2, page1.nextPageToken, "ACTIVE");
|
|
194
|
+
expect(page2.users).toHaveLength(1);
|
|
195
|
+
expect(page2.users).toEqual([users[2]]);
|
|
196
|
+
expect(page2.nextPageToken).toBeUndefined();
|
|
197
|
+
});
|
|
198
|
+
it("should throw on invalid page token", () => {
|
|
199
|
+
const user = createUser();
|
|
200
|
+
fauxAdmin.registerUser(user);
|
|
201
|
+
try {
|
|
202
|
+
fauxAdmin.listUsers(10, "invalid-token", "ACTIVE");
|
|
203
|
+
expect.fail("Expected error to be thrown");
|
|
204
|
+
} catch (e) {
|
|
205
|
+
expect(e).toBeInstanceOf(OpenApiCallError);
|
|
206
|
+
expect(e.status).toBe(400);
|
|
207
|
+
expect(e.json.errorName).toBe("InvalidPageToken");
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
it("should respect pageSize", () => {
|
|
211
|
+
const users = [createUser({
|
|
212
|
+
id: "user-1",
|
|
213
|
+
status: "ACTIVE"
|
|
214
|
+
}), createUser({
|
|
215
|
+
id: "user-2",
|
|
216
|
+
status: "ACTIVE"
|
|
217
|
+
}), createUser({
|
|
218
|
+
id: "user-3",
|
|
219
|
+
status: "ACTIVE"
|
|
220
|
+
})];
|
|
221
|
+
users.forEach(user => fauxAdmin.registerUser(user));
|
|
222
|
+
const result = fauxAdmin.listUsers(1, undefined, "ACTIVE");
|
|
223
|
+
expect(result.users).toHaveLength(1);
|
|
224
|
+
expect(result.users).toEqual([users[0]]);
|
|
225
|
+
expect(result.nextPageToken).toBe("user-2");
|
|
226
|
+
});
|
|
227
|
+
it("should handle page token pointing to middle of list", () => {
|
|
228
|
+
const users = [createUser({
|
|
229
|
+
id: "user-1",
|
|
230
|
+
status: "ACTIVE"
|
|
231
|
+
}), createUser({
|
|
232
|
+
id: "user-2",
|
|
233
|
+
status: "ACTIVE"
|
|
234
|
+
}), createUser({
|
|
235
|
+
id: "user-3",
|
|
236
|
+
status: "ACTIVE"
|
|
237
|
+
}), createUser({
|
|
238
|
+
id: "user-4",
|
|
239
|
+
status: "ACTIVE"
|
|
240
|
+
})];
|
|
241
|
+
users.forEach(user => fauxAdmin.registerUser(user));
|
|
242
|
+
const result = fauxAdmin.listUsers(2, "user-2", "ACTIVE");
|
|
243
|
+
expect(result.users).toEqual([users[1], users[2]]);
|
|
244
|
+
expect(result.nextPageToken).toBe("user-4");
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
//# sourceMappingURL=FauxAdmin.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FauxAdmin.test.js","names":["beforeEach","describe","expect","it","OpenApiCallError","FauxAdmin","createUser","overrides","id","username","realm","status","attributes","fauxAdmin","user","registerUser","getUser","toEqual","toThrow","user1","user2","setCurrentUser","getCurrentUser","fail","e","toBeInstanceOf","toBe","json","errorName","result","listUsers","undefined","users","nextPageToken","toBeUndefined","activeUser","deletedUser","forEach","page1","toHaveLength","page2"],"sources":["FauxAdmin.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { User } from \"@osdk/foundry.admin\";\nimport { beforeEach, describe, expect, it } from \"vitest\";\nimport { OpenApiCallError } from \"../handlers/util/handleOpenApiCall.js\";\nimport { FauxAdmin } from \"./FauxAdmin.js\";\n\nfunction createUser(overrides: Partial<User> = {}): User {\n return {\n id: \"user-1\",\n username: \"test-user\",\n realm: \"test-realm\",\n status: \"ACTIVE\",\n attributes: {},\n ...overrides,\n };\n}\n\ndescribe(FauxAdmin, () => {\n let fauxAdmin: FauxAdmin;\n\n beforeEach(() => {\n fauxAdmin = new FauxAdmin();\n });\n\n describe(\"registerUser\", () => {\n it(\"should register a new user\", () => {\n const user = createUser();\n\n fauxAdmin.registerUser(user);\n\n expect(fauxAdmin.getUser(user.id, \"ACTIVE\")).toEqual(user);\n });\n\n it(\"should throw an error when registering a user with duplicate id\", () => {\n const user = createUser();\n\n fauxAdmin.registerUser(user);\n\n expect(() => fauxAdmin.registerUser(user)).toThrow(\n `Failed to register new user. A user with ID ${user.id} already exists.`,\n );\n });\n\n it(\"should allow registering multiple users with different ids\", () => {\n const user1 = createUser({ id: \"user-1\" });\n const user2 = createUser({ id: \"user-2\", username: \"test-user2\" });\n\n fauxAdmin.registerUser(user1);\n fauxAdmin.registerUser(user2);\n\n expect(fauxAdmin.getUser(\"user-1\", \"ACTIVE\")).toEqual(user1);\n expect(fauxAdmin.getUser(\"user-2\", \"ACTIVE\")).toEqual(user2);\n });\n });\n\n describe(\"setCurrentUser\", () => {\n it(\"should set the current user when user exists and is active\", () => {\n const user = createUser();\n fauxAdmin.registerUser(user);\n\n fauxAdmin.setCurrentUser(user.id);\n\n expect(fauxAdmin.getCurrentUser()).toEqual(user);\n });\n\n it(\"should throw when setting current user to non-existent user\", () => {\n expect(() => fauxAdmin.setCurrentUser(\"non-existent\")).toThrow(\n OpenApiCallError,\n );\n });\n\n it(\"should throw when setting current user to deleted user\", () => {\n const user = createUser({ status: \"DELETED\" });\n fauxAdmin.registerUser(user);\n\n expect(() => fauxAdmin.setCurrentUser(user.id)).toThrow(OpenApiCallError);\n });\n });\n\n describe(\"getCurrentUser\", () => {\n it(\"should return the current user when set\", () => {\n const user = createUser();\n fauxAdmin.registerUser(user);\n fauxAdmin.setCurrentUser(user.id);\n\n expect(fauxAdmin.getCurrentUser()).toEqual(user);\n });\n\n it(\"should throw when no current user is set\", () => {\n expect(() => fauxAdmin.getCurrentUser()).toThrow();\n });\n });\n\n describe(\"getUser\", () => {\n it(\"should return active user when requesting active status\", () => {\n const user = createUser({ status: \"ACTIVE\" });\n fauxAdmin.registerUser(user);\n\n expect(fauxAdmin.getUser(user.id, \"ACTIVE\")).toEqual(user);\n });\n\n it(\"should return deleted user when requesting deleted status\", () => {\n const user = createUser({ status: \"DELETED\" });\n fauxAdmin.registerUser(user);\n\n expect(fauxAdmin.getUser(user.id, \"DELETED\")).toEqual(user);\n });\n\n it(\"should throw 404 when user does not exist\", () => {\n try {\n fauxAdmin.getUser(\"non-existent\", \"ACTIVE\");\n expect.fail(\"Expected error to be thrown\");\n } catch (e) {\n expect(e).toBeInstanceOf(OpenApiCallError);\n expect((e as OpenApiCallError).status).toBe(404);\n expect((e as OpenApiCallError).json.errorName).toBe(\"UserNotFound\");\n }\n });\n\n it(\"should throw 400 when requesting active user but user is deleted\", () => {\n const user = createUser({ status: \"DELETED\" });\n fauxAdmin.registerUser(user);\n\n try {\n fauxAdmin.getUser(user.id, \"ACTIVE\");\n expect.fail(\"Expected error to be thrown\");\n } catch (e) {\n expect(e).toBeInstanceOf(OpenApiCallError);\n expect((e as OpenApiCallError).status).toBe(400);\n expect((e as OpenApiCallError).json.errorName).toBe(\"UserDeleted\");\n }\n });\n\n it(\"should throw 400 when requesting deleted user but user is active\", () => {\n const user = createUser({ status: \"ACTIVE\" });\n fauxAdmin.registerUser(user);\n\n try {\n fauxAdmin.getUser(user.id, \"DELETED\");\n expect.fail(\"Expected error to be thrown\");\n } catch (e) {\n expect(e).toBeInstanceOf(OpenApiCallError);\n expect((e as OpenApiCallError).status).toBe(400);\n expect((e as OpenApiCallError).json.errorName).toBe(\"UserIsActive\");\n }\n });\n });\n\n describe(\"listUsers\", () => {\n it(\"should return empty list when no users\", () => {\n const result = fauxAdmin.listUsers(10, undefined, \"ACTIVE\");\n\n expect(result.users).toEqual([]);\n expect(result.nextPageToken).toBeUndefined();\n });\n\n it(\"should return only active users when status is ACTIVE\", () => {\n const activeUser = createUser({ id: \"active-1\", status: \"ACTIVE\" });\n const deletedUser = createUser({ id: \"deleted-1\", status: \"DELETED\" });\n\n fauxAdmin.registerUser(activeUser);\n fauxAdmin.registerUser(deletedUser);\n\n const result = fauxAdmin.listUsers(10, undefined, \"ACTIVE\");\n\n expect(result.users).toEqual([activeUser]);\n });\n\n it(\"should return only deleted users when status is DELETED\", () => {\n const activeUser = createUser({ id: \"active-1\", status: \"ACTIVE\" });\n const deletedUser = createUser({ id: \"deleted-1\", status: \"DELETED\" });\n\n fauxAdmin.registerUser(activeUser);\n fauxAdmin.registerUser(deletedUser);\n\n const result = fauxAdmin.listUsers(10, undefined, \"DELETED\");\n\n expect(result.users).toEqual([deletedUser]);\n });\n\n it(\"should paginate results correctly\", () => {\n const users = [\n createUser({ id: \"user-1\", status: \"ACTIVE\" }),\n createUser({ id: \"user-2\", status: \"ACTIVE\" }),\n createUser({ id: \"user-3\", status: \"ACTIVE\" }),\n ];\n\n users.forEach(user => fauxAdmin.registerUser(user));\n\n const page1 = fauxAdmin.listUsers(2, undefined, \"ACTIVE\");\n\n expect(page1.users).toHaveLength(2);\n expect(page1.users).toEqual([users[0], users[1]]);\n expect(page1.nextPageToken).toBe(\"user-3\");\n\n const page2 = fauxAdmin.listUsers(2, page1.nextPageToken, \"ACTIVE\");\n\n expect(page2.users).toHaveLength(1);\n expect(page2.users).toEqual([users[2]]);\n expect(page2.nextPageToken).toBeUndefined();\n });\n\n it(\"should throw on invalid page token\", () => {\n const user = createUser();\n fauxAdmin.registerUser(user);\n\n try {\n fauxAdmin.listUsers(10, \"invalid-token\", \"ACTIVE\");\n expect.fail(\"Expected error to be thrown\");\n } catch (e) {\n expect(e).toBeInstanceOf(OpenApiCallError);\n expect((e as OpenApiCallError).status).toBe(400);\n expect((e as OpenApiCallError).json.errorName).toBe(\"InvalidPageToken\");\n }\n });\n\n it(\"should respect pageSize\", () => {\n const users = [\n createUser({ id: \"user-1\", status: \"ACTIVE\" }),\n createUser({ id: \"user-2\", status: \"ACTIVE\" }),\n createUser({ id: \"user-3\", status: \"ACTIVE\" }),\n ];\n\n users.forEach(user => fauxAdmin.registerUser(user));\n\n const result = fauxAdmin.listUsers(1, undefined, \"ACTIVE\");\n\n expect(result.users).toHaveLength(1);\n expect(result.users).toEqual([users[0]]);\n expect(result.nextPageToken).toBe(\"user-2\");\n });\n\n it(\"should handle page token pointing to middle of list\", () => {\n const users = [\n createUser({ id: \"user-1\", status: \"ACTIVE\" }),\n createUser({ id: \"user-2\", status: \"ACTIVE\" }),\n createUser({ id: \"user-3\", status: \"ACTIVE\" }),\n createUser({ id: \"user-4\", status: \"ACTIVE\" }),\n ];\n\n users.forEach(user => fauxAdmin.registerUser(user));\n\n const result = fauxAdmin.listUsers(2, \"user-2\", \"ACTIVE\");\n\n expect(result.users).toEqual([users[1], users[2]]);\n expect(result.nextPageToken).toBe(\"user-4\");\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AACzD,SAASC,gBAAgB,QAAQ,uCAAuC;AACxE,SAASC,SAAS,QAAQ,gBAAgB;AAE1C,SAASC,UAAUA,CAACC,SAAwB,GAAG,CAAC,CAAC,EAAQ;EACvD,OAAO;IACLC,EAAE,EAAE,QAAQ;IACZC,QAAQ,EAAE,WAAW;IACrBC,KAAK,EAAE,YAAY;IACnBC,MAAM,EAAE,QAAQ;IAChBC,UAAU,EAAE,CAAC,CAAC;IACd,GAAGL;EACL,CAAC;AACH;AAEAN,QAAQ,CAACI,SAAS,EAAE,MAAM;EACxB,IAAIQ,SAAoB;EAExBb,UAAU,CAAC,MAAM;IACfa,SAAS,GAAG,IAAIR,SAAS,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEFJ,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC7BE,EAAE,CAAC,4BAA4B,EAAE,MAAM;MACrC,MAAMW,IAAI,GAAGR,UAAU,CAAC,CAAC;MAEzBO,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5BZ,MAAM,CAACW,SAAS,CAACG,OAAO,CAACF,IAAI,CAACN,EAAE,EAAE,QAAQ,CAAC,CAAC,CAACS,OAAO,CAACH,IAAI,CAAC;IAC5D,CAAC,CAAC;IAEFX,EAAE,CAAC,iEAAiE,EAAE,MAAM;MAC1E,MAAMW,IAAI,GAAGR,UAAU,CAAC,CAAC;MAEzBO,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5BZ,MAAM,CAAC,MAAMW,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC,CAAC,CAACI,OAAO,CAChD,+CAA+CJ,IAAI,CAACN,EAAE,kBACxD,CAAC;IACH,CAAC,CAAC;IAEFL,EAAE,CAAC,4DAA4D,EAAE,MAAM;MACrE,MAAMgB,KAAK,GAAGb,UAAU,CAAC;QAAEE,EAAE,EAAE;MAAS,CAAC,CAAC;MAC1C,MAAMY,KAAK,GAAGd,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEC,QAAQ,EAAE;MAAa,CAAC,CAAC;MAElEI,SAAS,CAACE,YAAY,CAACI,KAAK,CAAC;MAC7BN,SAAS,CAACE,YAAY,CAACK,KAAK,CAAC;MAE7BlB,MAAM,CAACW,SAAS,CAACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAACC,OAAO,CAACE,KAAK,CAAC;MAC5DjB,MAAM,CAACW,SAAS,CAACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAACC,OAAO,CAACG,KAAK,CAAC;IAC9D,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFnB,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAC/BE,EAAE,CAAC,4DAA4D,EAAE,MAAM;MACrE,MAAMW,IAAI,GAAGR,UAAU,CAAC,CAAC;MACzBO,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5BD,SAAS,CAACQ,cAAc,CAACP,IAAI,CAACN,EAAE,CAAC;MAEjCN,MAAM,CAACW,SAAS,CAACS,cAAc,CAAC,CAAC,CAAC,CAACL,OAAO,CAACH,IAAI,CAAC;IAClD,CAAC,CAAC;IAEFX,EAAE,CAAC,6DAA6D,EAAE,MAAM;MACtED,MAAM,CAAC,MAAMW,SAAS,CAACQ,cAAc,CAAC,cAAc,CAAC,CAAC,CAACH,OAAO,CAC5Dd,gBACF,CAAC;IACH,CAAC,CAAC;IAEFD,EAAE,CAAC,wDAAwD,EAAE,MAAM;MACjE,MAAMW,IAAI,GAAGR,UAAU,CAAC;QAAEK,MAAM,EAAE;MAAU,CAAC,CAAC;MAC9CE,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5BZ,MAAM,CAAC,MAAMW,SAAS,CAACQ,cAAc,CAACP,IAAI,CAACN,EAAE,CAAC,CAAC,CAACU,OAAO,CAACd,gBAAgB,CAAC;IAC3E,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFH,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAC/BE,EAAE,CAAC,yCAAyC,EAAE,MAAM;MAClD,MAAMW,IAAI,GAAGR,UAAU,CAAC,CAAC;MACzBO,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAC5BD,SAAS,CAACQ,cAAc,CAACP,IAAI,CAACN,EAAE,CAAC;MAEjCN,MAAM,CAACW,SAAS,CAACS,cAAc,CAAC,CAAC,CAAC,CAACL,OAAO,CAACH,IAAI,CAAC;IAClD,CAAC,CAAC;IAEFX,EAAE,CAAC,0CAA0C,EAAE,MAAM;MACnDD,MAAM,CAAC,MAAMW,SAAS,CAACS,cAAc,CAAC,CAAC,CAAC,CAACJ,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFjB,QAAQ,CAAC,SAAS,EAAE,MAAM;IACxBE,EAAE,CAAC,yDAAyD,EAAE,MAAM;MAClE,MAAMW,IAAI,GAAGR,UAAU,CAAC;QAAEK,MAAM,EAAE;MAAS,CAAC,CAAC;MAC7CE,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5BZ,MAAM,CAACW,SAAS,CAACG,OAAO,CAACF,IAAI,CAACN,EAAE,EAAE,QAAQ,CAAC,CAAC,CAACS,OAAO,CAACH,IAAI,CAAC;IAC5D,CAAC,CAAC;IAEFX,EAAE,CAAC,2DAA2D,EAAE,MAAM;MACpE,MAAMW,IAAI,GAAGR,UAAU,CAAC;QAAEK,MAAM,EAAE;MAAU,CAAC,CAAC;MAC9CE,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5BZ,MAAM,CAACW,SAAS,CAACG,OAAO,CAACF,IAAI,CAACN,EAAE,EAAE,SAAS,CAAC,CAAC,CAACS,OAAO,CAACH,IAAI,CAAC;IAC7D,CAAC,CAAC;IAEFX,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACpD,IAAI;QACFU,SAAS,CAACG,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC3Cd,MAAM,CAACqB,IAAI,CAAC,6BAA6B,CAAC;MAC5C,CAAC,CAAC,OAAOC,CAAC,EAAE;QACVtB,MAAM,CAACsB,CAAC,CAAC,CAACC,cAAc,CAACrB,gBAAgB,CAAC;QAC1CF,MAAM,CAAEsB,CAAC,CAAsBb,MAAM,CAAC,CAACe,IAAI,CAAC,GAAG,CAAC;QAChDxB,MAAM,CAAEsB,CAAC,CAAsBG,IAAI,CAACC,SAAS,CAAC,CAACF,IAAI,CAAC,cAAc,CAAC;MACrE;IACF,CAAC,CAAC;IAEFvB,EAAE,CAAC,kEAAkE,EAAE,MAAM;MAC3E,MAAMW,IAAI,GAAGR,UAAU,CAAC;QAAEK,MAAM,EAAE;MAAU,CAAC,CAAC;MAC9CE,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5B,IAAI;QACFD,SAAS,CAACG,OAAO,CAACF,IAAI,CAACN,EAAE,EAAE,QAAQ,CAAC;QACpCN,MAAM,CAACqB,IAAI,CAAC,6BAA6B,CAAC;MAC5C,CAAC,CAAC,OAAOC,CAAC,EAAE;QACVtB,MAAM,CAACsB,CAAC,CAAC,CAACC,cAAc,CAACrB,gBAAgB,CAAC;QAC1CF,MAAM,CAAEsB,CAAC,CAAsBb,MAAM,CAAC,CAACe,IAAI,CAAC,GAAG,CAAC;QAChDxB,MAAM,CAAEsB,CAAC,CAAsBG,IAAI,CAACC,SAAS,CAAC,CAACF,IAAI,CAAC,aAAa,CAAC;MACpE;IACF,CAAC,CAAC;IAEFvB,EAAE,CAAC,kEAAkE,EAAE,MAAM;MAC3E,MAAMW,IAAI,GAAGR,UAAU,CAAC;QAAEK,MAAM,EAAE;MAAS,CAAC,CAAC;MAC7CE,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5B,IAAI;QACFD,SAAS,CAACG,OAAO,CAACF,IAAI,CAACN,EAAE,EAAE,SAAS,CAAC;QACrCN,MAAM,CAACqB,IAAI,CAAC,6BAA6B,CAAC;MAC5C,CAAC,CAAC,OAAOC,CAAC,EAAE;QACVtB,MAAM,CAACsB,CAAC,CAAC,CAACC,cAAc,CAACrB,gBAAgB,CAAC;QAC1CF,MAAM,CAAEsB,CAAC,CAAsBb,MAAM,CAAC,CAACe,IAAI,CAAC,GAAG,CAAC;QAChDxB,MAAM,CAAEsB,CAAC,CAAsBG,IAAI,CAACC,SAAS,CAAC,CAACF,IAAI,CAAC,cAAc,CAAC;MACrE;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzB,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC1BE,EAAE,CAAC,wCAAwC,EAAE,MAAM;MACjD,MAAM0B,MAAM,GAAGhB,SAAS,CAACiB,SAAS,CAAC,EAAE,EAAEC,SAAS,EAAE,QAAQ,CAAC;MAE3D7B,MAAM,CAAC2B,MAAM,CAACG,KAAK,CAAC,CAACf,OAAO,CAAC,EAAE,CAAC;MAChCf,MAAM,CAAC2B,MAAM,CAACI,aAAa,CAAC,CAACC,aAAa,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF/B,EAAE,CAAC,uDAAuD,EAAE,MAAM;MAChE,MAAMgC,UAAU,GAAG7B,UAAU,CAAC;QAAEE,EAAE,EAAE,UAAU;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC;MACnE,MAAMyB,WAAW,GAAG9B,UAAU,CAAC;QAAEE,EAAE,EAAE,WAAW;QAAEG,MAAM,EAAE;MAAU,CAAC,CAAC;MAEtEE,SAAS,CAACE,YAAY,CAACoB,UAAU,CAAC;MAClCtB,SAAS,CAACE,YAAY,CAACqB,WAAW,CAAC;MAEnC,MAAMP,MAAM,GAAGhB,SAAS,CAACiB,SAAS,CAAC,EAAE,EAAEC,SAAS,EAAE,QAAQ,CAAC;MAE3D7B,MAAM,CAAC2B,MAAM,CAACG,KAAK,CAAC,CAACf,OAAO,CAAC,CAACkB,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEFhC,EAAE,CAAC,yDAAyD,EAAE,MAAM;MAClE,MAAMgC,UAAU,GAAG7B,UAAU,CAAC;QAAEE,EAAE,EAAE,UAAU;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC;MACnE,MAAMyB,WAAW,GAAG9B,UAAU,CAAC;QAAEE,EAAE,EAAE,WAAW;QAAEG,MAAM,EAAE;MAAU,CAAC,CAAC;MAEtEE,SAAS,CAACE,YAAY,CAACoB,UAAU,CAAC;MAClCtB,SAAS,CAACE,YAAY,CAACqB,WAAW,CAAC;MAEnC,MAAMP,MAAM,GAAGhB,SAAS,CAACiB,SAAS,CAAC,EAAE,EAAEC,SAAS,EAAE,SAAS,CAAC;MAE5D7B,MAAM,CAAC2B,MAAM,CAACG,KAAK,CAAC,CAACf,OAAO,CAAC,CAACmB,WAAW,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEFjC,EAAE,CAAC,mCAAmC,EAAE,MAAM;MAC5C,MAAM6B,KAAK,GAAG,CACZ1B,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,EAC9CL,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,EAC9CL,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,CAC/C;MAEDqB,KAAK,CAACK,OAAO,CAACvB,IAAI,IAAID,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC,CAAC;MAEnD,MAAMwB,KAAK,GAAGzB,SAAS,CAACiB,SAAS,CAAC,CAAC,EAAEC,SAAS,EAAE,QAAQ,CAAC;MAEzD7B,MAAM,CAACoC,KAAK,CAACN,KAAK,CAAC,CAACO,YAAY,CAAC,CAAC,CAAC;MACnCrC,MAAM,CAACoC,KAAK,CAACN,KAAK,CAAC,CAACf,OAAO,CAAC,CAACe,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MACjD9B,MAAM,CAACoC,KAAK,CAACL,aAAa,CAAC,CAACP,IAAI,CAAC,QAAQ,CAAC;MAE1C,MAAMc,KAAK,GAAG3B,SAAS,CAACiB,SAAS,CAAC,CAAC,EAAEQ,KAAK,CAACL,aAAa,EAAE,QAAQ,CAAC;MAEnE/B,MAAM,CAACsC,KAAK,CAACR,KAAK,CAAC,CAACO,YAAY,CAAC,CAAC,CAAC;MACnCrC,MAAM,CAACsC,KAAK,CAACR,KAAK,CAAC,CAACf,OAAO,CAAC,CAACe,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MACvC9B,MAAM,CAACsC,KAAK,CAACP,aAAa,CAAC,CAACC,aAAa,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF/B,EAAE,CAAC,oCAAoC,EAAE,MAAM;MAC7C,MAAMW,IAAI,GAAGR,UAAU,CAAC,CAAC;MACzBO,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC;MAE5B,IAAI;QACFD,SAAS,CAACiB,SAAS,CAAC,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC;QAClD5B,MAAM,CAACqB,IAAI,CAAC,6BAA6B,CAAC;MAC5C,CAAC,CAAC,OAAOC,CAAC,EAAE;QACVtB,MAAM,CAACsB,CAAC,CAAC,CAACC,cAAc,CAACrB,gBAAgB,CAAC;QAC1CF,MAAM,CAAEsB,CAAC,CAAsBb,MAAM,CAAC,CAACe,IAAI,CAAC,GAAG,CAAC;QAChDxB,MAAM,CAAEsB,CAAC,CAAsBG,IAAI,CAACC,SAAS,CAAC,CAACF,IAAI,CAAC,kBAAkB,CAAC;MACzE;IACF,CAAC,CAAC;IAEFvB,EAAE,CAAC,yBAAyB,EAAE,MAAM;MAClC,MAAM6B,KAAK,GAAG,CACZ1B,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,EAC9CL,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,EAC9CL,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,CAC/C;MAEDqB,KAAK,CAACK,OAAO,CAACvB,IAAI,IAAID,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC,CAAC;MAEnD,MAAMe,MAAM,GAAGhB,SAAS,CAACiB,SAAS,CAAC,CAAC,EAAEC,SAAS,EAAE,QAAQ,CAAC;MAE1D7B,MAAM,CAAC2B,MAAM,CAACG,KAAK,CAAC,CAACO,YAAY,CAAC,CAAC,CAAC;MACpCrC,MAAM,CAAC2B,MAAM,CAACG,KAAK,CAAC,CAACf,OAAO,CAAC,CAACe,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MACxC9B,MAAM,CAAC2B,MAAM,CAACI,aAAa,CAAC,CAACP,IAAI,CAAC,QAAQ,CAAC;IAC7C,CAAC,CAAC;IAEFvB,EAAE,CAAC,qDAAqD,EAAE,MAAM;MAC9D,MAAM6B,KAAK,GAAG,CACZ1B,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,EAC9CL,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,EAC9CL,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,EAC9CL,UAAU,CAAC;QAAEE,EAAE,EAAE,QAAQ;QAAEG,MAAM,EAAE;MAAS,CAAC,CAAC,CAC/C;MAEDqB,KAAK,CAACK,OAAO,CAACvB,IAAI,IAAID,SAAS,CAACE,YAAY,CAACD,IAAI,CAAC,CAAC;MAEnD,MAAMe,MAAM,GAAGhB,SAAS,CAACiB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC;MAEzD5B,MAAM,CAAC2B,MAAM,CAACG,KAAK,CAAC,CAACf,OAAO,CAAC,CAACe,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAClD9B,MAAM,CAAC2B,MAAM,CAACI,aAAa,CAAC,CAACP,IAAI,CAAC,QAAQ,CAAC;IAC7C,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -46,13 +46,11 @@ import { validateAction } from "./validateAction.js";
|
|
|
46
46
|
|
|
47
47
|
export class FauxDataStore {
|
|
48
48
|
#objects = new DefaultMap(() => new Map());
|
|
49
|
-
#objectsWithSecurities = new DefaultMap(() => new Map());
|
|
50
49
|
#singleLinks = new DefaultMap(() => new Map());
|
|
51
50
|
#manyLinks = new DefaultMap(() => new MultiMap(Set));
|
|
52
51
|
#fauxOntology;
|
|
53
52
|
#attachments;
|
|
54
53
|
#timeSeriesData = new DefaultMap(() => new DefaultMap(() => new DefaultMap(() => [])));
|
|
55
|
-
#propertySecurities = new DefaultMap(() => [{}]);
|
|
56
54
|
#media = new DefaultMap(() => new DefaultMap(() => {
|
|
57
55
|
return new Map();
|
|
58
56
|
}));
|
|
@@ -148,16 +146,12 @@ export class FauxDataStore {
|
|
|
148
146
|
...bso
|
|
149
147
|
});
|
|
150
148
|
this.#objects.get(bso.__apiName).set(String(bso.__primaryKey), frozenBso);
|
|
149
|
+
if (this.#strict) {
|
|
150
|
+
// registers links
|
|
151
|
+
this.replaceObjectOrThrow(frozenBso);
|
|
152
|
+
}
|
|
151
153
|
return frozenBso;
|
|
152
154
|
}
|
|
153
|
-
registerObjectWithPropertySecurities(regularObject, securedObject, propertySecurities) {
|
|
154
|
-
const registeredObj = this.registerObject(regularObject);
|
|
155
|
-
this.#objectsWithSecurities.get(registeredObj.__apiName).set(String(registeredObj.__primaryKey), Object.freeze({
|
|
156
|
-
...securedObject
|
|
157
|
-
}));
|
|
158
|
-
this.#propertySecurities.set(objectLocator(registeredObj), propertySecurities);
|
|
159
|
-
return registeredObj;
|
|
160
|
-
}
|
|
161
155
|
#osdkCreatableToBso(objectType, anyObj) {
|
|
162
156
|
objectType = typeof objectType === "string" ? objectType : objectType.apiName;
|
|
163
157
|
if ("$apiName" in anyObj) {
|
|
@@ -195,35 +189,33 @@ export class FauxDataStore {
|
|
|
195
189
|
const fkName = linkDef.foreignKeyPropertyApiName;
|
|
196
190
|
const fkValue = x[fkName];
|
|
197
191
|
const oldFkValue = oldObject[fkName];
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
192
|
+
const dstSide = this.ontology.getOtherLinkTypeSideV2OrThrow(objectType.objectType.apiName, linkDef.apiName);
|
|
193
|
+
const dstLocator = objectLocator({
|
|
194
|
+
__apiName: linkDef.objectTypeApiName,
|
|
195
|
+
__primaryKey: fkValue
|
|
196
|
+
});
|
|
197
|
+
const target = this.getObject(linkDef.objectTypeApiName, fkValue);
|
|
198
|
+
if (fkValue != null && !target) {
|
|
199
|
+
// eslint-disable-next-line no-console
|
|
200
|
+
console.log(`WARNING! Setting a FK value to a non-existent object: ${dstLocator}`);
|
|
201
|
+
}
|
|
202
|
+
if (fkValue != null) {
|
|
203
|
+
linksToUpdate.push({
|
|
204
|
+
dstSide,
|
|
205
|
+
dstLocator,
|
|
206
|
+
srcSide: linkDef,
|
|
207
|
+
srcLocator: objectLocator(x)
|
|
208
|
+
});
|
|
209
|
+
} else if (oldFkValue != null) {
|
|
210
|
+
linksToRemove.push({
|
|
211
|
+
srcLocator: objectLocator(x),
|
|
212
|
+
srcSide: linkDef,
|
|
213
|
+
dstLocator: objectLocator({
|
|
214
|
+
__apiName: linkDef.objectTypeApiName,
|
|
215
|
+
__primaryKey: oldFkValue
|
|
216
|
+
}),
|
|
217
|
+
dstSide
|
|
203
218
|
});
|
|
204
|
-
const target = this.getObject(linkDef.objectTypeApiName, fkValue);
|
|
205
|
-
if (fkValue != null && !target) {
|
|
206
|
-
// eslint-disable-next-line no-console
|
|
207
|
-
console.log(`WARNING! Setting a FK value to a non-existent object: ${dstLocator}`);
|
|
208
|
-
}
|
|
209
|
-
if (fkValue != null) {
|
|
210
|
-
linksToUpdate.push({
|
|
211
|
-
dstSide,
|
|
212
|
-
dstLocator,
|
|
213
|
-
srcSide: linkDef,
|
|
214
|
-
srcLocator: objectLocator(x)
|
|
215
|
-
});
|
|
216
|
-
} else {
|
|
217
|
-
linksToRemove.push({
|
|
218
|
-
srcLocator: objectLocator(x),
|
|
219
|
-
srcSide: linkDef,
|
|
220
|
-
dstLocator: objectLocator({
|
|
221
|
-
__apiName: linkDef.objectTypeApiName,
|
|
222
|
-
__primaryKey: oldFkValue
|
|
223
|
-
}),
|
|
224
|
-
dstSide
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
219
|
}
|
|
228
220
|
}
|
|
229
221
|
}
|
|
@@ -444,9 +436,6 @@ export class FauxDataStore {
|
|
|
444
436
|
}
|
|
445
437
|
return object;
|
|
446
438
|
}
|
|
447
|
-
getObjectWithSecurities(apiName, primaryKey) {
|
|
448
|
-
return this.#objectsWithSecurities.get(apiName).get(String(primaryKey));
|
|
449
|
-
}
|
|
450
439
|
getObjectByRid(rid) {
|
|
451
440
|
for (const [, pkToObjects] of this.#objects) {
|
|
452
441
|
for (const [, obj] of pkToObjects) {
|
|
@@ -492,20 +481,14 @@ export class FauxDataStore {
|
|
|
492
481
|
}
|
|
493
482
|
getObjectsFromObjectSet(parsedBody) {
|
|
494
483
|
const selected = parsedBody.select;
|
|
495
|
-
const loadPropertySecurities = parsedBody.loadPropertySecurities ?? false;
|
|
496
484
|
// when we have interfaces in here, we have a little trick for
|
|
497
485
|
// caching off the important properties
|
|
498
486
|
let objects = getObjectsFromSet(this, parsedBody.objectSet, undefined);
|
|
499
|
-
if (loadPropertySecurities) {
|
|
500
|
-
!(objects.length === 1) ? process.env.NODE_ENV !== "production" ? invariant(false, "Loading property securities is only supported when loading a single object") : invariant(false) : void 0;
|
|
501
|
-
objects = [this.getObjectWithSecurities(objects[0].__apiName, objects[0].__primaryKey)];
|
|
502
|
-
}
|
|
503
487
|
if (!objects || objects.length === 0) {
|
|
504
488
|
return {
|
|
505
489
|
data: [],
|
|
506
490
|
totalCount: "0",
|
|
507
|
-
nextPageToken: undefined
|
|
508
|
-
propertySecurities: []
|
|
491
|
+
nextPageToken: undefined
|
|
509
492
|
};
|
|
510
493
|
}
|
|
511
494
|
if (parsedBody.orderBy) {
|
|
@@ -515,7 +498,7 @@ export class FauxDataStore {
|
|
|
515
498
|
// finally, if we got interfaces, the objects have names like the interface and we need
|
|
516
499
|
// to return them like the object.
|
|
517
500
|
|
|
518
|
-
const page = pageThroughResponseSearchParams(objects, getPaginationParamsFromRequest(parsedBody), false
|
|
501
|
+
const page = pageThroughResponseSearchParams(objects, getPaginationParamsFromRequest(parsedBody), false);
|
|
519
502
|
if (!page) {
|
|
520
503
|
throw new OpenApiCallError(404, InvalidRequest(`No objects found for ${JSON.stringify(parsedBody)}`));
|
|
521
504
|
}
|