1 import * as request from 'supertest'
2 import { makePostBodyRequest, makePutBodyRequest, updateAvatarRequest } from '../'
4 import { UserRole } from '../../../../shared/index'
5 import { NSFWPolicyType } from '../../../../shared/models/videos/nsfw-policy.type'
13 role: UserRole = UserRole.USER,
16 const path = '/api/v1/users'
21 email: username + '@example.com',
27 .set('Accept', 'application/json')
28 .set('Authorization', 'Bearer ' + accessToken)
30 .expect(specialStatus)
33 function registerUser (url: string, username: string, password: string, specialStatus = 204) {
34 const path = '/api/v1/users/register'
38 email: username + '@example.com'
43 .set('Accept', 'application/json')
45 .expect(specialStatus)
48 function getMyUserInformation (url: string, accessToken: string, specialStatus = 200) {
49 const path = '/api/v1/users/me'
53 .set('Accept', 'application/json')
54 .set('Authorization', 'Bearer ' + accessToken)
55 .expect(specialStatus)
56 .expect('Content-Type', /json/)
59 function deleteMe (url: string, accessToken: string, specialStatus = 204) {
60 const path = '/api/v1/users/me'
64 .set('Accept', 'application/json')
65 .set('Authorization', 'Bearer ' + accessToken)
66 .expect(specialStatus)
69 function getMyUserVideoQuotaUsed (url: string, accessToken: string, specialStatus = 200) {
70 const path = '/api/v1/users/me/video-quota-used'
74 .set('Accept', 'application/json')
75 .set('Authorization', 'Bearer ' + accessToken)
76 .expect(specialStatus)
77 .expect('Content-Type', /json/)
80 function getUserInformation (url: string, accessToken: string, userId: number) {
81 const path = '/api/v1/users/' + userId
85 .set('Accept', 'application/json')
86 .set('Authorization', 'Bearer ' + accessToken)
88 .expect('Content-Type', /json/)
91 function getMyUserVideoRating (url: string, accessToken: string, videoId: number | string, specialStatus = 200) {
92 const path = '/api/v1/users/me/videos/' + videoId + '/rating'
96 .set('Accept', 'application/json')
97 .set('Authorization', 'Bearer ' + accessToken)
98 .expect(specialStatus)
99 .expect('Content-Type', /json/)
102 function getUsersList (url: string, accessToken: string) {
103 const path = '/api/v1/users'
107 .set('Accept', 'application/json')
108 .set('Authorization', 'Bearer ' + accessToken)
110 .expect('Content-Type', /json/)
113 function getUsersListPaginationAndSort (url: string, accessToken: string, start: number, count: number, sort: string) {
114 const path = '/api/v1/users'
121 .set('Accept', 'application/json')
122 .set('Authorization', 'Bearer ' + accessToken)
124 .expect('Content-Type', /json/)
127 function removeUser (url: string, userId: number | string, accessToken: string, expectedStatus = 204) {
128 const path = '/api/v1/users'
131 .delete(path + '/' + userId)
132 .set('Accept', 'application/json')
133 .set('Authorization', 'Bearer ' + accessToken)
134 .expect(expectedStatus)
137 function blockUser (url: string, userId: number | string, accessToken: string, expectedStatus = 204, reason?: string) {
138 const path = '/api/v1/users'
140 if (reason) body = { reason }
143 .post(path + '/' + userId + '/block')
145 .set('Accept', 'application/json')
146 .set('Authorization', 'Bearer ' + accessToken)
147 .expect(expectedStatus)
150 function unblockUser (url: string, userId: number | string, accessToken: string, expectedStatus = 204) {
151 const path = '/api/v1/users'
154 .post(path + '/' + userId + '/unblock')
155 .set('Accept', 'application/json')
156 .set('Authorization', 'Bearer ' + accessToken)
157 .expect(expectedStatus)
160 function updateMyUser (options: {
163 newPassword?: string,
164 nsfwPolicy?: NSFWPolicyType,
166 autoPlayVideo?: boolean
167 displayName?: string,
170 const path = '/api/v1/users/me'
173 if (options.newPassword !== undefined && options.newPassword !== null) toSend['password'] = options.newPassword
174 if (options.nsfwPolicy !== undefined && options.nsfwPolicy !== null) toSend['nsfwPolicy'] = options.nsfwPolicy
175 if (options.autoPlayVideo !== undefined && options.autoPlayVideo !== null) toSend['autoPlayVideo'] = options.autoPlayVideo
176 if (options.email !== undefined && options.email !== null) toSend['email'] = options.email
177 if (options.description !== undefined && options.description !== null) toSend['description'] = options.description
178 if (options.displayName !== undefined && options.displayName !== null) toSend['displayName'] = options.displayName
180 return makePutBodyRequest({
183 token: options.accessToken,
185 statusCodeExpected: 204
189 function updateMyAvatar (options: {
194 const path = '/api/v1/users/me/avatar/pick'
196 return updateAvatarRequest(Object.assign(options, { path }))
199 function updateUser (options: {
207 const path = '/api/v1/users/' + options.userId
210 if (options.email !== undefined && options.email !== null) toSend['email'] = options.email
211 if (options.videoQuota !== undefined && options.videoQuota !== null) toSend['videoQuota'] = options.videoQuota
212 if (options.role !== undefined && options.role !== null) toSend['role'] = options.role
214 return makePutBodyRequest({
217 token: options.accessToken,
219 statusCodeExpected: 204
223 function askResetPassword (url: string, email: string) {
224 const path = '/api/v1/users/ask-reset-password'
226 return makePostBodyRequest({
230 statusCodeExpected: 204
234 function resetPassword (url: string, userId: number, verificationString: string, password: string, statusCodeExpected = 204) {
235 const path = '/api/v1/users/' + userId + '/reset-password'
237 return makePostBodyRequest({
240 fields: { password, verificationString },
245 // ---------------------------------------------------------------------------
250 getMyUserInformation,
251 getMyUserVideoRating,
253 getMyUserVideoQuotaUsed,
255 getUsersListPaginationAndSort,