123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- import * as request from 'supertest'
- import { makeGetRequest, makePostBodyRequest, makePutBodyRequest, updateAvatarRequest } from '../requests/requests'
- import { UserCreate, UserRole } from '../../index'
- import { NSFWPolicyType } from '../../models/videos/nsfw-policy.type'
- import { ServerInfo, userLogin } from '..'
- import { UserAdminFlag } from '../../models/users/user-flag.model'
- import { UserRegister } from '../../models/users/user-register.model'
- type CreateUserArgs = { url: string,
- accessToken: string,
- username: string,
- password: string,
- videoQuota?: number,
- videoQuotaDaily?: number,
- role?: UserRole,
- adminFlags?: UserAdminFlag,
- specialStatus?: number
- }
- function createUser (parameters: CreateUserArgs) {
- const {
- url,
- accessToken,
- username,
- adminFlags,
- password = 'password',
- videoQuota = 1000000,
- videoQuotaDaily = -1,
- role = UserRole.USER,
- specialStatus = 200
- } = parameters
- const path = '/api/v1/users'
- const body = {
- username,
- password,
- role,
- adminFlags,
- email: username + '@example.com',
- videoQuota,
- videoQuotaDaily
- }
- return request(url)
- .post(path)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .send(body)
- .expect(specialStatus)
- }
- async function generateUserAccessToken (server: ServerInfo, username: string) {
- const password = 'my super password'
- await createUser({ url: server.url, accessToken: server.accessToken, username: username, password: password })
- return userLogin(server, { username, password })
- }
- function registerUser (url: string, username: string, password: string, specialStatus = 204) {
- const path = '/api/v1/users/register'
- const body = {
- username,
- password,
- email: username + '@example.com'
- }
- return request(url)
- .post(path)
- .set('Accept', 'application/json')
- .send(body)
- .expect(specialStatus)
- }
- function registerUserWithChannel (options: {
- url: string,
- user: { username: string, password: string, displayName?: string },
- channel: { name: string, displayName: string }
- }) {
- const path = '/api/v1/users/register'
- const body: UserRegister = {
- username: options.user.username,
- password: options.user.password,
- email: options.user.username + '@example.com',
- channel: options.channel
- }
- if (options.user.displayName) {
- Object.assign(body, { displayName: options.user.displayName })
- }
- return makePostBodyRequest({
- url: options.url,
- path,
- fields: body,
- statusCodeExpected: 204
- })
- }
- function getMyUserInformation (url: string, accessToken: string, specialStatus = 200) {
- const path = '/api/v1/users/me'
- return request(url)
- .get(path)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(specialStatus)
- .expect('Content-Type', /json/)
- }
- function deleteMe (url: string, accessToken: string, specialStatus = 204) {
- const path = '/api/v1/users/me'
- return request(url)
- .delete(path)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(specialStatus)
- }
- function getMyUserVideoQuotaUsed (url: string, accessToken: string, specialStatus = 200) {
- const path = '/api/v1/users/me/video-quota-used'
- return request(url)
- .get(path)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(specialStatus)
- .expect('Content-Type', /json/)
- }
- function getUserInformation (url: string, accessToken: string, userId: number) {
- const path = '/api/v1/users/' + userId
- return request(url)
- .get(path)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(200)
- .expect('Content-Type', /json/)
- }
- function getMyUserVideoRating (url: string, accessToken: string, videoId: number | string, specialStatus = 200) {
- const path = '/api/v1/users/me/videos/' + videoId + '/rating'
- return request(url)
- .get(path)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(specialStatus)
- .expect('Content-Type', /json/)
- }
- function getUsersList (url: string, accessToken: string) {
- const path = '/api/v1/users'
- return request(url)
- .get(path)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(200)
- .expect('Content-Type', /json/)
- }
- function getUsersListPaginationAndSort (url: string, accessToken: string, start: number, count: number, sort: string, search?: string) {
- const path = '/api/v1/users'
- const query = {
- start,
- count,
- sort,
- search
- }
- return request(url)
- .get(path)
- .query(query)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(200)
- .expect('Content-Type', /json/)
- }
- function removeUser (url: string, userId: number | string, accessToken: string, expectedStatus = 204) {
- const path = '/api/v1/users'
- return request(url)
- .delete(path + '/' + userId)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(expectedStatus)
- }
- function blockUser (url: string, userId: number | string, accessToken: string, expectedStatus = 204, reason?: string) {
- const path = '/api/v1/users'
- let body: any
- if (reason) body = { reason }
- return request(url)
- .post(path + '/' + userId + '/block')
- .send(body)
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(expectedStatus)
- }
- function unblockUser (url: string, userId: number | string, accessToken: string, expectedStatus = 204) {
- const path = '/api/v1/users'
- return request(url)
- .post(path + '/' + userId + '/unblock')
- .set('Accept', 'application/json')
- .set('Authorization', 'Bearer ' + accessToken)
- .expect(expectedStatus)
- }
- function updateMyUser (options: {
- url: string
- accessToken: string
- currentPassword?: string
- newPassword?: string
- nsfwPolicy?: NSFWPolicyType
- email?: string
- autoPlayVideo?: boolean
- displayName?: string
- description?: string
- videosHistoryEnabled?: boolean
- }) {
- const path = '/api/v1/users/me'
- const toSend = {}
- if (options.currentPassword !== undefined && options.currentPassword !== null) toSend['currentPassword'] = options.currentPassword
- if (options.newPassword !== undefined && options.newPassword !== null) toSend['password'] = options.newPassword
- if (options.nsfwPolicy !== undefined && options.nsfwPolicy !== null) toSend['nsfwPolicy'] = options.nsfwPolicy
- if (options.autoPlayVideo !== undefined && options.autoPlayVideo !== null) toSend['autoPlayVideo'] = options.autoPlayVideo
- if (options.email !== undefined && options.email !== null) toSend['email'] = options.email
- if (options.description !== undefined && options.description !== null) toSend['description'] = options.description
- if (options.displayName !== undefined && options.displayName !== null) toSend['displayName'] = options.displayName
- if (options.videosHistoryEnabled !== undefined && options.videosHistoryEnabled !== null) {
- toSend['videosHistoryEnabled'] = options.videosHistoryEnabled
- }
- return makePutBodyRequest({
- url: options.url,
- path,
- token: options.accessToken,
- fields: toSend,
- statusCodeExpected: 204
- })
- }
- function updateMyAvatar (options: {
- url: string,
- accessToken: string,
- fixture: string
- }) {
- const path = '/api/v1/users/me/avatar/pick'
- return updateAvatarRequest(Object.assign(options, { path }))
- }
- function updateUser (options: {
- url: string
- userId: number,
- accessToken: string,
- email?: string,
- emailVerified?: boolean,
- videoQuota?: number,
- videoQuotaDaily?: number,
- password?: string,
- adminFlags?: UserAdminFlag,
- role?: UserRole
- }) {
- const path = '/api/v1/users/' + options.userId
- const toSend = {}
- if (options.password !== undefined && options.password !== null) toSend['password'] = options.password
- if (options.email !== undefined && options.email !== null) toSend['email'] = options.email
- if (options.emailVerified !== undefined && options.emailVerified !== null) toSend['emailVerified'] = options.emailVerified
- if (options.videoQuota !== undefined && options.videoQuota !== null) toSend['videoQuota'] = options.videoQuota
- if (options.videoQuotaDaily !== undefined && options.videoQuotaDaily !== null) toSend['videoQuotaDaily'] = options.videoQuotaDaily
- if (options.role !== undefined && options.role !== null) toSend['role'] = options.role
- if (options.adminFlags !== undefined && options.adminFlags !== null) toSend['adminFlags'] = options.adminFlags
- return makePutBodyRequest({
- url: options.url,
- path,
- token: options.accessToken,
- fields: toSend,
- statusCodeExpected: 204
- })
- }
- function askResetPassword (url: string, email: string) {
- const path = '/api/v1/users/ask-reset-password'
- return makePostBodyRequest({
- url,
- path,
- fields: { email },
- statusCodeExpected: 204
- })
- }
- function resetPassword (url: string, userId: number, verificationString: string, password: string, statusCodeExpected = 204) {
- const path = '/api/v1/users/' + userId + '/reset-password'
- return makePostBodyRequest({
- url,
- path,
- fields: { password, verificationString },
- statusCodeExpected
- })
- }
- function askSendVerifyEmail (url: string, email: string) {
- const path = '/api/v1/users/ask-send-verify-email'
- return makePostBodyRequest({
- url,
- path,
- fields: { email },
- statusCodeExpected: 204
- })
- }
- function verifyEmail (url: string, userId: number, verificationString: string, isPendingEmail = false, statusCodeExpected = 204) {
- const path = '/api/v1/users/' + userId + '/verify-email'
- return makePostBodyRequest({
- url,
- path,
- fields: {
- verificationString,
- isPendingEmail
- },
- statusCodeExpected
- })
- }
- // ---------------------------------------------------------------------------
- export {
- createUser,
- registerUser,
- getMyUserInformation,
- getMyUserVideoRating,
- deleteMe,
- registerUserWithChannel,
- getMyUserVideoQuotaUsed,
- getUsersList,
- getUsersListPaginationAndSort,
- removeUser,
- updateUser,
- updateMyUser,
- getUserInformation,
- blockUser,
- unblockUser,
- askResetPassword,
- resetPassword,
- updateMyAvatar,
- askSendVerifyEmail,
- generateUserAccessToken,
- verifyEmail
- }
|