diff options
21 files changed, 235 insertions, 153 deletions
diff --git a/server/middlewares/oauth.ts b/server/middlewares/oauth.ts index e59168ea8..12872c4a5 100644 --- a/server/middlewares/oauth.ts +++ b/server/middlewares/oauth.ts | |||
@@ -17,7 +17,11 @@ function authenticate (req: express.Request, res: express.Response, next: expres | |||
17 | return res.sendStatus(500) | 17 | return res.sendStatus(500) |
18 | } | 18 | } |
19 | 19 | ||
20 | if (res.statusCode === 401 || res.statusCode === 400 || res.statusCode === 503) return res.end() | 20 | if (res.statusCode === 401 || res.statusCode === 400 || res.statusCode === 503) { |
21 | return res.json({ | ||
22 | error: 'Authentication failed.' | ||
23 | }).end() | ||
24 | } | ||
21 | 25 | ||
22 | return next() | 26 | return next() |
23 | }) | 27 | }) |
diff --git a/server/middlewares/user-right.ts b/server/middlewares/user-right.ts index 5bb5bdfbd..7cea7aa1e 100644 --- a/server/middlewares/user-right.ts +++ b/server/middlewares/user-right.ts | |||
@@ -8,8 +8,14 @@ function ensureUserHasRight (userRight: UserRight) { | |||
8 | return function (req: express.Request, res: express.Response, next: express.NextFunction) { | 8 | return function (req: express.Request, res: express.Response, next: express.NextFunction) { |
9 | const user = res.locals.oauth.token.user as UserModel | 9 | const user = res.locals.oauth.token.user as UserModel |
10 | if (user.hasRight(userRight) === false) { | 10 | if (user.hasRight(userRight) === false) { |
11 | logger.info('User %s does not have right %s to access to %s.', user.username, UserRight[userRight], req.path) | 11 | const message = `User ${user.username} does not have right ${UserRight[userRight]} to access to ${req.path}.` |
12 | return res.sendStatus(403) | 12 | logger.info(message) |
13 | |||
14 | return res.status(403) | ||
15 | .json({ | ||
16 | error: message | ||
17 | }) | ||
18 | .end() | ||
13 | } | 19 | } |
14 | 20 | ||
15 | return next() | 21 | return next() |
diff --git a/server/middlewares/validators/follows.ts b/server/middlewares/validators/follows.ts index 7dadf6a19..991a2e175 100644 --- a/server/middlewares/validators/follows.ts +++ b/server/middlewares/validators/follows.ts | |||
@@ -41,7 +41,11 @@ const removeFollowingValidator = [ | |||
41 | const follow = await ActorFollowModel.loadByActorAndTargetHost(serverActor.id, req.params.host) | 41 | const follow = await ActorFollowModel.loadByActorAndTargetHost(serverActor.id, req.params.host) |
42 | 42 | ||
43 | if (!follow) { | 43 | if (!follow) { |
44 | return res.status(404) | 44 | return res |
45 | .status(404) | ||
46 | .json({ | ||
47 | error: `Follower ${req.params.host} not found.` | ||
48 | }) | ||
45 | .end() | 49 | .end() |
46 | } | 50 | } |
47 | 51 | ||
diff --git a/server/tests/api/check-params/follows.ts b/server/tests/api/check-params/follows.ts index cdd2783df..d5fcb7477 100644 --- a/server/tests/api/check-params/follows.ts +++ b/server/tests/api/check-params/follows.ts | |||
@@ -4,14 +4,10 @@ import 'mocha' | |||
4 | import * as request from 'supertest' | 4 | import * as request from 'supertest' |
5 | 5 | ||
6 | import { | 6 | import { |
7 | createUser, | 7 | createUser, flushTests, killallServers, makeDeleteRequest, makePostBodyRequest, runServer, ServerInfo, setAccessTokensToServers, |
8 | flushTests, | 8 | userLogin |
9 | killallServers, | ||
10 | loginAndGetAccessToken, | ||
11 | runServer, | ||
12 | ServerInfo, | ||
13 | setAccessTokensToServers | ||
14 | } from '../../utils' | 9 | } from '../../utils' |
10 | import { checkBadCountPagination, checkBadSortPagination, checkBadStartPagination } from '../../utils/requests/check-api-params' | ||
15 | 11 | ||
16 | describe('Test server follows API validators', function () { | 12 | describe('Test server follows API validators', function () { |
17 | let server: ServerInfo | 13 | let server: ServerInfo |
@@ -19,7 +15,7 @@ describe('Test server follows API validators', function () { | |||
19 | // --------------------------------------------------------------- | 15 | // --------------------------------------------------------------- |
20 | 16 | ||
21 | before(async function () { | 17 | before(async function () { |
22 | this.timeout(45000) | 18 | this.timeout(20000) |
23 | 19 | ||
24 | await flushTests() | 20 | await flushTests() |
25 | server = await runServer(1) | 21 | server = await runServer(1) |
@@ -31,81 +27,85 @@ describe('Test server follows API validators', function () { | |||
31 | let userAccessToken = null | 27 | let userAccessToken = null |
32 | 28 | ||
33 | before(async function () { | 29 | before(async function () { |
34 | await createUser(server.url, server.accessToken, 'user1', 'password') | 30 | const user = { |
35 | server.user = { | ||
36 | username: 'user1', | 31 | username: 'user1', |
37 | password: 'password' | 32 | password: 'password' |
38 | } | 33 | } |
39 | 34 | ||
40 | userAccessToken = await loginAndGetAccessToken(server) | 35 | await createUser(server.url, server.accessToken, user.username, user.password) |
36 | userAccessToken = await userLogin(server, user) | ||
41 | }) | 37 | }) |
42 | 38 | ||
43 | describe('When adding follows', function () { | 39 | describe('When adding follows', function () { |
44 | const path = '/api/v1/server/following' | 40 | const path = '/api/v1/server/following' |
45 | const body = { | ||
46 | hosts: [ 'localhost:9002' ] | ||
47 | } | ||
48 | 41 | ||
49 | it('Should fail without hosts', async function () { | 42 | it('Should fail without hosts', async function () { |
50 | await request(server.url) | 43 | await makePostBodyRequest({ |
51 | .post(path) | 44 | url: server.url, |
52 | .set('Authorization', 'Bearer ' + server.accessToken) | 45 | path, |
53 | .set('Accept', 'application/json') | 46 | token: server.accessToken, |
54 | .expect(400) | 47 | statusCodeExpected: 400 |
48 | }) | ||
55 | }) | 49 | }) |
56 | 50 | ||
57 | it('Should fail if hosts is not an array', async function () { | 51 | it('Should fail if hosts is not an array', async function () { |
58 | await request(server.url) | 52 | await makePostBodyRequest({ |
59 | .post(path) | 53 | url: server.url, |
60 | .send({ hosts: 'localhost:9002' }) | 54 | path, |
61 | .set('Authorization', 'Bearer ' + server.accessToken) | 55 | token: server.accessToken, |
62 | .set('Accept', 'application/json') | 56 | fields: { hosts: 'localhost:9002' }, |
63 | .expect(400) | 57 | statusCodeExpected: 400 |
58 | }) | ||
64 | }) | 59 | }) |
65 | 60 | ||
66 | it('Should fail if the array is not composed by hosts', async function () { | 61 | it('Should fail if the array is not composed by hosts', async function () { |
67 | await request(server.url) | 62 | await makePostBodyRequest({ |
68 | .post(path) | 63 | url: server.url, |
69 | .send({ hosts: [ 'localhost:9002', 'localhost:coucou' ] }) | 64 | path, |
70 | .set('Authorization', 'Bearer ' + server.accessToken) | 65 | fields: { hosts: [ 'localhost:9002', 'localhost:coucou' ] }, |
71 | .set('Accept', 'application/json') | 66 | token: server.accessToken, |
72 | .expect(400) | 67 | statusCodeExpected: 400 |
68 | }) | ||
73 | }) | 69 | }) |
74 | 70 | ||
75 | it('Should fail if the array is composed with http schemes', async function () { | 71 | it('Should fail if the array is composed with http schemes', async function () { |
76 | await request(server.url) | 72 | await makePostBodyRequest({ |
77 | .post(path) | 73 | url: server.url, |
78 | .send({ hosts: [ 'localhost:9002', 'http://localhost:9003' ] }) | 74 | path, |
79 | .set('Authorization', 'Bearer ' + server.accessToken) | 75 | fields: { hosts: [ 'localhost:9002', 'http://localhost:9003' ] }, |
80 | .set('Accept', 'application/json') | 76 | token: server.accessToken, |
81 | .expect(400) | 77 | statusCodeExpected: 400 |
78 | }) | ||
82 | }) | 79 | }) |
83 | 80 | ||
84 | it('Should fail if hosts are not unique', async function () { | 81 | it('Should fail if hosts are not unique', async function () { |
85 | await request(server.url) | 82 | await makePostBodyRequest({ |
86 | .post(path) | 83 | url: server.url, |
87 | .send({ urls: [ 'localhost:9002', 'localhost:9002' ] }) | 84 | path, |
88 | .set('Authorization', 'Bearer ' + server.accessToken) | 85 | fields: { urls: [ 'localhost:9002', 'localhost:9002' ] }, |
89 | .set('Accept', 'application/json') | 86 | token: server.accessToken, |
90 | .expect(400) | 87 | statusCodeExpected: 400 |
88 | }) | ||
91 | }) | 89 | }) |
92 | 90 | ||
93 | it('Should fail with an invalid token', async function () { | 91 | it('Should fail with an invalid token', async function () { |
94 | await request(server.url) | 92 | await makePostBodyRequest({ |
95 | .post(path) | 93 | url: server.url, |
96 | .send(body) | 94 | path, |
97 | .set('Authorization', 'Bearer fake_token') | 95 | fields: { hosts: [ 'localhost:9002' ] }, |
98 | .set('Accept', 'application/json') | 96 | token: 'fake_token', |
99 | .expect(401) | 97 | statusCodeExpected: 401 |
98 | }) | ||
100 | }) | 99 | }) |
101 | 100 | ||
102 | it('Should fail if the user is not an administrator', async function () { | 101 | it('Should fail if the user is not an administrator', async function () { |
103 | await request(server.url) | 102 | await makePostBodyRequest({ |
104 | .post(path) | 103 | url: server.url, |
105 | .send(body) | 104 | path, |
106 | .set('Authorization', 'Bearer ' + userAccessToken) | 105 | fields: { hosts: [ 'localhost:9002' ] }, |
107 | .set('Accept', 'application/json') | 106 | token: userAccessToken, |
108 | .expect(403) | 107 | statusCodeExpected: 403 |
108 | }) | ||
109 | }) | 109 | }) |
110 | }) | 110 | }) |
111 | 111 | ||
@@ -113,27 +113,15 @@ describe('Test server follows API validators', function () { | |||
113 | const path = '/api/v1/server/following' | 113 | const path = '/api/v1/server/following' |
114 | 114 | ||
115 | it('Should fail with a bad start pagination', async function () { | 115 | it('Should fail with a bad start pagination', async function () { |
116 | await request(server.url) | 116 | await checkBadStartPagination(server.url, path) |
117 | .get(path) | ||
118 | .query({ start: 'hello' }) | ||
119 | .set('Accept', 'application/json') | ||
120 | .expect(400) | ||
121 | }) | 117 | }) |
122 | 118 | ||
123 | it('Should fail with a bad count pagination', async function () { | 119 | it('Should fail with a bad count pagination', async function () { |
124 | await request(server.url) | 120 | await checkBadCountPagination(server.url, path) |
125 | .get(path) | ||
126 | .query({ count: 'hello' }) | ||
127 | .set('Accept', 'application/json') | ||
128 | .expect(400) | ||
129 | }) | 121 | }) |
130 | 122 | ||
131 | it('Should fail with an incorrect sort', async function () { | 123 | it('Should fail with an incorrect sort', async function () { |
132 | await request(server.url) | 124 | await checkBadSortPagination(server.url, path) |
133 | .get(path) | ||
134 | .query({ sort: 'hello' }) | ||
135 | .set('Accept', 'application/json') | ||
136 | .expect(400) | ||
137 | }) | 125 | }) |
138 | }) | 126 | }) |
139 | 127 | ||
@@ -141,27 +129,15 @@ describe('Test server follows API validators', function () { | |||
141 | const path = '/api/v1/server/followers' | 129 | const path = '/api/v1/server/followers' |
142 | 130 | ||
143 | it('Should fail with a bad start pagination', async function () { | 131 | it('Should fail with a bad start pagination', async function () { |
144 | await request(server.url) | 132 | await checkBadStartPagination(server.url, path) |
145 | .get(path) | ||
146 | .query({ start: 'hello' }) | ||
147 | .set('Accept', 'application/json') | ||
148 | .expect(400) | ||
149 | }) | 133 | }) |
150 | 134 | ||
151 | it('Should fail with a bad count pagination', async function () { | 135 | it('Should fail with a bad count pagination', async function () { |
152 | await request(server.url) | 136 | await checkBadCountPagination(server.url, path) |
153 | .get(path) | ||
154 | .query({ count: 'hello' }) | ||
155 | .set('Accept', 'application/json') | ||
156 | .expect(400) | ||
157 | }) | 137 | }) |
158 | 138 | ||
159 | it('Should fail with an incorrect sort', async function () { | 139 | it('Should fail with an incorrect sort', async function () { |
160 | await request(server.url) | 140 | await checkBadSortPagination(server.url, path) |
161 | .get(path) | ||
162 | .query({ sort: 'hello' }) | ||
163 | .set('Accept', 'application/json') | ||
164 | .expect(400) | ||
165 | }) | 141 | }) |
166 | }) | 142 | }) |
167 | 143 | ||
@@ -169,30 +145,40 @@ describe('Test server follows API validators', function () { | |||
169 | const path = '/api/v1/server/following' | 145 | const path = '/api/v1/server/following' |
170 | 146 | ||
171 | it('Should fail with an invalid token', async function () { | 147 | it('Should fail with an invalid token', async function () { |
172 | await request(server.url) | 148 | await makeDeleteRequest({ |
173 | .delete(path + '/1') | 149 | url: server.url, |
174 | .set('Authorization', 'Bearer faketoken') | 150 | path: path + '/localhost:9002', |
175 | .set('Accept', 'application/json') | 151 | token: 'fake_token', |
176 | .expect(401) | 152 | statusCodeExpected: 401 |
153 | }) | ||
177 | }) | 154 | }) |
178 | 155 | ||
179 | it('Should fail if the user is not an administrator', async function () { | 156 | it('Should fail if the user is not an administrator', async function () { |
180 | await request(server.url) | 157 | await makeDeleteRequest({ |
181 | .delete(path + '/1') | 158 | url: server.url, |
182 | .set('Authorization', 'Bearer ' + userAccessToken) | 159 | path: path + '/localhost:9002', |
183 | .set('Accept', 'application/json') | 160 | token: userAccessToken, |
184 | .expect(403) | 161 | statusCodeExpected: 403 |
185 | }) | 162 | }) |
186 | 163 | }) | |
187 | it('Should fail we do not follow this server', async function () { | 164 | |
188 | await request(server.url) | 165 | it('Should fail if we do not follow this server', async function () { |
189 | .delete(path + '/example.com') | 166 | await makeDeleteRequest({ |
190 | .set('Authorization', 'Bearer ' + server.accessToken) | 167 | url: server.url, |
191 | .set('Accept', 'application/json') | 168 | path: path + '/example.com', |
192 | .expect(404) | 169 | token: server.accessToken, |
170 | statusCodeExpected: 404 | ||
171 | }) | ||
172 | }) | ||
173 | |||
174 | it('Should succeed with the correct parameters', async function () { | ||
175 | await makeDeleteRequest({ | ||
176 | url: server.url, | ||
177 | path: path + '/localhost:9002', | ||
178 | token: server.accessToken, | ||
179 | statusCodeExpected: 404 | ||
180 | }) | ||
193 | }) | 181 | }) |
194 | |||
195 | it('Should succeed with the correct parameters') | ||
196 | }) | 182 | }) |
197 | }) | 183 | }) |
198 | 184 | ||
diff --git a/server/tests/api/check-params/jobs.ts b/server/tests/api/check-params/jobs.ts index 7a0dd6e8c..3795d1d64 100644 --- a/server/tests/api/check-params/jobs.ts +++ b/server/tests/api/check-params/jobs.ts | |||
@@ -3,7 +3,7 @@ | |||
3 | import 'mocha' | 3 | import 'mocha' |
4 | import * as request from 'supertest' | 4 | import * as request from 'supertest' |
5 | 5 | ||
6 | import { createUser, flushTests, getUserAccessToken, killallServers, runServer, ServerInfo, setAccessTokensToServers } from '../../utils' | 6 | import { createUser, flushTests, userLogin, killallServers, runServer, ServerInfo, setAccessTokensToServers } from '../../utils' |
7 | 7 | ||
8 | describe('Test jobs API validators', function () { | 8 | describe('Test jobs API validators', function () { |
9 | const path = '/api/v1/jobs/' | 9 | const path = '/api/v1/jobs/' |
@@ -26,7 +26,7 @@ describe('Test jobs API validators', function () { | |||
26 | password: 'my super password' | 26 | password: 'my super password' |
27 | } | 27 | } |
28 | await createUser(server.url, server.accessToken, user.username, user.password) | 28 | await createUser(server.url, server.accessToken, user.username, user.password) |
29 | userAccessToken = await getUserAccessToken(server, user) | 29 | userAccessToken = await userLogin(server, user) |
30 | }) | 30 | }) |
31 | 31 | ||
32 | describe('When listing jobs', function () { | 32 | describe('When listing jobs', function () { |
diff --git a/server/tests/api/check-params/users.ts b/server/tests/api/check-params/users.ts index 72488e5c4..b566a2f1e 100644 --- a/server/tests/api/check-params/users.ts +++ b/server/tests/api/check-params/users.ts | |||
@@ -11,13 +11,13 @@ import { | |||
11 | getVideosList, | 11 | getVideosList, |
12 | makePutBodyRequest, | 12 | makePutBodyRequest, |
13 | createUser, | 13 | createUser, |
14 | loginAndGetAccessToken, | 14 | serverLogin, |
15 | getUsersList, | 15 | getUsersList, |
16 | registerUser, | 16 | registerUser, |
17 | setAccessTokensToServers, | 17 | setAccessTokensToServers, |
18 | killallServers, | 18 | killallServers, |
19 | makePostBodyRequest, | 19 | makePostBodyRequest, |
20 | getUserAccessToken | 20 | userLogin |
21 | } from '../../utils' | 21 | } from '../../utils' |
22 | import { UserRole } from '../../../../shared' | 22 | import { UserRole } from '../../../../shared' |
23 | 23 | ||
@@ -58,7 +58,7 @@ describe('Test users API validators', function () { | |||
58 | username: 'user1', | 58 | username: 'user1', |
59 | password: 'my super password' | 59 | password: 'my super password' |
60 | } | 60 | } |
61 | userAccessToken = await getUserAccessToken(server, user) | 61 | userAccessToken = await userLogin(server, user) |
62 | }) | 62 | }) |
63 | 63 | ||
64 | describe('When listing users', function () { | 64 | describe('When listing users', function () { |
@@ -304,7 +304,7 @@ describe('Test users API validators', function () { | |||
304 | password: 'my super password' | 304 | password: 'my super password' |
305 | } | 305 | } |
306 | 306 | ||
307 | userAccessToken = await loginAndGetAccessToken(server) | 307 | userAccessToken = await serverLogin(server) |
308 | const fields = { | 308 | const fields = { |
309 | username: 'user3', | 309 | username: 'user3', |
310 | email: 'test@example.com', | 310 | email: 'test@example.com', |
@@ -675,7 +675,7 @@ describe('Test users API validators', function () { | |||
675 | email: 'test3@example.com', | 675 | email: 'test3@example.com', |
676 | password: 'my super password' | 676 | password: 'my super password' |
677 | } | 677 | } |
678 | userAccessToken = await loginAndGetAccessToken(server) | 678 | userAccessToken = await serverLogin(server) |
679 | 679 | ||
680 | const videoAttributes = { fixture: 'video_short2.webm' } | 680 | const videoAttributes = { fixture: 'video_short2.webm' } |
681 | await uploadVideo(server.url, userAccessToken, videoAttributes) | 681 | await uploadVideo(server.url, userAccessToken, videoAttributes) |
diff --git a/server/tests/api/check-params/video-abuses.ts b/server/tests/api/check-params/video-abuses.ts index eac12b6f0..e994ccd49 100644 --- a/server/tests/api/check-params/video-abuses.ts +++ b/server/tests/api/check-params/video-abuses.ts | |||
@@ -13,7 +13,7 @@ import { | |||
13 | setAccessTokensToServers, | 13 | setAccessTokensToServers, |
14 | killallServers, | 14 | killallServers, |
15 | makePostBodyRequest, | 15 | makePostBodyRequest, |
16 | getUserAccessToken | 16 | userLogin |
17 | } from '../../utils' | 17 | } from '../../utils' |
18 | 18 | ||
19 | describe('Test video abuses API validators', function () { | 19 | describe('Test video abuses API validators', function () { |
@@ -35,7 +35,7 @@ describe('Test video abuses API validators', function () { | |||
35 | const password = 'my super password' | 35 | const password = 'my super password' |
36 | await createUser(server.url, server.accessToken, username, password) | 36 | await createUser(server.url, server.accessToken, username, password) |
37 | 37 | ||
38 | userAccessToken = await getUserAccessToken(server, { username, password }) | 38 | userAccessToken = await userLogin(server, { username, password }) |
39 | 39 | ||
40 | // Upload a video | 40 | // Upload a video |
41 | const videoAttributes = {} | 41 | const videoAttributes = {} |
diff --git a/server/tests/api/check-params/video-blacklist.ts b/server/tests/api/check-params/video-blacklist.ts index eb16b3af0..c8b457182 100644 --- a/server/tests/api/check-params/video-blacklist.ts +++ b/server/tests/api/check-params/video-blacklist.ts | |||
@@ -13,7 +13,7 @@ import { | |||
13 | setAccessTokensToServers, | 13 | setAccessTokensToServers, |
14 | killallServers, | 14 | killallServers, |
15 | makePostBodyRequest, | 15 | makePostBodyRequest, |
16 | getUserAccessToken | 16 | userLogin |
17 | } from '../../utils' | 17 | } from '../../utils' |
18 | 18 | ||
19 | describe('Test video blacklist API validators', function () { | 19 | describe('Test video blacklist API validators', function () { |
@@ -34,7 +34,7 @@ describe('Test video blacklist API validators', function () { | |||
34 | const username = 'user1' | 34 | const username = 'user1' |
35 | const password = 'my super password' | 35 | const password = 'my super password' |
36 | await createUser(server.url, server.accessToken, username, password) | 36 | await createUser(server.url, server.accessToken, username, password) |
37 | userAccessToken = await getUserAccessToken(server, { username, password }) | 37 | userAccessToken = await userLogin(server, { username, password }) |
38 | 38 | ||
39 | // Upload a video | 39 | // Upload a video |
40 | const videoAttributes = {} | 40 | const videoAttributes = {} |
diff --git a/server/tests/api/check-params/video-channels.ts b/server/tests/api/check-params/video-channels.ts index 7103aec25..bf464152b 100644 --- a/server/tests/api/check-params/video-channels.ts +++ b/server/tests/api/check-params/video-channels.ts | |||
@@ -15,7 +15,7 @@ import { | |||
15 | makePostBodyRequest, | 15 | makePostBodyRequest, |
16 | getVideoChannelsList, | 16 | getVideoChannelsList, |
17 | createUser, | 17 | createUser, |
18 | getUserAccessToken | 18 | userLogin |
19 | } from '../../utils' | 19 | } from '../../utils' |
20 | 20 | ||
21 | describe('Test videos API validator', function () { | 21 | describe('Test videos API validator', function () { |
@@ -40,7 +40,7 @@ describe('Test videos API validator', function () { | |||
40 | } | 40 | } |
41 | await createUser(server.url, server.accessToken, user.username, user.password) | 41 | await createUser(server.url, server.accessToken, user.username, user.password) |
42 | 42 | ||
43 | accessTokenUser = await getUserAccessToken(server, user) | 43 | accessTokenUser = await userLogin(server, user) |
44 | }) | 44 | }) |
45 | 45 | ||
46 | describe('When listing a video channels', function () { | 46 | describe('When listing a video channels', function () { |
diff --git a/server/tests/api/check-params/videos.ts b/server/tests/api/check-params/videos.ts index 0aaa6e7c9..b0c850f0c 100644 --- a/server/tests/api/check-params/videos.ts +++ b/server/tests/api/check-params/videos.ts | |||
@@ -17,7 +17,7 @@ import { | |||
17 | makePostUploadRequest, | 17 | makePostUploadRequest, |
18 | getMyUserInformation, | 18 | getMyUserInformation, |
19 | createUser, | 19 | createUser, |
20 | getUserAccessToken | 20 | userLogin |
21 | } from '../../utils' | 21 | } from '../../utils' |
22 | import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum' | 22 | import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum' |
23 | 23 | ||
@@ -260,7 +260,7 @@ describe('Test videos API validator', function () { | |||
260 | } | 260 | } |
261 | await createUser(server.url, server.accessToken, user.username, user.password) | 261 | await createUser(server.url, server.accessToken, user.username, user.password) |
262 | 262 | ||
263 | const accessTokenUser = await getUserAccessToken(server, user) | 263 | const accessTokenUser = await userLogin(server, user) |
264 | const res = await getMyUserInformation(server.url, accessTokenUser) | 264 | const res = await getMyUserInformation(server.url, accessTokenUser) |
265 | const customChannelId = res.body.videoChannels[0].id | 265 | const customChannelId = res.body.videoChannels[0].id |
266 | 266 | ||
diff --git a/server/tests/api/server/follows.ts b/server/tests/api/server/follows.ts index f77c0c67c..6c815ace8 100644 --- a/server/tests/api/server/follows.ts +++ b/server/tests/api/server/follows.ts | |||
@@ -10,7 +10,7 @@ import { | |||
10 | } from '../../utils/index' | 10 | } from '../../utils/index' |
11 | import { dateIsValid, webtorrentAdd } from '../../utils/miscs/miscs' | 11 | import { dateIsValid, webtorrentAdd } from '../../utils/miscs/miscs' |
12 | import { follow, getFollowersListPaginationAndSort, getFollowingListPaginationAndSort, unfollow } from '../../utils/server/follows' | 12 | import { follow, getFollowersListPaginationAndSort, getFollowingListPaginationAndSort, unfollow } from '../../utils/server/follows' |
13 | import { getUserAccessToken } from '../../utils/users/login' | 13 | import { userLogin } from '../../utils/users/login' |
14 | import { createUser } from '../../utils/users/users' | 14 | import { createUser } from '../../utils/users/users' |
15 | import { | 15 | import { |
16 | addVideoCommentReply, addVideoCommentThread, getVideoCommentThreads, | 16 | addVideoCommentReply, addVideoCommentThread, getVideoCommentThreads, |
@@ -183,7 +183,7 @@ describe('Test follows', function () { | |||
183 | { | 183 | { |
184 | const user = { username: 'captain', password: 'password' } | 184 | const user = { username: 'captain', password: 'password' } |
185 | await createUser(servers[2].url, servers[2].accessToken, user.username, user.password) | 185 | await createUser(servers[2].url, servers[2].accessToken, user.username, user.password) |
186 | const userAccessToken = await getUserAccessToken(servers[2], user) | 186 | const userAccessToken = await userLogin(servers[2], user) |
187 | 187 | ||
188 | const resVideos = await getVideosList(servers[ 2 ].url) | 188 | const resVideos = await getVideosList(servers[ 2 ].url) |
189 | const video4 = resVideos.body.data.find(v => v.name === 'server3-4') | 189 | const video4 = resVideos.body.data.find(v => v.name === 'server3-4') |
diff --git a/server/tests/api/users/users.ts b/server/tests/api/users/users.ts index 2e3a0b94f..298dbce2c 100644 --- a/server/tests/api/users/users.ts +++ b/server/tests/api/users/users.ts | |||
@@ -15,7 +15,7 @@ import { | |||
15 | getVideosList, | 15 | getVideosList, |
16 | killallServers, | 16 | killallServers, |
17 | login, | 17 | login, |
18 | loginAndGetAccessToken, | 18 | serverLogin, |
19 | makePutBodyRequest, | 19 | makePutBodyRequest, |
20 | rateVideo, | 20 | rateVideo, |
21 | registerUser, | 21 | registerUser, |
@@ -193,7 +193,7 @@ describe('Test users', function () { | |||
193 | password: 'super password' | 193 | password: 'super password' |
194 | } | 194 | } |
195 | 195 | ||
196 | accessTokenUser = await loginAndGetAccessToken(server) | 196 | accessTokenUser = await serverLogin(server) |
197 | }) | 197 | }) |
198 | 198 | ||
199 | it('Should be able to get the user information', async function () { | 199 | it('Should be able to get the user information', async function () { |
@@ -511,7 +511,7 @@ describe('Test users', function () { | |||
511 | password: 'my super password' | 511 | password: 'my super password' |
512 | } | 512 | } |
513 | 513 | ||
514 | accessToken = await loginAndGetAccessToken(server) | 514 | accessToken = await serverLogin(server) |
515 | }) | 515 | }) |
516 | 516 | ||
517 | it('Should have the correct video quota', async function () { | 517 | it('Should have the correct video quota', async function () { |
diff --git a/server/tests/api/videos/multiple-servers.ts b/server/tests/api/videos/multiple-servers.ts index 84f730a8e..0c6508e71 100644 --- a/server/tests/api/videos/multiple-servers.ts +++ b/server/tests/api/videos/multiple-servers.ts | |||
@@ -7,7 +7,7 @@ import * as request from 'supertest' | |||
7 | import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' | 7 | import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' |
8 | 8 | ||
9 | import { | 9 | import { |
10 | addVideoChannel, dateIsValid, doubleFollow, flushAndRunMultipleServers, flushTests, getUserAccessToken, getVideo, | 10 | addVideoChannel, dateIsValid, doubleFollow, flushAndRunMultipleServers, flushTests, userLogin, getVideo, |
11 | getVideoChannelsList, getVideosList, killallServers, rateVideo, removeVideo, ServerInfo, setAccessTokensToServers, testVideoImage, | 11 | getVideoChannelsList, getVideosList, killallServers, rateVideo, removeVideo, ServerInfo, setAccessTokensToServers, testVideoImage, |
12 | updateVideo, uploadVideo, wait, webtorrentAdd | 12 | updateVideo, uploadVideo, wait, webtorrentAdd |
13 | } from '../../utils/index' | 13 | } from '../../utils/index' |
@@ -152,7 +152,7 @@ describe('Test multiple servers', function () { | |||
152 | password: 'super_password' | 152 | password: 'super_password' |
153 | } | 153 | } |
154 | await createUser(servers[1].url, servers[1].accessToken, user.username, user.password) | 154 | await createUser(servers[1].url, servers[1].accessToken, user.username, user.password) |
155 | const userAccessToken = await getUserAccessToken(servers[1], user) | 155 | const userAccessToken = await userLogin(servers[1], user) |
156 | 156 | ||
157 | const videoAttributes = { | 157 | const videoAttributes = { |
158 | name: 'my super name for server 2', | 158 | name: 'my super name for server 2', |
diff --git a/server/tests/api/videos/video-privacy.ts b/server/tests/api/videos/video-privacy.ts index de709f8f1..469274921 100644 --- a/server/tests/api/videos/video-privacy.ts +++ b/server/tests/api/videos/video-privacy.ts | |||
@@ -14,7 +14,7 @@ import { | |||
14 | wait | 14 | wait |
15 | } from '../../utils/index' | 15 | } from '../../utils/index' |
16 | import { doubleFollow } from '../../utils/server/follows' | 16 | import { doubleFollow } from '../../utils/server/follows' |
17 | import { getUserAccessToken } from '../../utils/users/login' | 17 | import { userLogin } from '../../utils/users/login' |
18 | import { createUser } from '../../utils/users/users' | 18 | import { createUser } from '../../utils/users/users' |
19 | import { getMyVideos, getVideo, getVideoWithToken, updateVideo } from '../../utils/videos/videos' | 19 | import { getMyVideos, getVideo, getVideoWithToken, updateVideo } from '../../utils/videos/videos' |
20 | 20 | ||
@@ -78,7 +78,7 @@ describe('Test video privacy', function () { | |||
78 | } | 78 | } |
79 | await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) | 79 | await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) |
80 | 80 | ||
81 | const token = await getUserAccessToken(servers[0], user) | 81 | const token = await userLogin(servers[0], user) |
82 | await getVideoWithToken(servers[0].url, token, privateVideoUUID, 403) | 82 | await getVideoWithToken(servers[0].url, token, privateVideoUUID, 403) |
83 | }) | 83 | }) |
84 | 84 | ||
diff --git a/server/tests/client.ts b/server/tests/client.ts index 8c4334c53..2be1cf5dd 100644 --- a/server/tests/client.ts +++ b/server/tests/client.ts | |||
@@ -9,7 +9,7 @@ import { | |||
9 | ServerInfo, | 9 | ServerInfo, |
10 | flushTests, | 10 | flushTests, |
11 | runServer, | 11 | runServer, |
12 | loginAndGetAccessToken, | 12 | serverLogin, |
13 | uploadVideo, | 13 | uploadVideo, |
14 | getVideosList | 14 | getVideosList |
15 | } from './utils' | 15 | } from './utils' |
@@ -23,7 +23,7 @@ describe('Test a client controllers', function () { | |||
23 | await flushTests() | 23 | await flushTests() |
24 | 24 | ||
25 | server = await runServer(1) | 25 | server = await runServer(1) |
26 | server.accessToken = await loginAndGetAccessToken(server) | 26 | server.accessToken = await serverLogin(server) |
27 | 27 | ||
28 | const videoAttributes = { | 28 | const videoAttributes = { |
29 | name: 'my super name for server 1', | 29 | name: 'my super name for server 1', |
diff --git a/server/tests/real-world/tools/get-access-token.ts b/server/tests/real-world/tools/get-access-token.ts index 138883ae9..ee14733e3 100644 --- a/server/tests/real-world/tools/get-access-token.ts +++ b/server/tests/real-world/tools/get-access-token.ts | |||
@@ -2,7 +2,7 @@ import * as program from 'commander' | |||
2 | 2 | ||
3 | import { | 3 | import { |
4 | getClient, | 4 | getClient, |
5 | loginAndGetAccessToken | 5 | serverLogin |
6 | } from '../../utils' | 6 | } from '../../utils' |
7 | 7 | ||
8 | program | 8 | program |
@@ -36,7 +36,7 @@ getClient(program.url) | |||
36 | server.client.id = res.body.client_id | 36 | server.client.id = res.body.client_id |
37 | server.client.secret = res.body.client_secret | 37 | server.client.secret = res.body.client_secret |
38 | 38 | ||
39 | return loginAndGetAccessToken(server) | 39 | return serverLogin(server) |
40 | }) | 40 | }) |
41 | .then(accessToken => { | 41 | .then(accessToken => { |
42 | console.log(accessToken) | 42 | console.log(accessToken) |
diff --git a/server/tests/utils/requests/check-api-params.ts b/server/tests/utils/requests/check-api-params.ts new file mode 100644 index 000000000..fbd660629 --- /dev/null +++ b/server/tests/utils/requests/check-api-params.ts | |||
@@ -0,0 +1,36 @@ | |||
1 | import { makeGetRequest } from './requests' | ||
2 | |||
3 | function checkBadStartPagination (url: string, path: string) { | ||
4 | return makeGetRequest({ | ||
5 | url, | ||
6 | path, | ||
7 | query: { start: 'hello' }, | ||
8 | statusCodeExpected: 400 | ||
9 | }) | ||
10 | } | ||
11 | |||
12 | function checkBadCountPagination (url: string, path: string) { | ||
13 | return makeGetRequest({ | ||
14 | url, | ||
15 | path, | ||
16 | query: { count: 'hello' }, | ||
17 | statusCodeExpected: 400 | ||
18 | }) | ||
19 | } | ||
20 | |||
21 | function checkBadSortPagination (url: string, path: string) { | ||
22 | return makeGetRequest({ | ||
23 | url, | ||
24 | path, | ||
25 | query: { sort: 'hello' }, | ||
26 | statusCodeExpected: 400 | ||
27 | }) | ||
28 | } | ||
29 | |||
30 | // --------------------------------------------------------------------------- | ||
31 | |||
32 | export { | ||
33 | checkBadStartPagination, | ||
34 | checkBadCountPagination, | ||
35 | checkBadSortPagination | ||
36 | } | ||
diff --git a/server/tests/utils/requests/requests.ts b/server/tests/utils/requests/requests.ts index 52b7a4c29..eb02cf9e6 100644 --- a/server/tests/utils/requests/requests.ts +++ b/server/tests/utils/requests/requests.ts | |||
@@ -1,11 +1,43 @@ | |||
1 | import * as request from 'supertest' | 1 | import * as request from 'supertest' |
2 | 2 | ||
3 | function makeGetRequest (url: string, path: string) { | 3 | function makeGetRequest (options: { |
4 | return request(url) | 4 | url: string, |
5 | .get(path) | 5 | path: string, |
6 | query?: any, | ||
7 | token?: string, | ||
8 | statusCodeExpected?: number | ||
9 | }) { | ||
10 | if (!options.statusCodeExpected) options.statusCodeExpected = 400 | ||
11 | |||
12 | const req = request(options.url) | ||
13 | .get(options.path) | ||
6 | .set('Accept', 'application/json') | 14 | .set('Accept', 'application/json') |
7 | .expect(200) | 15 | |
16 | if (options.token) req.set('Authorization', 'Bearer ' + options.token) | ||
17 | if (options.query) req.query(options.query) | ||
18 | |||
19 | return req | ||
8 | .expect('Content-Type', /json/) | 20 | .expect('Content-Type', /json/) |
21 | .expect(options.statusCodeExpected) | ||
22 | } | ||
23 | |||
24 | function makeDeleteRequest (options: { | ||
25 | url: string, | ||
26 | path: string, | ||
27 | token?: string, | ||
28 | statusCodeExpected?: number | ||
29 | }) { | ||
30 | if (!options.statusCodeExpected) options.statusCodeExpected = 400 | ||
31 | |||
32 | const req = request(options.url) | ||
33 | .delete(options.path) | ||
34 | .set('Accept', 'application/json') | ||
35 | |||
36 | if (options.token) req.set('Authorization', 'Bearer ' + options.token) | ||
37 | |||
38 | return req | ||
39 | .expect('Content-Type', /json/) | ||
40 | .expect(options.statusCodeExpected) | ||
9 | } | 41 | } |
10 | 42 | ||
11 | function makePostUploadRequest (options: { | 43 | function makePostUploadRequest (options: { |
@@ -48,9 +80,10 @@ function makePostBodyRequest (options: { | |||
48 | url: string, | 80 | url: string, |
49 | path: string, | 81 | path: string, |
50 | token?: string, | 82 | token?: string, |
51 | fields: { [ fieldName: string ]: any }, | 83 | fields?: { [ fieldName: string ]: any }, |
52 | statusCodeExpected?: number | 84 | statusCodeExpected?: number |
53 | }) { | 85 | }) { |
86 | if (!options.fields) options.fields = {} | ||
54 | if (!options.statusCodeExpected) options.statusCodeExpected = 400 | 87 | if (!options.statusCodeExpected) options.statusCodeExpected = 400 |
55 | 88 | ||
56 | const req = request(options.url) | 89 | const req = request(options.url) |
@@ -88,5 +121,6 @@ export { | |||
88 | makeGetRequest, | 121 | makeGetRequest, |
89 | makePostUploadRequest, | 122 | makePostUploadRequest, |
90 | makePostBodyRequest, | 123 | makePostBodyRequest, |
91 | makePutBodyRequest | 124 | makePutBodyRequest, |
125 | makeDeleteRequest | ||
92 | } | 126 | } |
diff --git a/server/tests/utils/server/servers.ts b/server/tests/utils/server/servers.ts index 8340fbc18..4add2f69a 100644 --- a/server/tests/utils/server/servers.ts +++ b/server/tests/utils/server/servers.ts | |||
@@ -114,7 +114,7 @@ function runServer (serverNumber: number, configOverride?: Object) { | |||
114 | } | 114 | } |
115 | 115 | ||
116 | return new Promise<ServerInfo>(res => { | 116 | return new Promise<ServerInfo>(res => { |
117 | server.app = fork(join(__dirname, '..', '..', '..', 'dist', 'server.js'), [], options) | 117 | server.app = fork(join(__dirname, '..', '..', '..', '..', 'dist', 'server.js'), [], options) |
118 | server.app.stdout.on('data', function onStdout (data) { | 118 | server.app.stdout.on('data', function onStdout (data) { |
119 | let dontContinue = false | 119 | let dontContinue = false |
120 | 120 | ||
diff --git a/server/tests/utils/users/login.ts b/server/tests/utils/users/login.ts index 855c4828d..04444e2f1 100644 --- a/server/tests/utils/users/login.ts +++ b/server/tests/utils/users/login.ts | |||
@@ -26,13 +26,13 @@ function login (url: string, client: Client, user: User, expectedStatus = 200) { | |||
26 | .expect(expectedStatus) | 26 | .expect(expectedStatus) |
27 | } | 27 | } |
28 | 28 | ||
29 | async function loginAndGetAccessToken (server: Server) { | 29 | async function serverLogin (server: Server) { |
30 | const res = await login(server.url, server.client, server.user, 200) | 30 | const res = await login(server.url, server.client, server.user, 200) |
31 | 31 | ||
32 | return res.body.access_token as string | 32 | return res.body.access_token as string |
33 | } | 33 | } |
34 | 34 | ||
35 | async function getUserAccessToken (server: Server, user: User) { | 35 | async function userLogin (server: Server, user: User) { |
36 | const res = await login(server.url, server.client, user, 200) | 36 | const res = await login(server.url, server.client, user, 200) |
37 | 37 | ||
38 | return res.body.access_token as string | 38 | return res.body.access_token as string |
@@ -42,7 +42,7 @@ function setAccessTokensToServers (servers: ServerInfo[]) { | |||
42 | const tasks: Promise<any>[] = [] | 42 | const tasks: Promise<any>[] = [] |
43 | 43 | ||
44 | for (const server of servers) { | 44 | for (const server of servers) { |
45 | const p = loginAndGetAccessToken(server).then(t => server.accessToken = t) | 45 | const p = serverLogin(server).then(t => server.accessToken = t) |
46 | tasks.push(p) | 46 | tasks.push(p) |
47 | } | 47 | } |
48 | 48 | ||
@@ -53,7 +53,7 @@ function setAccessTokensToServers (servers: ServerInfo[]) { | |||
53 | 53 | ||
54 | export { | 54 | export { |
55 | login, | 55 | login, |
56 | loginAndGetAccessToken, | 56 | serverLogin, |
57 | getUserAccessToken, | 57 | userLogin, |
58 | setAccessTokensToServers | 58 | setAccessTokensToServers |
59 | } | 59 | } |
diff --git a/server/tests/utils/videos/videos.ts b/server/tests/utils/videos/videos.ts index 6de1b8c92..f64ebd2b0 100644 --- a/server/tests/utils/videos/videos.ts +++ b/server/tests/utils/videos/videos.ts | |||
@@ -21,25 +21,37 @@ type VideoAttributes = { | |||
21 | function getVideoCategories (url: string) { | 21 | function getVideoCategories (url: string) { |
22 | const path = '/api/v1/videos/categories' | 22 | const path = '/api/v1/videos/categories' |
23 | 23 | ||
24 | return makeGetRequest(url, path) | 24 | return makeGetRequest({ |
25 | url, | ||
26 | path | ||
27 | }) | ||
25 | } | 28 | } |
26 | 29 | ||
27 | function getVideoLicences (url: string) { | 30 | function getVideoLicences (url: string) { |
28 | const path = '/api/v1/videos/licences' | 31 | const path = '/api/v1/videos/licences' |
29 | 32 | ||
30 | return makeGetRequest(url, path) | 33 | return makeGetRequest({ |
34 | url, | ||
35 | path | ||
36 | }) | ||
31 | } | 37 | } |
32 | 38 | ||
33 | function getVideoLanguages (url: string) { | 39 | function getVideoLanguages (url: string) { |
34 | const path = '/api/v1/videos/languages' | 40 | const path = '/api/v1/videos/languages' |
35 | 41 | ||
36 | return makeGetRequest(url, path) | 42 | return makeGetRequest({ |
43 | url, | ||
44 | path | ||
45 | }) | ||
37 | } | 46 | } |
38 | 47 | ||
39 | function getVideoPrivacies (url: string) { | 48 | function getVideoPrivacies (url: string) { |
40 | const path = '/api/v1/videos/privacies' | 49 | const path = '/api/v1/videos/privacies' |
41 | 50 | ||
42 | return makeGetRequest(url, path) | 51 | return makeGetRequest({ |
52 | url, | ||
53 | path | ||
54 | }) | ||
43 | } | 55 | } |
44 | 56 | ||
45 | function getVideo (url: string, id: number | string, expectedStatus = 200) { | 57 | function getVideo (url: string, id: number | string, expectedStatus = 200) { |