1
0
Fork 0
mirror of synced 2024-09-19 02:39:37 +12:00
budibase/packages/backend-core/tests/core/utilities/structures/scim.ts

81 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-03-18 04:35:12 +13:00
import { ScimCreateGroupRequest, ScimCreateUserRequest } from "@budibase/types"
import { uuid } from "./common"
import { generator } from "./generator"
2023-04-12 03:12:18 +12:00
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(),
}
2023-07-25 22:45:19 +12:00
const { externalId, email, firstName, lastName, username } = {
...defaultValues,
...userData,
}
2023-03-18 04:35:12 +13:00
2023-04-12 03:12:18 +12:00
let user: ScimCreateUserRequest = {
2023-03-18 04:35:12 +13:00
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",
},
2023-04-12 03:12:18 +12:00
roles: [],
}
if (firstName || lastName) {
user.name = {
formatted: [firstName, lastName].filter(s => s).join(" "),
2023-03-18 04:35:12 +13:00
familyName: lastName,
givenName: firstName,
2023-04-12 03:12:18 +12:00
}
2023-03-18 04:35:12 +13:00
}
2023-04-12 03:12:18 +12:00
2023-03-18 04:35:12 +13:00
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",
2023-03-27 21:58:57 +13:00
created: new Date(),
lastModified: new Date(),
2023-03-18 04:35:12 +13:00
},
}
return group
}