From 67b9201fbe02841e25d73e48ebeda742ca7caad3 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 26 Feb 2024 16:47:55 +0100 Subject: [PATCH] Add tests --- packages/pro | 2 +- .../src/api/routes/global/tests/scim.spec.ts | 52 ++++++++++++++++--- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/packages/pro b/packages/pro index 183b35d3ac..f78c338070 160000 --- a/packages/pro +++ b/packages/pro @@ -1 +1 @@ -Subproject commit 183b35d3acd42433dcb2d32bcd89a36abe13afec +Subproject commit f78c3380700ad71b40d64fc6de6097b39143dbd9 diff --git a/packages/worker/src/api/routes/global/tests/scim.spec.ts b/packages/worker/src/api/routes/global/tests/scim.spec.ts index ae0abadc5d..3ab2ccffa4 100644 --- a/packages/worker/src/api/routes/global/tests/scim.spec.ts +++ b/packages/worker/src/api/routes/global/tests/scim.spec.ts @@ -10,8 +10,6 @@ import { import { TestConfiguration } from "../../../../tests" import { events } from "@budibase/backend-core" -// this test can 409 - retries reduce issues with this -jest.retryTimes(2, { logErrorsBeforeRetry: true }) jest.setTimeout(30000) describe("scim", () => { @@ -367,13 +365,53 @@ describe("scim", () => { }) }) - it("creating an existing user name returns a conflict", async () => { - const body = structures.scim.createUserRequest() + it("creating an external user that conflicts an internal one syncs the existing user", async () => { + const { body: internalUser } = await config.api.users.saveUser( + structures.users.user() + ) - await postScimUser({ body }) + const scimUserData = { + externalId: structures.uuid(), + email: internalUser.email, + firstName: structures.generator.first(), + lastName: structures.generator.last(), + username: structures.generator.name(), + } + const scimUserRequest = structures.scim.createUserRequest(scimUserData) - const res = await postScimUser({ body }, { expect: 409 }) - expect((res as any).message).toBe("Email already in use") + const res = await postScimUser( + { body: scimUserRequest }, + { expect: 200 } + ) + + const expectedScimUser: ScimUserResponse = { + schemas: ["urn:ietf:params:scim:schemas:core:2.0:User"], + id: internalUser._id!, + externalId: scimUserRequest.externalId, + meta: { + resourceType: "User", + // @ts-ignore + created: mocks.date.MOCK_DATE.toISOString(), + // @ts-ignore + lastModified: mocks.date.MOCK_DATE.toISOString(), + }, + userName: scimUserData.username, + name: { + formatted: `${scimUserData.firstName} ${scimUserData.lastName}`, + familyName: scimUserData.lastName, + givenName: scimUserData.firstName, + }, + active: true, + emails: [ + { + value: internalUser.email, + type: "work", + primary: true, + }, + ], + } + + expect(res).toEqual(expectedScimUser) }) })