diff --git a/packages/types/package.json b/packages/types/package.json index fb82d7633e..db7c274096 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -29,5 +29,8 @@ "koa-body": "4.2.0", "rimraf": "3.0.2", "typescript": "4.7.3" + }, + "dependencies": { + "scim-patch": "^0.7.0" } } diff --git a/packages/types/src/api/web/global/scim/users.ts b/packages/types/src/api/web/global/scim/users.ts index 155b906489..8748b4e8e6 100644 --- a/packages/types/src/api/web/global/scim/users.ts +++ b/packages/types/src/api/web/global/scim/users.ts @@ -1,11 +1,11 @@ -export interface ScimUserResponse { +import { ScimResource, ScimMeta, ScimPatchOperation } from "scim-patch" + +export interface ScimUserResponse extends ScimResource { schemas: ["urn:ietf:params:scim:schemas:core:2.0:User"] id: string externalId: string - meta: { + meta: ScimMeta & { resourceType: "User" - created: string - lastModified: string } userName: string name: { @@ -51,13 +51,7 @@ export interface ScimCreateUserRequest { export interface ScimUpdateRequest { schemas: ["urn:ietf:params:scim:api:messages:2.0:PatchOp"] - Operations: [ - { - op: "add" | "replace" | "remove" - path: string - value: string - } - ] + Operations: ScimPatchOperation[] } interface ScimListResponse { diff --git a/packages/types/yarn.lock b/packages/types/yarn.lock index 64aaf584a4..c59a37107c 100644 --- a/packages/types/yarn.lock +++ b/packages/types/yarn.lock @@ -487,6 +487,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +fast-deep-equal@3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" @@ -743,6 +748,19 @@ rxjs@^7.0.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +scim-patch@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/scim-patch/-/scim-patch-0.7.0.tgz#3f6d94256c07be415a74a49c0ff48dc91e4e0219" + integrity sha512-wXKcsZl+aLfE0yId7MjiOd91v8as6dEYLFvm1gGu3yJxSPhl1Fl3vWiNN4V3D68UKpqO/umK5rwWc8wGpBaOHw== + dependencies: + fast-deep-equal "3.1.3" + scim2-parse-filter "0.2.8" + +scim2-parse-filter@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/scim2-parse-filter/-/scim2-parse-filter-0.2.8.tgz#12e836514b9a55ae51218dd6e7fbea91daccfa4d" + integrity sha512-1V+6FIMIiP+gDiFkC3dIw86KfoXhnQRXhfPaiQImeeFukpLtEkTtYq/Vmy1yDgHQcIHQxQQqOWyGLKX0FTvvaA== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" diff --git a/packages/worker/src/api/routes/global/tests/scim/users.spec.ts b/packages/worker/src/api/routes/global/tests/scim/users.spec.ts index 041f2f88e7..b1727e99fd 100644 --- a/packages/worker/src/api/routes/global/tests/scim/users.spec.ts +++ b/packages/worker/src/api/routes/global/tests/scim/users.spec.ts @@ -271,13 +271,8 @@ describe("/api/global/scim/v2/users", () => { const expectedScimUser = { ...user } expect(response).toEqual(expectedScimUser) - const persistedUsers = await config.api.scimUsersAPI.get() - expect(persistedUsers).toEqual( - expect.objectContaining({ - totalResults: 1, - Resources: [expectedScimUser], - }) - ) + const persistedUser = await config.api.scimUsersAPI.find(user.id) + expect(persistedUser).toEqual(expectedScimUser) }) }) })