1
0
Fork 0
mirror of synced 2024-09-11 15:08:05 +12:00
budibase/packages/backend-core/tests/core/utilities/structures/scim.ts
2023-07-28 17:11:48 +02:00

80 lines
1.8 KiB
TypeScript

import { ScimCreateGroupRequest, ScimCreateUserRequest } from "@budibase/types"
import { uuid } from "./common"
import { generator } from "./generator"
interface CreateUserRequestFields {
externalId: string
email: string
firstName: string
lastName: string
username: string
}
export function createUserRequest(userData?: Partial<CreateUserRequestFields>) {
const defaultValues = {
externalId: uuid(),
email: generator.email(),
firstName: generator.first(),
lastName: generator.last(),
username: generator.name(),
}
const { externalId, email, firstName, lastName, username } = {
...defaultValues,
...userData,
}
let user: ScimCreateUserRequest = {
schemas: [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
],
externalId,
userName: username,
active: true,
emails: [
{
primary: true,
type: "work",
value: email,
},
],
meta: {
resourceType: "User",
},
roles: [],
}
if (firstName || lastName) {
user.name = {
formatted: [firstName, lastName].filter(s => s).join(" "),
familyName: lastName,
givenName: firstName,
}
}
return user
}
export function createGroupRequest(groupData?: {
externalId?: string
displayName?: string
}) {
const { externalId = uuid(), displayName = generator.word() } =
groupData || {}
const group: ScimCreateGroupRequest = {
schemas: [
"urn:ietf:params:scim:schemas:core:2.0:Group",
"http://schemas.microsoft.com/2006/11/ResourceManagement/ADSCIM/2.0/Group",
],
externalId: externalId,
displayName: displayName,
meta: {
resourceType: "Group",
created: new Date(),
lastModified: new Date(),
},
}
return group
}