diff --git a/client/src/app/+admin/follows/follows.routes.ts b/client/src/app/+admin/follows/follows.routes.ts index b7d44f75b..e84c79e82 100644 --- a/client/src/app/+admin/follows/follows.routes.ts +++ b/client/src/app/+admin/follows/follows.routes.ts @@ -13,7 +13,7 @@ export const FollowsRoutes: Routes = [ component: FollowsComponent, canActivate: [ UserRightGuard ], data: { - userRight: UserRight.MANAGE_APPLICATION_FOLLOW + userRight: UserRight.MANAGE_SERVER_FOLLOW }, children: [ { diff --git a/client/src/app/+admin/follows/shared/follow.service.ts b/client/src/app/+admin/follows/shared/follow.service.ts index 3dc91dfca..d64361ee3 100644 --- a/client/src/app/+admin/follows/shared/follow.service.ts +++ b/client/src/app/+admin/follows/shared/follow.service.ts @@ -11,7 +11,7 @@ import { AccountFollow, ResultList } from '../../../../../../shared' @Injectable() export class FollowService { - private static BASE_APPLICATION_URL = API_URL + '/api/v1/application' + private static BASE_APPLICATION_URL = API_URL + '/api/v1/server' constructor ( private authHttp: HttpClient, diff --git a/client/src/app/core/menu/menu-admin.component.html b/client/src/app/core/menu/menu-admin.component.html index 99ee287c5..eb2d0d69c 100644 --- a/client/src/app/core/menu/menu-admin.component.html +++ b/client/src/app/core/menu/menu-admin.component.html @@ -5,7 +5,7 @@ List users - + Manage follows diff --git a/client/src/app/core/menu/menu-admin.component.ts b/client/src/app/core/menu/menu-admin.component.ts index 88a654d1f..466da1aee 100644 --- a/client/src/app/core/menu/menu-admin.component.ts +++ b/client/src/app/core/menu/menu-admin.component.ts @@ -15,8 +15,8 @@ export class MenuAdminComponent { return this.auth.getUser().hasRight(UserRight.MANAGE_USERS) } - hasApplicationFollowRight () { - return this.auth.getUser().hasRight(UserRight.MANAGE_APPLICATION_FOLLOW) + hasServerFollowRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_SERVER_FOLLOW) } hasVideoAbusesRight () { diff --git a/client/src/app/core/menu/menu.component.ts b/client/src/app/core/menu/menu.component.ts index 872d29819..d2bd71534 100644 --- a/client/src/app/core/menu/menu.component.ts +++ b/client/src/app/core/menu/menu.component.ts @@ -16,7 +16,7 @@ export class MenuComponent implements OnInit { private routesPerRight = { [UserRight.MANAGE_USERS]: '/admin/users', - [UserRight.MANAGE_APPLICATION_FOLLOW]: '/admin/friends', + [UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends', [UserRight.MANAGE_VIDEO_ABUSES]: '/admin/video-abuses', [UserRight.MANAGE_VIDEO_BLACKLIST]: '/admin/video-blacklist' } @@ -58,7 +58,7 @@ export class MenuComponent implements OnInit { const adminRights = [ UserRight.MANAGE_USERS, - UserRight.MANAGE_APPLICATION_FOLLOW, + UserRight.MANAGE_SERVER_FOLLOW, UserRight.MANAGE_VIDEO_ABUSES, UserRight.MANAGE_VIDEO_BLACKLIST ] 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' import { oauthClientsRouter } from './oauth-clients' import { configRouter } from './config' -import { applicationRouter } from './server' +import { serverRouter } from './server' import { usersRouter } from './users' import { videosRouter } from './videos' const apiRouter = express.Router() -apiRouter.use('/application', applicationRouter) +apiRouter.use('/server', serverRouter) apiRouter.use('/oauth-clients', oauthClientsRouter) apiRouter.use('/config', configRouter) 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' import { followValidator } from '../../../middlewares/validators/servers' import { followersSortValidator, followingSortValidator } from '../../../middlewares/validators/sort' -const applicationFollowsRouter = express.Router() +const serverFollowsRouter = express.Router() -applicationFollowsRouter.get('/following', +serverFollowsRouter.get('/following', paginationValidator, followingSortValidator, setFollowingSort, @@ -25,15 +25,15 @@ applicationFollowsRouter.get('/following', asyncMiddleware(listFollowing) ) -applicationFollowsRouter.post('/follow', +serverFollowsRouter.post('/follow', authenticate, - ensureUserHasRight(UserRight.MANAGE_APPLICATION_FOLLOW), + ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW), followValidator, setBodyHostsPort, asyncMiddleware(follow) ) -applicationFollowsRouter.get('/followers', +serverFollowsRouter.get('/followers', paginationValidator, followersSortValidator, setFollowersSort, @@ -44,21 +44,21 @@ applicationFollowsRouter.get('/followers', // --------------------------------------------------------------------------- export { - applicationFollowsRouter + serverFollowsRouter } // --------------------------------------------------------------------------- async function listFollowing (req: express.Request, res: express.Response, next: express.NextFunction) { - const applicationAccount = await getServerAccount() - const resultList = await db.AccountFollow.listFollowingForApi(applicationAccount.id, req.query.start, req.query.count, req.query.sort) + const serverAccount = await getServerAccount() + const resultList = await db.AccountFollow.listFollowingForApi(serverAccount.id, req.query.start, req.query.count, req.query.sort) return res.json(getFormattedObjects(resultList.data, resultList.total)) } async function listFollowers (req: express.Request, res: express.Response, next: express.NextFunction) { - const applicationAccount = await getServerAccount() - const resultList = await db.AccountFollow.listFollowersForApi(applicationAccount.id, req.query.start, req.query.count, req.query.sort) + const serverAccount = await getServerAccount() + const resultList = await db.AccountFollow.listFollowersForApi(serverAccount.id, req.query.start, req.query.count, req.query.sort) return res.json(getFormattedObjects(resultList.data, resultList.total)) } 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 @@ import * as express from 'express' -import { applicationFollowsRouter } from './follows' +import { serverFollowsRouter } from './follows' -const applicationRouter = express.Router() +const serverRouter = express.Router() -applicationRouter.use('/', applicationFollowsRouter) +serverRouter.use('/', serverFollowsRouter) // --------------------------------------------------------------------------- export { - applicationRouter + serverRouter } 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 = '' if (isTestInstance() === true) { CONSTRAINTS_FIELDS.VIDEOS.DURATION.max = 14 FRIEND_SCORE.BASE = 20 - JOBS_FETCHING_INTERVAL = 10000 + JOBS_FETCHING_INTERVAL = 2000 REMOTE_SCHEME.HTTP = 'http' REMOTE_SCHEME.WS = 'ws' 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 @@ +import * as request from 'supertest' + +import { wait } from './miscs' + +function getFollowersListPaginationAndSort (url: string, start: number, count: number, sort: string) { + const path = '/api/v1/servers/followers' + + return request(url) + .get(path) + .query({ start }) + .query({ count }) + .query({ sort }) + .set('Accept', 'application/json') + .expect(200) + .expect('Content-Type', /json/) +} + +function getFollowingListPaginationAndSort (url: string, start: number, count: number, sort: string) { + const path = '/api/v1/servers/following' + + return request(url) + .get(path) + .query({ start }) + .query({ count }) + .query({ sort }) + .set('Accept', 'application/json') + .expect(200) + .expect('Content-Type', /json/) +} + +async function follow (follower: string, following: string[], accessToken: string, expectedStatus = 204) { + const path = '/api/v1/servers/follow' + + const res = await request(follower) + .post(path) + .set('Accept', 'application/json') + .set('Authorization', 'Bearer ' + accessToken) + .send({ 'hosts': following }) + .expect(expectedStatus) + + // Wait request propagation + await wait(1000) + + return res +} + +// --------------------------------------------------------------------------- + +export { + getFollowersListPaginationAndSort, + getFollowingListPaginationAndSort, + follow +} 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 @@ -import * as request from 'supertest' - -import { wait } from './miscs' - -function getFriendsList (url: string) { - const path = '/api/v1/pods/' - - return request(url) - .get(path) - .set('Accept', 'application/json') - .expect(200) - .expect('Content-Type', /json/) -} - -function getPodsListPaginationAndSort (url: string, start: number, count: number, sort: string) { - const path = '/api/v1/pods/' - - return request(url) - .get(path) - .query({ start }) - .query({ count }) - .query({ sort }) - .set('Accept', 'application/json') - .expect(200) - .expect('Content-Type', /json/) -} - -async function makeFriends (url: string, accessToken: string, expectedStatus = 204) { - // Which pod makes friends with which pod - const friendsMatrix = { - 'http://localhost:9001': [ - 'localhost:9002' - ], - 'http://localhost:9002': [ - 'localhost:9003' - ], - 'http://localhost:9003': [ - 'localhost:9001' - ], - 'http://localhost:9004': [ - 'localhost:9002' - ], - 'http://localhost:9005': [ - 'localhost:9001', - 'localhost:9004' - ], - 'http://localhost:9006': [ - 'localhost:9001', - 'localhost:9002', - 'localhost:9003' - ] - } - const path = '/api/v1/pods/make-friends' - - // The first pod make friend with the third - const res = await request(url) - .post(path) - .set('Accept', 'application/json') - .set('Authorization', 'Bearer ' + accessToken) - .send({ 'hosts': friendsMatrix[url] }) - .expect(expectedStatus) - - // Wait request propagation - await wait(1000) - - return res -} - -async function quitFriends (url: string, accessToken: string, expectedStatus = 204) { - const path = '/api/v1/pods/quit-friends' - - // The first pod make friend with the third - const res = await request(url) - .get(path) - .set('Accept', 'application/json') - .set('Authorization', 'Bearer ' + accessToken) - .expect(expectedStatus) - - // Wait request propagation - await wait(1000) - - return res -} - -function quitOneFriend (url: string, accessToken: string, friendId: number, expectedStatus = 204) { - const path = '/api/v1/pods/' + friendId - - return request(url) - .delete(path) - .set('Accept', 'application/json') - .set('Authorization', 'Bearer ' + accessToken) - .expect(expectedStatus) -} - -// --------------------------------------------------------------------------- - -export { - getFriendsList, - makeFriends, - quitFriends, - quitOneFriend, - getPodsListPaginationAndSort -} diff --git a/shared/models/users/user-right.enum.ts b/shared/models/users/user-right.enum.ts index ecad69d6f..9460b668e 100644 --- a/shared/models/users/user-right.enum.ts +++ b/shared/models/users/user-right.enum.ts @@ -1,7 +1,7 @@ export enum UserRight { ALL, MANAGE_USERS, - MANAGE_APPLICATION_FOLLOW, + MANAGE_SERVER_FOLLOW, MANAGE_VIDEO_ABUSES, MANAGE_VIDEO_BLACKLIST, REMOVE_ANY_VIDEO,