diff options
Diffstat (limited to 'server/tests/utils/users/users.ts')
-rw-r--r-- | server/tests/utils/users/users.ts | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/server/tests/utils/users/users.ts b/server/tests/utils/users/users.ts new file mode 100644 index 000000000..bd8d7ab04 --- /dev/null +++ b/server/tests/utils/users/users.ts | |||
@@ -0,0 +1,161 @@ | |||
1 | import * as request from 'supertest' | ||
2 | |||
3 | import { UserRole } from '../../../../shared/index' | ||
4 | |||
5 | function createUser ( | ||
6 | url: string, | ||
7 | accessToken: string, | ||
8 | username: string, | ||
9 | password: string, | ||
10 | videoQuota = 1000000, | ||
11 | role: UserRole = UserRole.USER, | ||
12 | specialStatus = 204 | ||
13 | ) { | ||
14 | const path = '/api/v1/users' | ||
15 | const body = { | ||
16 | username, | ||
17 | password, | ||
18 | role, | ||
19 | email: username + '@example.com', | ||
20 | videoQuota | ||
21 | } | ||
22 | |||
23 | return request(url) | ||
24 | .post(path) | ||
25 | .set('Accept', 'application/json') | ||
26 | .set('Authorization', 'Bearer ' + accessToken) | ||
27 | .send(body) | ||
28 | .expect(specialStatus) | ||
29 | } | ||
30 | |||
31 | function registerUser (url: string, username: string, password: string, specialStatus = 204) { | ||
32 | const path = '/api/v1/users/register' | ||
33 | const body = { | ||
34 | username, | ||
35 | password, | ||
36 | email: username + '@example.com' | ||
37 | } | ||
38 | |||
39 | return request(url) | ||
40 | .post(path) | ||
41 | .set('Accept', 'application/json') | ||
42 | .send(body) | ||
43 | .expect(specialStatus) | ||
44 | } | ||
45 | |||
46 | function getMyUserInformation (url: string, accessToken: string) { | ||
47 | const path = '/api/v1/users/me' | ||
48 | |||
49 | return request(url) | ||
50 | .get(path) | ||
51 | .set('Accept', 'application/json') | ||
52 | .set('Authorization', 'Bearer ' + accessToken) | ||
53 | .expect(200) | ||
54 | .expect('Content-Type', /json/) | ||
55 | } | ||
56 | |||
57 | function getUserInformation (url: string, accessToken: string, userId: number) { | ||
58 | const path = '/api/v1/users/' + userId | ||
59 | |||
60 | return request(url) | ||
61 | .get(path) | ||
62 | .set('Accept', 'application/json') | ||
63 | .set('Authorization', 'Bearer ' + accessToken) | ||
64 | .expect(200) | ||
65 | .expect('Content-Type', /json/) | ||
66 | } | ||
67 | |||
68 | function getUserVideoRating (url: string, accessToken: string, videoId: number) { | ||
69 | const path = '/api/v1/users/me/videos/' + videoId + '/rating' | ||
70 | |||
71 | return request(url) | ||
72 | .get(path) | ||
73 | .set('Accept', 'application/json') | ||
74 | .set('Authorization', 'Bearer ' + accessToken) | ||
75 | .expect(200) | ||
76 | .expect('Content-Type', /json/) | ||
77 | } | ||
78 | |||
79 | function getUsersList (url: string, accessToken: string) { | ||
80 | const path = '/api/v1/users' | ||
81 | |||
82 | return request(url) | ||
83 | .get(path) | ||
84 | .set('Accept', 'application/json') | ||
85 | .set('Authorization', 'Bearer ' + accessToken) | ||
86 | .expect(200) | ||
87 | .expect('Content-Type', /json/) | ||
88 | } | ||
89 | |||
90 | function getUsersListPaginationAndSort (url: string, accessToken: string, start: number, count: number, sort: string) { | ||
91 | const path = '/api/v1/users' | ||
92 | |||
93 | return request(url) | ||
94 | .get(path) | ||
95 | .query({ start }) | ||
96 | .query({ count }) | ||
97 | .query({ sort }) | ||
98 | .set('Accept', 'application/json') | ||
99 | .set('Authorization', 'Bearer ' + accessToken) | ||
100 | .expect(200) | ||
101 | .expect('Content-Type', /json/) | ||
102 | } | ||
103 | |||
104 | function removeUser (url: string, userId: number, accessToken: string, expectedStatus = 204) { | ||
105 | const path = '/api/v1/users' | ||
106 | |||
107 | return request(url) | ||
108 | .delete(path + '/' + userId) | ||
109 | .set('Accept', 'application/json') | ||
110 | .set('Authorization', 'Bearer ' + accessToken) | ||
111 | .expect(expectedStatus) | ||
112 | } | ||
113 | |||
114 | function updateMyUser (url: string, accessToken: string, newPassword: string, displayNSFW?: boolean, | ||
115 | email?: string, autoPlayVideo?: boolean) { | ||
116 | const path = '/api/v1/users/me' | ||
117 | |||
118 | const toSend = {} | ||
119 | if (newPassword !== undefined && newPassword !== null) toSend['password'] = newPassword | ||
120 | if (displayNSFW !== undefined && displayNSFW !== null) toSend['displayNSFW'] = displayNSFW | ||
121 | if (autoPlayVideo !== undefined && autoPlayVideo !== null) toSend['autoPlayVideo'] = autoPlayVideo | ||
122 | if (email !== undefined && email !== null) toSend['email'] = email | ||
123 | |||
124 | return request(url) | ||
125 | .put(path) | ||
126 | .set('Accept', 'application/json') | ||
127 | .set('Authorization', 'Bearer ' + accessToken) | ||
128 | .send(toSend) | ||
129 | .expect(204) | ||
130 | } | ||
131 | |||
132 | function updateUser (url: string, userId: number, accessToken: string, email: string, videoQuota: number, role: UserRole) { | ||
133 | const path = '/api/v1/users/' + userId | ||
134 | |||
135 | const toSend = {} | ||
136 | if (email !== undefined && email !== null) toSend['email'] = email | ||
137 | if (videoQuota !== undefined && videoQuota !== null) toSend['videoQuota'] = videoQuota | ||
138 | if (role !== undefined && role !== null) toSend['role'] = role | ||
139 | |||
140 | return request(url) | ||
141 | .put(path) | ||
142 | .set('Accept', 'application/json') | ||
143 | .set('Authorization', 'Bearer ' + accessToken) | ||
144 | .send(toSend) | ||
145 | .expect(204) | ||
146 | } | ||
147 | |||
148 | // --------------------------------------------------------------------------- | ||
149 | |||
150 | export { | ||
151 | createUser, | ||
152 | registerUser, | ||
153 | getMyUserInformation, | ||
154 | getUserVideoRating, | ||
155 | getUsersList, | ||
156 | getUsersListPaginationAndSort, | ||
157 | removeUser, | ||
158 | updateUser, | ||
159 | updateMyUser, | ||
160 | getUserInformation | ||
161 | } | ||