aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--server/controllers/api/accounts.ts10
-rw-r--r--server/middlewares/validators/users.ts1
-rw-r--r--server/middlewares/validators/videos/video-rates.ts2
-rw-r--r--server/tests/api/check-params/users.ts32
-rw-r--r--server/tests/api/users/users.ts32
-rw-r--r--shared/utils/users/accounts.ts5
6 files changed, 56 insertions, 26 deletions
diff --git a/server/controllers/api/accounts.ts b/server/controllers/api/accounts.ts
index aa01ea1eb..8d4db1e75 100644
--- a/server/controllers/api/accounts.ts
+++ b/server/controllers/api/accounts.ts
@@ -1,22 +1,22 @@
1import * as express from 'express' 1import * as express from 'express'
2import { getFormattedObjects, getServerActor } from '../../helpers/utils' 2import { getFormattedObjects, getServerActor } from '../../helpers/utils'
3import { 3import {
4 authenticate,
5 asyncMiddleware, 4 asyncMiddleware,
5 authenticate,
6 commonVideosFiltersValidator, 6 commonVideosFiltersValidator,
7 videoRatingValidator,
8 optionalAuthenticate, 7 optionalAuthenticate,
9 paginationValidator, 8 paginationValidator,
10 setDefaultPagination, 9 setDefaultPagination,
11 setDefaultSort, 10 setDefaultSort,
12 videoPlaylistsSortValidator, 11 videoPlaylistsSortValidator,
13 videoRatesSortValidator 12 videoRatesSortValidator,
13 videoRatingValidator
14} from '../../middlewares' 14} from '../../middlewares'
15import { 15import {
16 accountNameWithHostGetValidator, 16 accountNameWithHostGetValidator,
17 accountsSortValidator, 17 accountsSortValidator,
18 videosSortValidator, 18 ensureAuthUserOwnsAccountValidator,
19 ensureAuthUserOwnsAccountValidator 19 videosSortValidator
20} from '../../middlewares/validators' 20} from '../../middlewares/validators'
21import { AccountModel } from '../../models/account/account' 21import { AccountModel } from '../../models/account/account'
22import { AccountVideoRateModel } from '../../models/account/account-video-rate' 22import { AccountVideoRateModel } from '../../models/account/account-video-rate'
diff --git a/server/middlewares/validators/users.ts b/server/middlewares/validators/users.ts
index 35f41c450..eceded1c4 100644
--- a/server/middlewares/validators/users.ts
+++ b/server/middlewares/validators/users.ts
@@ -22,7 +22,6 @@ import { logger } from '../../helpers/logger'
22import { isSignupAllowed, isSignupAllowedForCurrentIP } from '../../helpers/signup' 22import { isSignupAllowed, isSignupAllowedForCurrentIP } from '../../helpers/signup'
23import { Redis } from '../../lib/redis' 23import { Redis } from '../../lib/redis'
24import { UserModel } from '../../models/account/user' 24import { UserModel } from '../../models/account/user'
25import { AccountModel } from '../../models/account/account'
26import { areValidationErrors } from './utils' 25import { areValidationErrors } from './utils'
27import { ActorModel } from '../../models/activitypub/actor' 26import { ActorModel } from '../../models/activitypub/actor'
28 27
diff --git a/server/middlewares/validators/videos/video-rates.ts b/server/middlewares/validators/videos/video-rates.ts
index e79d80e97..204b4a78d 100644
--- a/server/middlewares/validators/videos/video-rates.ts
+++ b/server/middlewares/validators/videos/video-rates.ts
@@ -1,7 +1,7 @@
1import * as express from 'express' 1import * as express from 'express'
2import 'express-validator' 2import 'express-validator'
3import { body, param, query } from 'express-validator/check' 3import { body, param, query } from 'express-validator/check'
4import { isIdOrUUIDValid, isIdValid } from '../../../helpers/custom-validators/misc' 4import { isIdOrUUIDValid } from '../../../helpers/custom-validators/misc'
5import { isRatingValid } from '../../../helpers/custom-validators/video-rates' 5import { isRatingValid } from '../../../helpers/custom-validators/video-rates'
6import { doesVideoExist, isVideoRatingTypeValid } from '../../../helpers/custom-validators/videos' 6import { doesVideoExist, isVideoRatingTypeValid } from '../../../helpers/custom-validators/videos'
7import { logger } from '../../../helpers/logger' 7import { logger } from '../../../helpers/logger'
diff --git a/server/tests/api/check-params/users.ts b/server/tests/api/check-params/users.ts
index 13be8b460..f3ee99e85 100644
--- a/server/tests/api/check-params/users.ts
+++ b/server/tests/api/check-params/users.ts
@@ -538,6 +538,38 @@ describe('Test users API validators', function () {
538 }) 538 })
539 }) 539 })
540 540
541 describe('When retrieving my global ratings', function () {
542 const path = '/api/v1/accounts/user1/ratings'
543
544 it('Should fail with a bad start pagination', async function () {
545 await checkBadStartPagination(server.url, path, userAccessToken)
546 })
547
548 it('Should fail with a bad count pagination', async function () {
549 await checkBadCountPagination(server.url, path, userAccessToken)
550 })
551
552 it('Should fail with an incorrect sort', async function () {
553 await checkBadSortPagination(server.url, path, userAccessToken)
554 })
555
556 it('Should fail with a unauthenticated user', async function () {
557 await makeGetRequest({ url: server.url, path, statusCodeExpected: 401 })
558 })
559
560 it('Should fail with a another user', async function () {
561 await makeGetRequest({ url: server.url, path, token: server.accessToken, statusCodeExpected: 403 })
562 })
563
564 it('Should fail with a bad type', async function () {
565 await makeGetRequest({ url: server.url, path, token: userAccessToken, query: { rating: 'toto ' }, statusCodeExpected: 400 })
566 })
567
568 it('Should succeed with the correct params', async function () {
569 await makeGetRequest({ url: server.url, path, token: userAccessToken, statusCodeExpected: 200 })
570 })
571 })
572
541 describe('When blocking/unblocking/removing user', function () { 573 describe('When blocking/unblocking/removing user', function () {
542 it('Should fail with an incorrect id', async function () { 574 it('Should fail with an incorrect id', async function () {
543 await removeUser(server.url, 'blabla', server.accessToken, 400) 575 await removeUser(server.url, 'blabla', server.accessToken, 400)
diff --git a/server/tests/api/users/users.ts b/server/tests/api/users/users.ts
index bc069a7be..6e7de9c38 100644
--- a/server/tests/api/users/users.ts
+++ b/server/tests/api/users/users.ts
@@ -140,31 +140,27 @@ describe('Test users', function () {
140 140
141 it('Should retrieve ratings list', async function () { 141 it('Should retrieve ratings list', async function () {
142 await rateVideo(server.url, accessToken, videoId, 'like') 142 await rateVideo(server.url, accessToken, videoId, 'like')
143 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 200) 143
144 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, null, 200)
144 const ratings = res.body 145 const ratings = res.body
145 146
147 expect(ratings.total).to.equal(1)
146 expect(ratings.data[0].video.id).to.equal(videoId) 148 expect(ratings.data[0].video.id).to.equal(videoId)
147 expect(ratings.data[0].rating).to.equal('like') 149 expect(ratings.data[0].rating).to.equal('like')
148 }) 150 })
149 151
150 it('Should retrieve ratings list by rating type', async function () { 152 it('Should retrieve ratings list by rating type', async function () {
151 await rateVideo(server.url, accessToken, videoId, 'like') 153 {
152 let res = await getAccountRatings(server.url, server.user.username, server.accessToken, 200, { rating: 'like' }) 154 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'like')
153 let ratings = res.body 155 const ratings = res.body
154 expect(ratings.data.length).to.equal(1) 156 expect(ratings.data.length).to.equal(1)
155 res = await getAccountRatings(server.url, server.user.username, server.accessToken, 200, { rating: 'dislike' }) 157 }
156 ratings = res.body 158
157 expect(ratings.data.length).to.equal(0) 159 {
158 await getAccountRatings(server.url, server.user.username, server.accessToken, 400, { rating: 'invalid' }) 160 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'dislike')
159 }) 161 const ratings = res.body
160 162 expect(ratings.data.length).to.equal(0)
161 it('Should not access ratings list if not logged with correct user', async function () { 163 }
162 const user = { username: 'anuragh', password: 'passbyme' }
163 const resUser = await createUser(server.url, server.accessToken, user.username, user.password)
164 const userId = resUser.body.user.id
165 const userAccessToken = await userLogin(server, user)
166 await getAccountRatings(server.url, server.user.username, userAccessToken, 403)
167 await removeUser(server.url, userId, server.accessToken)
168 }) 164 })
169 165
170 it('Should not be able to remove the video with an incorrect token', async function () { 166 it('Should not be able to remove the video with an incorrect token', async function () {
diff --git a/shared/utils/users/accounts.ts b/shared/utils/users/accounts.ts
index 54d66ac2a..f64a2dbad 100644
--- a/shared/utils/users/accounts.ts
+++ b/shared/utils/users/accounts.ts
@@ -7,6 +7,7 @@ import { join } from 'path'
7import { Account } from '../../models/actors' 7import { Account } from '../../models/actors'
8import { root } from '../miscs/miscs' 8import { root } from '../miscs/miscs'
9import { makeGetRequest } from '../requests/requests' 9import { makeGetRequest } from '../requests/requests'
10import { VideoRateType } from '../../models/videos'
10 11
11function getAccountsList (url: string, sort = '-createdAt', statusCodeExpected = 200) { 12function getAccountsList (url: string, sort = '-createdAt', statusCodeExpected = 200) {
12 const path = '/api/v1/accounts' 13 const path = '/api/v1/accounts'
@@ -54,9 +55,11 @@ async function checkActorFilesWereRemoved (actorUUID: string, serverNumber: numb
54 } 55 }
55} 56}
56 57
57function getAccountRatings (url: string, accountName: string, accessToken: string, statusCodeExpected = 200, query = {}) { 58function getAccountRatings (url: string, accountName: string, accessToken: string, rating?: VideoRateType, statusCodeExpected = 200) {
58 const path = '/api/v1/accounts/' + accountName + '/ratings' 59 const path = '/api/v1/accounts/' + accountName + '/ratings'
59 60
61 const query = rating ? { rating } : {}
62
60 return request(url) 63 return request(url)
61 .get(path) 64 .get(path)
62 .query(query) 65 .query(query)