1
0
Fork 0

ApplicationFollow -> SeverFollow

This commit is contained in:
Chocobozzz 2017-11-16 17:16:42 +01:00
parent 21e0727a84
commit 4610bc5b12
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
12 changed files with 78 additions and 128 deletions

View File

@ -13,7 +13,7 @@ export const FollowsRoutes: Routes = [
component: FollowsComponent, component: FollowsComponent,
canActivate: [ UserRightGuard ], canActivate: [ UserRightGuard ],
data: { data: {
userRight: UserRight.MANAGE_APPLICATION_FOLLOW userRight: UserRight.MANAGE_SERVER_FOLLOW
}, },
children: [ children: [
{ {

View File

@ -11,7 +11,7 @@ import { AccountFollow, ResultList } from '../../../../../../shared'
@Injectable() @Injectable()
export class FollowService { export class FollowService {
private static BASE_APPLICATION_URL = API_URL + '/api/v1/application' private static BASE_APPLICATION_URL = API_URL + '/api/v1/server'
constructor ( constructor (
private authHttp: HttpClient, private authHttp: HttpClient,

View File

@ -5,7 +5,7 @@
List users List users
</a> </a>
<a *ngIf="hasApplicationFollowRight()" routerLink="/admin/follows" routerLinkActive="active"> <a *ngIf="hasServerFollowRight()" routerLink="/admin/follows" routerLinkActive="active">
<span class="hidden-xs glyphicon glyphicon-cloud"></span> <span class="hidden-xs glyphicon glyphicon-cloud"></span>
Manage follows Manage follows
</a> </a>

View File

@ -15,8 +15,8 @@ export class MenuAdminComponent {
return this.auth.getUser().hasRight(UserRight.MANAGE_USERS) return this.auth.getUser().hasRight(UserRight.MANAGE_USERS)
} }
hasApplicationFollowRight () { hasServerFollowRight () {
return this.auth.getUser().hasRight(UserRight.MANAGE_APPLICATION_FOLLOW) return this.auth.getUser().hasRight(UserRight.MANAGE_SERVER_FOLLOW)
} }
hasVideoAbusesRight () { hasVideoAbusesRight () {

View File

@ -16,7 +16,7 @@ export class MenuComponent implements OnInit {
private routesPerRight = { private routesPerRight = {
[UserRight.MANAGE_USERS]: '/admin/users', [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_ABUSES]: '/admin/video-abuses',
[UserRight.MANAGE_VIDEO_BLACKLIST]: '/admin/video-blacklist' [UserRight.MANAGE_VIDEO_BLACKLIST]: '/admin/video-blacklist'
} }
@ -58,7 +58,7 @@ export class MenuComponent implements OnInit {
const adminRights = [ const adminRights = [
UserRight.MANAGE_USERS, UserRight.MANAGE_USERS,
UserRight.MANAGE_APPLICATION_FOLLOW, UserRight.MANAGE_SERVER_FOLLOW,
UserRight.MANAGE_VIDEO_ABUSES, UserRight.MANAGE_VIDEO_ABUSES,
UserRight.MANAGE_VIDEO_BLACKLIST UserRight.MANAGE_VIDEO_BLACKLIST
] ]

View File

@ -4,13 +4,13 @@ import { badRequest } from '../../helpers'
import { oauthClientsRouter } from './oauth-clients' import { oauthClientsRouter } from './oauth-clients'
import { configRouter } from './config' import { configRouter } from './config'
import { applicationRouter } from './server' import { serverRouter } from './server'
import { usersRouter } from './users' import { usersRouter } from './users'
import { videosRouter } from './videos' import { videosRouter } from './videos'
const apiRouter = express.Router() const apiRouter = express.Router()
apiRouter.use('/application', applicationRouter) apiRouter.use('/server', serverRouter)
apiRouter.use('/oauth-clients', oauthClientsRouter) apiRouter.use('/oauth-clients', oauthClientsRouter)
apiRouter.use('/config', configRouter) apiRouter.use('/config', configRouter)
apiRouter.use('/users', usersRouter) apiRouter.use('/users', usersRouter)

View File

@ -15,9 +15,9 @@ import { ensureUserHasRight } from '../../../middlewares/user-right'
import { followValidator } from '../../../middlewares/validators/servers' import { followValidator } from '../../../middlewares/validators/servers'
import { followersSortValidator, followingSortValidator } from '../../../middlewares/validators/sort' import { followersSortValidator, followingSortValidator } from '../../../middlewares/validators/sort'
const applicationFollowsRouter = express.Router() const serverFollowsRouter = express.Router()
applicationFollowsRouter.get('/following', serverFollowsRouter.get('/following',
paginationValidator, paginationValidator,
followingSortValidator, followingSortValidator,
setFollowingSort, setFollowingSort,
@ -25,15 +25,15 @@ applicationFollowsRouter.get('/following',
asyncMiddleware(listFollowing) asyncMiddleware(listFollowing)
) )
applicationFollowsRouter.post('/follow', serverFollowsRouter.post('/follow',
authenticate, authenticate,
ensureUserHasRight(UserRight.MANAGE_APPLICATION_FOLLOW), ensureUserHasRight(UserRight.MANAGE_SERVER_FOLLOW),
followValidator, followValidator,
setBodyHostsPort, setBodyHostsPort,
asyncMiddleware(follow) asyncMiddleware(follow)
) )
applicationFollowsRouter.get('/followers', serverFollowsRouter.get('/followers',
paginationValidator, paginationValidator,
followersSortValidator, followersSortValidator,
setFollowersSort, setFollowersSort,
@ -44,21 +44,21 @@ applicationFollowsRouter.get('/followers',
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
export { export {
applicationFollowsRouter serverFollowsRouter
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
async function listFollowing (req: express.Request, res: express.Response, next: express.NextFunction) { async function listFollowing (req: express.Request, res: express.Response, next: express.NextFunction) {
const applicationAccount = await getServerAccount() const serverAccount = await getServerAccount()
const resultList = await db.AccountFollow.listFollowingForApi(applicationAccount.id, req.query.start, req.query.count, req.query.sort) 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)) return res.json(getFormattedObjects(resultList.data, resultList.total))
} }
async function listFollowers (req: express.Request, res: express.Response, next: express.NextFunction) { async function listFollowers (req: express.Request, res: express.Response, next: express.NextFunction) {
const applicationAccount = await getServerAccount() const serverAccount = await getServerAccount()
const resultList = await db.AccountFollow.listFollowersForApi(applicationAccount.id, req.query.start, req.query.count, req.query.sort) 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)) return res.json(getFormattedObjects(resultList.data, resultList.total))
} }

View File

@ -1,12 +1,12 @@
import * as express from 'express' 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 { export {
applicationRouter serverRouter
} }

View File

@ -322,7 +322,7 @@ const OPENGRAPH_AND_OEMBED_COMMENT = '<!-- open graph and oembed tags -->'
if (isTestInstance() === true) { if (isTestInstance() === true) {
CONSTRAINTS_FIELDS.VIDEOS.DURATION.max = 14 CONSTRAINTS_FIELDS.VIDEOS.DURATION.max = 14
FRIEND_SCORE.BASE = 20 FRIEND_SCORE.BASE = 20
JOBS_FETCHING_INTERVAL = 10000 JOBS_FETCHING_INTERVAL = 2000
REMOTE_SCHEME.HTTP = 'http' REMOTE_SCHEME.HTTP = 'http'
REMOTE_SCHEME.WS = 'ws' REMOTE_SCHEME.WS = 'ws'
STATIC_MAX_AGE = '0' STATIC_MAX_AGE = '0'

View File

@ -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
}

View File

@ -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
}

View File

@ -1,7 +1,7 @@
export enum UserRight { export enum UserRight {
ALL, ALL,
MANAGE_USERS, MANAGE_USERS,
MANAGE_APPLICATION_FOLLOW, MANAGE_SERVER_FOLLOW,
MANAGE_VIDEO_ABUSES, MANAGE_VIDEO_ABUSES,
MANAGE_VIDEO_BLACKLIST, MANAGE_VIDEO_BLACKLIST,
REMOVE_ANY_VIDEO, REMOVE_ANY_VIDEO,