]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/utils/users/users.ts
Add ability to delete our account
[github/Chocobozzz/PeerTube.git] / server / tests / utils / users / users.ts
CommitLineData
0e1dc3e7 1import * as request from 'supertest'
4bbfc6c6 2import { makePostBodyRequest, makePutBodyRequest, updateAvatarRequest } from '../'
0e1dc3e7 3
c5d31dba 4import { UserRole } from '../../../../shared/index'
0883b324 5import { NSFWPolicyType } from '../../../../shared/models/videos/nsfw-policy.type'
757f0da3
C
6
7function createUser (
8 url: string,
9 accessToken: string,
10 username: string,
11 password: string,
12 videoQuota = 1000000,
13 role: UserRole = UserRole.USER,
f05a1c30 14 specialStatus = 200
757f0da3 15) {
0e1dc3e7
C
16 const path = '/api/v1/users'
17 const body = {
18 username,
19 password,
757f0da3 20 role,
5c98d3bf
C
21 email: username + '@example.com',
22 videoQuota
0e1dc3e7
C
23 }
24
25 return request(url)
26 .post(path)
27 .set('Accept', 'application/json')
28 .set('Authorization', 'Bearer ' + accessToken)
29 .send(body)
30 .expect(specialStatus)
31}
32
33function registerUser (url: string, username: string, password: string, specialStatus = 204) {
34 const path = '/api/v1/users/register'
35 const body = {
36 username,
37 password,
38 email: username + '@example.com'
39 }
40
41 return request(url)
42 .post(path)
43 .set('Accept', 'application/json')
44 .send(body)
45 .expect(specialStatus)
46}
47
26d21b78 48function getMyUserInformation (url: string, accessToken: string, specialStatus = 200) {
0e1dc3e7
C
49 const path = '/api/v1/users/me'
50
51 return request(url)
52 .get(path)
53 .set('Accept', 'application/json')
54 .set('Authorization', 'Bearer ' + accessToken)
26d21b78 55 .expect(specialStatus)
0e1dc3e7
C
56 .expect('Content-Type', /json/)
57}
58
92b9d60c
C
59function deleteMe (url: string, accessToken: string, specialStatus = 204) {
60 const path = '/api/v1/users/me'
61
62 return request(url)
63 .delete(path)
64 .set('Accept', 'application/json')
65 .set('Authorization', 'Bearer ' + accessToken)
66 .expect(specialStatus)
67}
68
ce5496d6
C
69function getMyUserVideoQuotaUsed (url: string, accessToken: string, specialStatus = 200) {
70 const path = '/api/v1/users/me/video-quota-used'
71
72 return request(url)
73 .get(path)
74 .set('Accept', 'application/json')
75 .set('Authorization', 'Bearer ' + accessToken)
76 .expect(specialStatus)
77 .expect('Content-Type', /json/)
78}
79
5c98d3bf
C
80function getUserInformation (url: string, accessToken: string, userId: number) {
81 const path = '/api/v1/users/' + userId
82
83 return request(url)
84 .get(path)
85 .set('Accept', 'application/json')
86 .set('Authorization', 'Bearer ' + accessToken)
87 .expect(200)
88 .expect('Content-Type', /json/)
89}
90
26d21b78 91function getMyUserVideoRating (url: string, accessToken: string, videoId: number | string, specialStatus = 200) {
0e1dc3e7
C
92 const path = '/api/v1/users/me/videos/' + videoId + '/rating'
93
94 return request(url)
95 .get(path)
96 .set('Accept', 'application/json')
97 .set('Authorization', 'Bearer ' + accessToken)
26d21b78 98 .expect(specialStatus)
0e1dc3e7
C
99 .expect('Content-Type', /json/)
100}
101
86d13ec2 102function getUsersList (url: string, accessToken: string) {
0e1dc3e7
C
103 const path = '/api/v1/users'
104
105 return request(url)
106 .get(path)
107 .set('Accept', 'application/json')
86d13ec2 108 .set('Authorization', 'Bearer ' + accessToken)
0e1dc3e7
C
109 .expect(200)
110 .expect('Content-Type', /json/)
111}
112
86d13ec2 113function getUsersListPaginationAndSort (url: string, accessToken: string, start: number, count: number, sort: string) {
0e1dc3e7
C
114 const path = '/api/v1/users'
115
116 return request(url)
117 .get(path)
118 .query({ start })
119 .query({ count })
120 .query({ sort })
121 .set('Accept', 'application/json')
86d13ec2 122 .set('Authorization', 'Bearer ' + accessToken)
0e1dc3e7
C
123 .expect(200)
124 .expect('Content-Type', /json/)
125}
126
26d21b78 127function removeUser (url: string, userId: number | string, accessToken: string, expectedStatus = 204) {
0e1dc3e7
C
128 const path = '/api/v1/users'
129
130 return request(url)
131 .delete(path + '/' + userId)
132 .set('Accept', 'application/json')
133 .set('Authorization', 'Bearer ' + accessToken)
134 .expect(expectedStatus)
135}
136
26d21b78
C
137function updateMyUser (options: {
138 url: string
139 accessToken: string,
140 newPassword?: string,
0883b324 141 nsfwPolicy?: NSFWPolicyType,
26d21b78
C
142 email?: string,
143 autoPlayVideo?: boolean
ed56ad11 144 displayName?: string,
2422c46b 145 description?: string
26d21b78 146}) {
5c98d3bf 147 const path = '/api/v1/users/me'
0e1dc3e7
C
148
149 const toSend = {}
26d21b78 150 if (options.newPassword !== undefined && options.newPassword !== null) toSend['password'] = options.newPassword
0883b324 151 if (options.nsfwPolicy !== undefined && options.nsfwPolicy !== null) toSend['nsfwPolicy'] = options.nsfwPolicy
26d21b78
C
152 if (options.autoPlayVideo !== undefined && options.autoPlayVideo !== null) toSend['autoPlayVideo'] = options.autoPlayVideo
153 if (options.email !== undefined && options.email !== null) toSend['email'] = options.email
2422c46b 154 if (options.description !== undefined && options.description !== null) toSend['description'] = options.description
ed56ad11 155 if (options.displayName !== undefined && options.displayName !== null) toSend['displayName'] = options.displayName
26d21b78
C
156
157 return makePutBodyRequest({
158 url: options.url,
159 path,
160 token: options.accessToken,
161 fields: toSend,
162 statusCodeExpected: 204
163 })
5c98d3bf
C
164}
165
c5911fd3
C
166function updateMyAvatar (options: {
167 url: string,
168 accessToken: string,
169 fixture: string
170}) {
171 const path = '/api/v1/users/me/avatar/pick'
c5911fd3 172
4bbfc6c6 173 return updateAvatarRequest(Object.assign(options, { path }))
c5911fd3
C
174}
175
26d21b78
C
176function updateUser (options: {
177 url: string
178 userId: number,
179 accessToken: string,
180 email?: string,
181 videoQuota?: number,
182 role?: UserRole
183}) {
184 const path = '/api/v1/users/' + options.userId
5c98d3bf
C
185
186 const toSend = {}
26d21b78
C
187 if (options.email !== undefined && options.email !== null) toSend['email'] = options.email
188 if (options.videoQuota !== undefined && options.videoQuota !== null) toSend['videoQuota'] = options.videoQuota
189 if (options.role !== undefined && options.role !== null) toSend['role'] = options.role
190
191 return makePutBodyRequest({
192 url: options.url,
193 path,
194 token: options.accessToken,
195 fields: toSend,
196 statusCodeExpected: 204
197 })
0e1dc3e7
C
198}
199
f076daa7
C
200function askResetPassword (url: string, email: string) {
201 const path = '/api/v1/users/ask-reset-password'
202
203 return makePostBodyRequest({
204 url,
205 path,
206 fields: { email },
207 statusCodeExpected: 204
208 })
209}
210
211function resetPassword (url: string, userId: number, verificationString: string, password: string, statusCodeExpected = 204) {
212 const path = '/api/v1/users/' + userId + '/reset-password'
213
214 return makePostBodyRequest({
215 url,
216 path,
217 fields: { password, verificationString },
218 statusCodeExpected
219 })
220}
221
0e1dc3e7
C
222// ---------------------------------------------------------------------------
223
224export {
225 createUser,
226 registerUser,
5c98d3bf 227 getMyUserInformation,
26d21b78 228 getMyUserVideoRating,
92b9d60c 229 deleteMe,
ce5496d6 230 getMyUserVideoQuotaUsed,
0e1dc3e7
C
231 getUsersList,
232 getUsersListPaginationAndSort,
233 removeUser,
5c98d3bf
C
234 updateUser,
235 updateMyUser,
c5911fd3 236 getUserInformation,
f076daa7
C
237 askResetPassword,
238 resetPassword,
c5911fd3 239 updateMyAvatar
0e1dc3e7 240}