1
0
Fork 0
mirror of synced 2024-05-18 11:23:28 +12:00
budibase/packages/worker/src/tests/api/users.ts
2022-11-11 15:43:41 +00:00

143 lines
3.8 KiB
TypeScript

import {
BulkUserResponse,
BulkUserRequest,
InviteUsersRequest,
User,
CreateAdminUserRequest,
} from "@budibase/types"
import * as structures from "../structures"
import { generator } from "@budibase/backend-core/tests"
import TestConfiguration from "../TestConfiguration"
import { TestAPI, TestAPIOpts } from "./base"
export class UserAPI extends TestAPI {
constructor(config: TestConfiguration) {
super(config)
}
// INVITE
sendUserInvite = async (sendMailMock: any, email: string, status = 200) => {
await this.config.saveSmtpConfig()
await this.config.saveSettingsConfig()
const res = await this.request
.post(`/api/global/users/invite`)
.send({
email,
})
.set(this.config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(status)
if (status !== 200) {
return { code: undefined, res }
}
const emailCall = sendMailMock.mock.calls[0][0]
// after this URL there should be a code
const parts = emailCall.html.split(
"http://localhost:10000/builder/invite?code="
)
const code = parts[1].split('"')[0].split("&")[0]
return { code, res }
}
acceptInvite = (code: string) => {
return this.request
.post(`/api/global/users/invite/accept`)
.send({
password: "newpassword",
inviteCode: code,
})
.expect("Content-Type", /json/)
.expect(200)
}
sendMultiUserInvite = async (request: InviteUsersRequest, status = 200) => {
await this.config.saveSmtpConfig()
await this.config.saveSettingsConfig()
return this.request
.post(`/api/global/users/multi/invite`)
.send(request)
.set(this.config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(status)
}
// BULK
bulkCreateUsers = async (users: User[], groups: any[] = []) => {
const body: BulkUserRequest = { create: { users, groups } }
const res = await this.request
.post(`/api/global/users/bulk`)
.send(body)
.set(this.config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(200)
return res.body as BulkUserResponse
}
bulkDeleteUsers = async (userIds: string[], status?: number) => {
const body: BulkUserRequest = { delete: { userIds } }
const res = await this.request
.post(`/api/global/users/bulk`)
.send(body)
.set(this.config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(status ? status : 200)
return res.body as BulkUserResponse
}
// USER
createAdminUser = async (
request?: CreateAdminUserRequest,
opts?: TestAPIOpts
) => {
if (!request) {
request = {
email: structures.email(),
password: generator.string(),
tenantId: structures.uuid(),
}
}
const res = await this.request
.post(`/api/global/users/init`)
.send(request)
.set(this.config.internalAPIHeaders())
.expect("Content-Type", /json/)
.expect(opts?.status ? opts.status : 200)
return {
...request,
userId: res.body._id,
}
}
saveUser = (user: User, status?: number) => {
return this.request
.post(`/api/global/users`)
.send(user)
.set(this.config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(status ? status : 200)
}
deleteUser = (userId: string, status?: number) => {
return this.request
.delete(`/api/global/users/${userId}`)
.set(this.config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(status ? status : 200)
}
getUser = (userId: string, opts?: TestAPIOpts) => {
return this.request
.get(`/api/global/users/${userId}`)
.set(opts?.headers ? opts.headers : this.config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(opts?.status ? opts.status : 200)
}
}