diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/controllers/api/index.ts | 4 | ||||
-rw-r--r-- | server/controllers/api/server/follows.ts | 20 | ||||
-rw-r--r-- | server/controllers/api/server/index.ts | 8 | ||||
-rw-r--r-- | server/initializers/constants.ts | 2 | ||||
-rw-r--r-- | server/tests/utils/follows.ts | 53 | ||||
-rw-r--r-- | server/tests/utils/pods.ts | 103 |
6 files changed, 70 insertions, 120 deletions
diff --git a/server/controllers/api/index.ts b/server/controllers/api/index.ts index 876c911c7..b00fb7467 100644 --- a/server/controllers/api/index.ts +++ b/server/controllers/api/index.ts | |||
@@ -4,13 +4,13 @@ import { badRequest } from '../../helpers' | |||
4 | 4 | ||
5 | import { oauthClientsRouter } from './oauth-clients' | 5 | import { oauthClientsRouter } from './oauth-clients' |
6 | import { configRouter } from './config' | 6 | import { configRouter } from './config' |
7 | import { applicationRouter } from './server' | 7 | import { serverRouter } from './server' |
8 | import { usersRouter } from './users' | 8 | import { usersRouter } from './users' |
9 | import { videosRouter } from './videos' | 9 | import { videosRouter } from './videos' |
10 | 10 | ||
11 | const apiRouter = express.Router() | 11 | const apiRouter = express.Router() |
12 | 12 | ||
13 | apiRouter.use('/application', applicationRouter) | 13 | apiRouter.use('/server', serverRouter) |
14 | apiRouter.use('/oauth-clients', oauthClientsRouter) | 14 | apiRouter.use('/oauth-clients', oauthClientsRouter) |
15 | apiRouter.use('/config', configRouter) | 15 | apiRouter.use('/config', configRouter) |
16 | apiRouter.use('/users', usersRouter) | 16 | apiRouter.use('/users', usersRouter) |
diff --git a/server/controllers/api/server/follows.ts b/server/controllers/api/server/follows.ts index e00787f02..520d4d858 100644 --- a/server/controllers/api/server/follows.ts +++ b/server/controllers/api/server/follows.ts | |||
@@ -15,9 +15,9 @@ import { ensureUserHasRight } from '../../../middlewares/user-right' | |||
15 | import { followValidator } from '../../../middlewares/validators/servers' | 15 | import { followValidator } from '../../../middlewares/validators/servers' |
16 | import { followersSortValidator, followingSortValidator } from '../../../middlewares/validators/sort' | 16 | import { followersSortValidator, followingSortValidator } from '../../../middlewares/validators/sort' |
17 | 17 | ||
18 | const applicationFollowsRouter = express.Router() | 18 | const serverFollowsRouter = express.Router() |
19 | 19 | ||
20 | applicationFollowsRouter.get('/following', | 20 | serverFollowsRouter.get('/following', |
21 | paginationValidator, | 21 | paginationValidator, |
22 | followingSortValidator, | 22 | followingSortValidator, |
23 | setFollowingSort, | 23 | setFollowingSort, |
@@ -25,15 +25,15 @@ applicationFollowsRouter.get('/following', | |||
25 | asyncMiddleware(listFollowing) | 25 | asyncMiddleware(listFollowing) |
26 | ) | 26 | ) |
27 | 27 | ||
28 | applicationFollowsRouter.post('/follow', | 28 | serverFollowsRouter.post('/follow', |
29 | authenticate, | 29 | authenticate, |
30 | ensureUserHasRight(UserRight.MANAGE_APPLICATION_FOLLOW), | 30 | ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW), |
31 | followValidator, | 31 | followValidator, |
32 | setBodyHostsPort, | 32 | setBodyHostsPort, |
33 | asyncMiddleware(follow) | 33 | asyncMiddleware(follow) |
34 | ) | 34 | ) |
35 | 35 | ||
36 | applicationFollowsRouter.get('/followers', | 36 | serverFollowsRouter.get('/followers', |
37 | paginationValidator, | 37 | paginationValidator, |
38 | followersSortValidator, | 38 | followersSortValidator, |
39 | setFollowersSort, | 39 | setFollowersSort, |
@@ -44,21 +44,21 @@ applicationFollowsRouter.get('/followers', | |||
44 | // --------------------------------------------------------------------------- | 44 | // --------------------------------------------------------------------------- |
45 | 45 | ||
46 | export { | 46 | export { |
47 | applicationFollowsRouter | 47 | serverFollowsRouter |
48 | } | 48 | } |
49 | 49 | ||
50 | // --------------------------------------------------------------------------- | 50 | // --------------------------------------------------------------------------- |
51 | 51 | ||
52 | async function listFollowing (req: express.Request, res: express.Response, next: express.NextFunction) { | 52 | async function listFollowing (req: express.Request, res: express.Response, next: express.NextFunction) { |
53 | const applicationAccount = await getServerAccount() | 53 | const serverAccount = await getServerAccount() |
54 | const resultList = await db.AccountFollow.listFollowingForApi(applicationAccount.id, req.query.start, req.query.count, req.query.sort) | 54 | const resultList = await db.AccountFollow.listFollowingForApi(serverAccount.id, req.query.start, req.query.count, req.query.sort) |
55 | 55 | ||
56 | return res.json(getFormattedObjects(resultList.data, resultList.total)) | 56 | return res.json(getFormattedObjects(resultList.data, resultList.total)) |
57 | } | 57 | } |
58 | 58 | ||
59 | async function listFollowers (req: express.Request, res: express.Response, next: express.NextFunction) { | 59 | async function listFollowers (req: express.Request, res: express.Response, next: express.NextFunction) { |
60 | const applicationAccount = await getServerAccount() | 60 | const serverAccount = await getServerAccount() |
61 | const resultList = await db.AccountFollow.listFollowersForApi(applicationAccount.id, req.query.start, req.query.count, req.query.sort) | 61 | const resultList = await db.AccountFollow.listFollowersForApi(serverAccount.id, req.query.start, req.query.count, req.query.sort) |
62 | 62 | ||
63 | return res.json(getFormattedObjects(resultList.data, resultList.total)) | 63 | return res.json(getFormattedObjects(resultList.data, resultList.total)) |
64 | } | 64 | } |
diff --git a/server/controllers/api/server/index.ts b/server/controllers/api/server/index.ts index 011b971ed..8dc1a0031 100644 --- a/server/controllers/api/server/index.ts +++ b/server/controllers/api/server/index.ts | |||
@@ -1,12 +1,12 @@ | |||
1 | import * as express from 'express' | 1 | import * as express from 'express' |
2 | import { applicationFollowsRouter } from './follows' | 2 | import { serverFollowsRouter } from './follows' |
3 | 3 | ||
4 | const applicationRouter = express.Router() | 4 | const serverRouter = express.Router() |
5 | 5 | ||
6 | applicationRouter.use('/', applicationFollowsRouter) | 6 | serverRouter.use('/', serverFollowsRouter) |
7 | 7 | ||
8 | // --------------------------------------------------------------------------- | 8 | // --------------------------------------------------------------------------- |
9 | 9 | ||
10 | export { | 10 | export { |
11 | applicationRouter | 11 | serverRouter |
12 | } | 12 | } |
diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index eeda8347d..f0a569410 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts | |||
@@ -322,7 +322,7 @@ const OPENGRAPH_AND_OEMBED_COMMENT = '<!-- open graph and oembed tags -->' | |||
322 | if (isTestInstance() === true) { | 322 | if (isTestInstance() === true) { |
323 | CONSTRAINTS_FIELDS.VIDEOS.DURATION.max = 14 | 323 | CONSTRAINTS_FIELDS.VIDEOS.DURATION.max = 14 |
324 | FRIEND_SCORE.BASE = 20 | 324 | FRIEND_SCORE.BASE = 20 |
325 | JOBS_FETCHING_INTERVAL = 10000 | 325 | JOBS_FETCHING_INTERVAL = 2000 |
326 | REMOTE_SCHEME.HTTP = 'http' | 326 | REMOTE_SCHEME.HTTP = 'http' |
327 | REMOTE_SCHEME.WS = 'ws' | 327 | REMOTE_SCHEME.WS = 'ws' |
328 | STATIC_MAX_AGE = '0' | 328 | STATIC_MAX_AGE = '0' |
diff --git a/server/tests/utils/follows.ts b/server/tests/utils/follows.ts new file mode 100644 index 000000000..9ad1ca7f4 --- /dev/null +++ b/server/tests/utils/follows.ts | |||
@@ -0,0 +1,53 @@ | |||
1 | import * as request from 'supertest' | ||
2 | |||
3 | import { wait } from './miscs' | ||
4 | |||
5 | function getFollowersListPaginationAndSort (url: string, start: number, count: number, sort: string) { | ||
6 | const path = '/api/v1/servers/followers' | ||
7 | |||
8 | return request(url) | ||
9 | .get(path) | ||
10 | .query({ start }) | ||
11 | .query({ count }) | ||
12 | .query({ sort }) | ||
13 | .set('Accept', 'application/json') | ||
14 | .expect(200) | ||
15 | .expect('Content-Type', /json/) | ||
16 | } | ||
17 | |||
18 | function getFollowingListPaginationAndSort (url: string, start: number, count: number, sort: string) { | ||
19 | const path = '/api/v1/servers/following' | ||
20 | |||
21 | return request(url) | ||
22 | .get(path) | ||
23 | .query({ start }) | ||
24 | .query({ count }) | ||
25 | .query({ sort }) | ||
26 | .set('Accept', 'application/json') | ||
27 | .expect(200) | ||
28 | .expect('Content-Type', /json/) | ||
29 | } | ||
30 | |||
31 | async function follow (follower: string, following: string[], accessToken: string, expectedStatus = 204) { | ||
32 | const path = '/api/v1/servers/follow' | ||
33 | |||
34 | const res = await request(follower) | ||
35 | .post(path) | ||
36 | .set('Accept', 'application/json') | ||
37 | .set('Authorization', 'Bearer ' + accessToken) | ||
38 | .send({ 'hosts': following }) | ||
39 | .expect(expectedStatus) | ||
40 | |||
41 | // Wait request propagation | ||
42 | await wait(1000) | ||
43 | |||
44 | return res | ||
45 | } | ||
46 | |||
47 | // --------------------------------------------------------------------------- | ||
48 | |||
49 | export { | ||
50 | getFollowersListPaginationAndSort, | ||
51 | getFollowingListPaginationAndSort, | ||
52 | follow | ||
53 | } | ||
diff --git a/server/tests/utils/pods.ts b/server/tests/utils/pods.ts deleted file mode 100644 index 52e807e70..000000000 --- a/server/tests/utils/pods.ts +++ /dev/null | |||
@@ -1,103 +0,0 @@ | |||
1 | import * as request from 'supertest' | ||
2 | |||
3 | import { wait } from './miscs' | ||
4 | |||
5 | function getFriendsList (url: string) { | ||
6 | const path = '/api/v1/pods/' | ||
7 | |||
8 | return request(url) | ||
9 | .get(path) | ||
10 | .set('Accept', 'application/json') | ||
11 | .expect(200) | ||
12 | .expect('Content-Type', /json/) | ||
13 | } | ||
14 | |||
15 | function getPodsListPaginationAndSort (url: string, start: number, count: number, sort: string) { | ||
16 | const path = '/api/v1/pods/' | ||
17 | |||
18 | return request(url) | ||
19 | .get(path) | ||
20 | .query({ start }) | ||
21 | .query({ count }) | ||
22 | .query({ sort }) | ||
23 | .set('Accept', 'application/json') | ||
24 | .expect(200) | ||
25 | .expect('Content-Type', /json/) | ||
26 | } | ||
27 | |||
28 | async function makeFriends (url: string, accessToken: string, expectedStatus = 204) { | ||
29 | // Which pod makes friends with which pod | ||
30 | const friendsMatrix = { | ||
31 | 'http://localhost:9001': [ | ||
32 | 'localhost:9002' | ||
33 | ], | ||
34 | 'http://localhost:9002': [ | ||
35 | 'localhost:9003' | ||
36 | ], | ||
37 | 'http://localhost:9003': [ | ||
38 | 'localhost:9001' | ||
39 | ], | ||
40 | 'http://localhost:9004': [ | ||
41 | 'localhost:9002' | ||
42 | ], | ||
43 | 'http://localhost:9005': [ | ||
44 | 'localhost:9001', | ||
45 | 'localhost:9004' | ||
46 | ], | ||
47 | 'http://localhost:9006': [ | ||
48 | 'localhost:9001', | ||
49 | 'localhost:9002', | ||
50 | 'localhost:9003' | ||
51 | ] | ||
52 | } | ||
53 | const path = '/api/v1/pods/make-friends' | ||
54 | |||
55 | // The first pod make friend with the third | ||
56 | const res = await request(url) | ||
57 | .post(path) | ||
58 | .set('Accept', 'application/json') | ||
59 | .set('Authorization', 'Bearer ' + accessToken) | ||
60 | .send({ 'hosts': friendsMatrix[url] }) | ||
61 | .expect(expectedStatus) | ||
62 | |||
63 | // Wait request propagation | ||
64 | await wait(1000) | ||
65 | |||
66 | return res | ||
67 | } | ||
68 | |||
69 | async function quitFriends (url: string, accessToken: string, expectedStatus = 204) { | ||
70 | const path = '/api/v1/pods/quit-friends' | ||
71 | |||
72 | // The first pod make friend with the third | ||
73 | const res = await request(url) | ||
74 | .get(path) | ||
75 | .set('Accept', 'application/json') | ||
76 | .set('Authorization', 'Bearer ' + accessToken) | ||
77 | .expect(expectedStatus) | ||
78 | |||
79 | // Wait request propagation | ||
80 | await wait(1000) | ||
81 | |||
82 | return res | ||
83 | } | ||
84 | |||
85 | function quitOneFriend (url: string, accessToken: string, friendId: number, expectedStatus = 204) { | ||
86 | const path = '/api/v1/pods/' + friendId | ||
87 | |||
88 | return request(url) | ||
89 | .delete(path) | ||
90 | .set('Accept', 'application/json') | ||
91 | .set('Authorization', 'Bearer ' + accessToken) | ||
92 | .expect(expectedStatus) | ||
93 | } | ||
94 | |||
95 | // --------------------------------------------------------------------------- | ||
96 | |||
97 | export { | ||
98 | getFriendsList, | ||
99 | makeFriends, | ||
100 | quitFriends, | ||
101 | quitOneFriend, | ||
102 | getPodsListPaginationAndSort | ||
103 | } | ||