]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Improve check follow params tests
authorChocobozzz <me@florianbigard.com>
Thu, 28 Dec 2017 13:29:57 +0000 (14:29 +0100)
committerChocobozzz <me@florianbigard.com>
Thu, 28 Dec 2017 13:29:57 +0000 (14:29 +0100)
21 files changed:
server/middlewares/oauth.ts
server/middlewares/user-right.ts
server/middlewares/validators/follows.ts
server/tests/api/check-params/follows.ts
server/tests/api/check-params/jobs.ts
server/tests/api/check-params/users.ts
server/tests/api/check-params/video-abuses.ts
server/tests/api/check-params/video-blacklist.ts
server/tests/api/check-params/video-channels.ts
server/tests/api/check-params/videos.ts
server/tests/api/server/follows.ts
server/tests/api/users/users.ts
server/tests/api/videos/multiple-servers.ts
server/tests/api/videos/video-privacy.ts
server/tests/client.ts
server/tests/real-world/tools/get-access-token.ts
server/tests/utils/requests/check-api-params.ts [new file with mode: 0644]
server/tests/utils/requests/requests.ts
server/tests/utils/server/servers.ts
server/tests/utils/users/login.ts
server/tests/utils/videos/videos.ts

index e59168ea81fbec737a7da1ecb0aca601740186ad..12872c4a5a2776bc16560e6678d0b8cacc0ccb76 100644 (file)
@@ -17,7 +17,11 @@ function authenticate (req: express.Request, res: express.Response, next: expres
       return res.sendStatus(500)
     }
 
-    if (res.statusCode === 401 || res.statusCode === 400 || res.statusCode === 503) return res.end()
+    if (res.statusCode === 401 || res.statusCode === 400 || res.statusCode === 503) {
+      return res.json({
+        error: 'Authentication failed.'
+      }).end()
+    }
 
     return next()
   })
index 5bb5bdfbda5aaee10dcb6902be3bfaf730be9a8c..7cea7aa1e6c0e34eb2e812df4024956da44d7cc8 100644 (file)
@@ -8,8 +8,14 @@ function ensureUserHasRight (userRight: UserRight) {
   return function (req: express.Request, res: express.Response, next: express.NextFunction) {
     const user = res.locals.oauth.token.user as UserModel
     if (user.hasRight(userRight) === false) {
-      logger.info('User %s does not have right %s to access to %s.', user.username, UserRight[userRight], req.path)
-      return res.sendStatus(403)
+      const message = `User ${user.username} does not have right ${UserRight[userRight]} to access to ${req.path}.`
+      logger.info(message)
+
+      return res.status(403)
+        .json({
+          error: message
+        })
+        .end()
     }
 
     return next()
index 7dadf6a19e49a0c4e716833f55cfcdbb67408ab3..991a2e1757f8a2b8098e5c572849036d95f8f177 100644 (file)
@@ -41,7 +41,11 @@ const removeFollowingValidator = [
     const follow = await ActorFollowModel.loadByActorAndTargetHost(serverActor.id, req.params.host)
 
     if (!follow) {
-      return res.status(404)
+      return res
+        .status(404)
+        .json({
+          error: `Follower ${req.params.host} not found.`
+        })
         .end()
     }
 
index cdd2783dfad632e6dd7c7e892fb9fffcb56d8f04..d5fcb74771558b23e49299aa7f3fc278f21021bc 100644 (file)
@@ -4,14 +4,10 @@ import 'mocha'
 import * as request from 'supertest'
 
 import {
-  createUser,
-  flushTests,
-  killallServers,
-  loginAndGetAccessToken,
-  runServer,
-  ServerInfo,
-  setAccessTokensToServers
+  createUser, flushTests, killallServers, makeDeleteRequest, makePostBodyRequest, runServer, ServerInfo, setAccessTokensToServers,
+  userLogin
 } from '../../utils'
+import { checkBadCountPagination, checkBadSortPagination, checkBadStartPagination } from '../../utils/requests/check-api-params'
 
 describe('Test server follows API validators', function () {
   let server: ServerInfo
@@ -19,7 +15,7 @@ describe('Test server follows API validators', function () {
   // ---------------------------------------------------------------
 
   before(async function () {
-    this.timeout(45000)
+    this.timeout(20000)
 
     await flushTests()
     server = await runServer(1)
@@ -31,81 +27,85 @@ describe('Test server follows API validators', function () {
     let userAccessToken = null
 
     before(async function () {
-      await createUser(server.url, server.accessToken, 'user1', 'password')
-      server.user = {
+      const user = {
         username: 'user1',
         password: 'password'
       }
 
-      userAccessToken = await loginAndGetAccessToken(server)
+      await createUser(server.url, server.accessToken, user.username, user.password)
+      userAccessToken = await userLogin(server, user)
     })
 
     describe('When adding follows', function () {
       const path = '/api/v1/server/following'
-      const body = {
-        hosts: [ 'localhost:9002' ]
-      }
 
       it('Should fail without hosts', async function () {
-        await request(server.url)
-                .post(path)
-                .set('Authorization', 'Bearer ' + server.accessToken)
-                .set('Accept', 'application/json')
-                .expect(400)
+        await makePostBodyRequest({
+          url: server.url,
+          path,
+          token: server.accessToken,
+          statusCodeExpected: 400
+        })
       })
 
       it('Should fail if hosts is not an array', async function () {
-        await request(server.url)
-                .post(path)
-                .send({ hosts: 'localhost:9002' })
-                .set('Authorization', 'Bearer ' + server.accessToken)
-                .set('Accept', 'application/json')
-                .expect(400)
+        await makePostBodyRequest({
+          url: server.url,
+          path,
+          token: server.accessToken,
+          fields: { hosts: 'localhost:9002' },
+          statusCodeExpected: 400
+        })
       })
 
       it('Should fail if the array is not composed by hosts', async function () {
-        await request(server.url)
-                .post(path)
-                .send({ hosts: [ 'localhost:9002', 'localhost:coucou' ] })
-                .set('Authorization', 'Bearer ' + server.accessToken)
-                .set('Accept', 'application/json')
-                .expect(400)
+        await makePostBodyRequest({
+          url: server.url,
+          path,
+          fields: { hosts: [ 'localhost:9002', 'localhost:coucou' ] },
+          token: server.accessToken,
+          statusCodeExpected: 400
+        })
       })
 
       it('Should fail if the array is composed with http schemes', async function () {
-        await request(server.url)
-                .post(path)
-                .send({ hosts: [ 'localhost:9002', 'http://localhost:9003' ] })
-                .set('Authorization', 'Bearer ' + server.accessToken)
-                .set('Accept', 'application/json')
-                .expect(400)
+        await makePostBodyRequest({
+          url: server.url,
+          path,
+          fields: { hosts: [ 'localhost:9002', 'http://localhost:9003' ] },
+          token: server.accessToken,
+          statusCodeExpected: 400
+        })
       })
 
       it('Should fail if hosts are not unique', async function () {
-        await request(server.url)
-                .post(path)
-                .send({ urls: [ 'localhost:9002', 'localhost:9002' ] })
-                .set('Authorization', 'Bearer ' + server.accessToken)
-                .set('Accept', 'application/json')
-                .expect(400)
+        await makePostBodyRequest({
+          url: server.url,
+          path,
+          fields: { urls: [ 'localhost:9002', 'localhost:9002' ] },
+          token: server.accessToken,
+          statusCodeExpected: 400
+        })
       })
 
       it('Should fail with an invalid token', async function () {
-        await request(server.url)
-                .post(path)
-                .send(body)
-                .set('Authorization', 'Bearer fake_token')
-                .set('Accept', 'application/json')
-                .expect(401)
+        await makePostBodyRequest({
+          url: server.url,
+          path,
+          fields: { hosts: [ 'localhost:9002' ] },
+          token: 'fake_token',
+          statusCodeExpected: 401
+        })
       })
 
       it('Should fail if the user is not an administrator', async function () {
-        await request(server.url)
-                .post(path)
-                .send(body)
-                .set('Authorization', 'Bearer ' + userAccessToken)
-                .set('Accept', 'application/json')
-                .expect(403)
+        await makePostBodyRequest({
+          url: server.url,
+          path,
+          fields: { hosts: [ 'localhost:9002' ] },
+          token: userAccessToken,
+          statusCodeExpected: 403
+        })
       })
     })
 
@@ -113,27 +113,15 @@ describe('Test server follows API validators', function () {
       const path = '/api/v1/server/following'
 
       it('Should fail with a bad start pagination', async function () {
-        await request(server.url)
-          .get(path)
-          .query({ start: 'hello' })
-          .set('Accept', 'application/json')
-          .expect(400)
+        await checkBadStartPagination(server.url, path)
       })
 
       it('Should fail with a bad count pagination', async function () {
-        await request(server.url)
-          .get(path)
-          .query({ count: 'hello' })
-          .set('Accept', 'application/json')
-          .expect(400)
+        await checkBadCountPagination(server.url, path)
       })
 
       it('Should fail with an incorrect sort', async function () {
-        await request(server.url)
-          .get(path)
-          .query({ sort: 'hello' })
-          .set('Accept', 'application/json')
-          .expect(400)
+        await checkBadSortPagination(server.url, path)
       })
     })
 
@@ -141,27 +129,15 @@ describe('Test server follows API validators', function () {
       const path = '/api/v1/server/followers'
 
       it('Should fail with a bad start pagination', async function () {
-        await request(server.url)
-          .get(path)
-          .query({ start: 'hello' })
-          .set('Accept', 'application/json')
-          .expect(400)
+        await checkBadStartPagination(server.url, path)
       })
 
       it('Should fail with a bad count pagination', async function () {
-        await request(server.url)
-          .get(path)
-          .query({ count: 'hello' })
-          .set('Accept', 'application/json')
-          .expect(400)
+        await checkBadCountPagination(server.url, path)
       })
 
       it('Should fail with an incorrect sort', async function () {
-        await request(server.url)
-          .get(path)
-          .query({ sort: 'hello' })
-          .set('Accept', 'application/json')
-          .expect(400)
+        await checkBadSortPagination(server.url, path)
       })
     })
 
@@ -169,30 +145,40 @@ describe('Test server follows API validators', function () {
       const path = '/api/v1/server/following'
 
       it('Should fail with an invalid token', async function () {
-       await request(server.url)
-                .delete(path + '/1')
-                .set('Authorization', 'Bearer faketoken')
-                .set('Accept', 'application/json')
-                .expect(401)
+        await makeDeleteRequest({
+          url: server.url,
+          path: path + '/localhost:9002',
+          token: 'fake_token',
+          statusCodeExpected: 401
+        })
       })
 
       it('Should fail if the user is not an administrator', async function () {
-       await request(server.url)
-                .delete(path + '/1')
-                .set('Authorization', 'Bearer ' + userAccessToken)
-                .set('Accept', 'application/json')
-                .expect(403)
-      })
-
-      it('Should fail we do not follow this server', async function () {
-             await request(server.url)
-                .delete(path + '/example.com')
-                .set('Authorization', 'Bearer ' + server.accessToken)
-                .set('Accept', 'application/json')
-                .expect(404)
+        await makeDeleteRequest({
+          url: server.url,
+          path: path + '/localhost:9002',
+          token: userAccessToken,
+          statusCodeExpected: 403
+        })
+      })
+
+      it('Should fail if we do not follow this server', async function () {
+        await makeDeleteRequest({
+          url: server.url,
+          path: path + '/example.com',
+          token: server.accessToken,
+          statusCodeExpected: 404
+        })
+      })
+
+      it('Should succeed with the correct parameters', async function () {
+        await makeDeleteRequest({
+          url: server.url,
+          path: path + '/localhost:9002',
+          token: server.accessToken,
+          statusCodeExpected: 404
+        })
       })
-
-      it('Should succeed with the correct parameters')
     })
   })
 
index 7a0dd6e8c2a6f98c7ad9d2c66ee6fcdb1b706ead..3795d1d64d8dbfea0dfebebb9dedda6891d8f808 100644 (file)
@@ -3,7 +3,7 @@
 import 'mocha'
 import * as request from 'supertest'
 
-import { createUser, flushTests, getUserAccessToken, killallServers, runServer, ServerInfo, setAccessTokensToServers } from '../../utils'
+import { createUser, flushTests, userLogin, killallServers, runServer, ServerInfo, setAccessTokensToServers } from '../../utils'
 
 describe('Test jobs API validators', function () {
   const path = '/api/v1/jobs/'
@@ -26,7 +26,7 @@ describe('Test jobs API validators', function () {
       password: 'my super password'
     }
     await createUser(server.url, server.accessToken, user.username, user.password)
-    userAccessToken = await getUserAccessToken(server, user)
+    userAccessToken = await userLogin(server, user)
   })
 
   describe('When listing jobs', function () {
index 72488e5c4eb9e4a30d346d552df883c0e99a03ed..b566a2f1e99753ededef419c1732c13088393fd8 100644 (file)
@@ -11,13 +11,13 @@ import {
   getVideosList,
   makePutBodyRequest,
   createUser,
-  loginAndGetAccessToken,
+  serverLogin,
   getUsersList,
   registerUser,
   setAccessTokensToServers,
   killallServers,
   makePostBodyRequest,
-  getUserAccessToken
+  userLogin
 } from '../../utils'
 import { UserRole } from '../../../../shared'
 
@@ -58,7 +58,7 @@ describe('Test users API validators', function () {
       username: 'user1',
       password: 'my super password'
     }
-    userAccessToken = await getUserAccessToken(server, user)
+    userAccessToken = await userLogin(server, user)
   })
 
   describe('When listing users', function () {
@@ -304,7 +304,7 @@ describe('Test users API validators', function () {
         password: 'my super password'
       }
 
-      userAccessToken = await loginAndGetAccessToken(server)
+      userAccessToken = await serverLogin(server)
       const fields = {
         username: 'user3',
         email: 'test@example.com',
@@ -675,7 +675,7 @@ describe('Test users API validators', function () {
         email: 'test3@example.com',
         password: 'my super password'
       }
-      userAccessToken = await loginAndGetAccessToken(server)
+      userAccessToken = await serverLogin(server)
 
       const videoAttributes = { fixture: 'video_short2.webm' }
       await uploadVideo(server.url, userAccessToken, videoAttributes)
index eac12b6f004dd8c3d51193ffd8adde9cca833645..e994ccd49a093f5be613e62d1fd449dbe7161e60 100644 (file)
@@ -13,7 +13,7 @@ import {
   setAccessTokensToServers,
   killallServers,
   makePostBodyRequest,
-  getUserAccessToken
+  userLogin
 } from '../../utils'
 
 describe('Test video abuses API validators', function () {
@@ -35,7 +35,7 @@ describe('Test video abuses API validators', function () {
     const password = 'my super password'
     await createUser(server.url, server.accessToken, username, password)
 
-    userAccessToken = await getUserAccessToken(server, { username, password })
+    userAccessToken = await userLogin(server, { username, password })
 
     // Upload a video
     const videoAttributes = {}
index eb16b3af08fb90e2e640200cbac60b637a5675f9..c8b45718232cd63c9fad1dd1171ec3308a96bad6 100644 (file)
@@ -13,7 +13,7 @@ import {
   setAccessTokensToServers,
   killallServers,
   makePostBodyRequest,
-  getUserAccessToken
+  userLogin
 } from '../../utils'
 
 describe('Test video blacklist API validators', function () {
@@ -34,7 +34,7 @@ describe('Test video blacklist API validators', function () {
     const username = 'user1'
     const password = 'my super password'
     await createUser(server.url, server.accessToken, username, password)
-    userAccessToken = await getUserAccessToken(server, { username, password })
+    userAccessToken = await userLogin(server, { username, password })
 
     // Upload a video
     const videoAttributes = {}
index 7103aec25700f1dc26d031e0c4c107be36b98890..bf464152b2c424a962d63ff1fe30082b39caf7d4 100644 (file)
@@ -15,7 +15,7 @@ import {
   makePostBodyRequest,
   getVideoChannelsList,
   createUser,
-  getUserAccessToken
+  userLogin
 } from '../../utils'
 
 describe('Test videos API validator', function () {
@@ -40,7 +40,7 @@ describe('Test videos API validator', function () {
     }
     await createUser(server.url, server.accessToken, user.username, user.password)
 
-    accessTokenUser = await getUserAccessToken(server, user)
+    accessTokenUser = await userLogin(server, user)
   })
 
   describe('When listing a video channels', function () {
index 0aaa6e7c9569d8f1e09074c1fecb0044eb7c7619..b0c850f0caad569d42e7505bdaa330867b9c9cec 100644 (file)
@@ -17,7 +17,7 @@ import {
   makePostUploadRequest,
   getMyUserInformation,
   createUser,
-  getUserAccessToken
+  userLogin
 } from '../../utils'
 import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum'
 
@@ -260,7 +260,7 @@ describe('Test videos API validator', function () {
       }
       await createUser(server.url, server.accessToken, user.username, user.password)
 
-      const accessTokenUser = await getUserAccessToken(server, user)
+      const accessTokenUser = await userLogin(server, user)
       const res = await getMyUserInformation(server.url, accessTokenUser)
       const customChannelId = res.body.videoChannels[0].id
 
index f77c0c67c14d3853add86930594a05b9358646b4..6c815ace84f4317f8641a2bc58650f1b5b2079ee 100644 (file)
@@ -10,7 +10,7 @@ import {
 } from '../../utils/index'
 import { dateIsValid, webtorrentAdd } from '../../utils/miscs/miscs'
 import { follow, getFollowersListPaginationAndSort, getFollowingListPaginationAndSort, unfollow } from '../../utils/server/follows'
-import { getUserAccessToken } from '../../utils/users/login'
+import { userLogin } from '../../utils/users/login'
 import { createUser } from '../../utils/users/users'
 import {
   addVideoCommentReply, addVideoCommentThread, getVideoCommentThreads,
@@ -183,7 +183,7 @@ describe('Test follows', function () {
     {
       const user = { username: 'captain', password: 'password' }
       await createUser(servers[2].url, servers[2].accessToken, user.username, user.password)
-      const userAccessToken = await getUserAccessToken(servers[2], user)
+      const userAccessToken = await userLogin(servers[2], user)
 
       const resVideos = await getVideosList(servers[ 2 ].url)
       const video4 = resVideos.body.data.find(v => v.name === 'server3-4')
index 2e3a0b94fc29c727dee2a04d541af129690c7a32..298dbce2c6a4afd5b5dee24ab8c979d141ddb5a7 100644 (file)
@@ -15,7 +15,7 @@ import {
   getVideosList,
   killallServers,
   login,
-  loginAndGetAccessToken,
+  serverLogin,
   makePutBodyRequest,
   rateVideo,
   registerUser,
@@ -193,7 +193,7 @@ describe('Test users', function () {
       password: 'super password'
     }
 
-    accessTokenUser = await loginAndGetAccessToken(server)
+    accessTokenUser = await serverLogin(server)
   })
 
   it('Should be able to get the user information', async function () {
@@ -511,7 +511,7 @@ describe('Test users', function () {
       password: 'my super password'
     }
 
-    accessToken = await loginAndGetAccessToken(server)
+    accessToken = await serverLogin(server)
   })
 
   it('Should have the correct video quota', async function () {
index 84f730a8e9f6dd5a935c981364cd1dfb23ea185f..0c6508e71dbfd9a08112d3379696cbb00ae2b30b 100644 (file)
@@ -7,7 +7,7 @@ import * as request from 'supertest'
 import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
 
 import {
-  addVideoChannel, dateIsValid, doubleFollow, flushAndRunMultipleServers, flushTests, getUserAccessToken, getVideo,
+  addVideoChannel, dateIsValid, doubleFollow, flushAndRunMultipleServers, flushTests, userLogin, getVideo,
   getVideoChannelsList, getVideosList, killallServers, rateVideo, removeVideo, ServerInfo, setAccessTokensToServers, testVideoImage,
   updateVideo, uploadVideo, wait, webtorrentAdd
 } from '../../utils/index'
@@ -152,7 +152,7 @@ describe('Test multiple servers', function () {
         password: 'super_password'
       }
       await createUser(servers[1].url, servers[1].accessToken, user.username, user.password)
-      const userAccessToken = await getUserAccessToken(servers[1], user)
+      const userAccessToken = await userLogin(servers[1], user)
 
       const videoAttributes = {
         name: 'my super name for server 2',
index de709f8f17235c4a98f1bf8f1bcf27220288b095..469274921f8059ad15dd647addf4c753912fcdeb 100644 (file)
@@ -14,7 +14,7 @@ import {
   wait
 } from '../../utils/index'
 import { doubleFollow } from '../../utils/server/follows'
-import { getUserAccessToken } from '../../utils/users/login'
+import { userLogin } from '../../utils/users/login'
 import { createUser } from '../../utils/users/users'
 import { getMyVideos, getVideo, getVideoWithToken, updateVideo } from '../../utils/videos/videos'
 
@@ -78,7 +78,7 @@ describe('Test video privacy', function () {
     }
     await createUser(servers[0].url, servers[0].accessToken, user.username, user.password)
 
-    const token = await getUserAccessToken(servers[0], user)
+    const token = await userLogin(servers[0], user)
     await getVideoWithToken(servers[0].url, token, privateVideoUUID, 403)
   })
 
index 8c4334c5345030a7af841b3f5188597510d8328e..2be1cf5dda44919c4dbc51829ec1ca274b84713d 100644 (file)
@@ -9,7 +9,7 @@ import {
   ServerInfo,
   flushTests,
   runServer,
-  loginAndGetAccessToken,
+  serverLogin,
   uploadVideo,
   getVideosList
 } from './utils'
@@ -23,7 +23,7 @@ describe('Test a client controllers', function () {
     await flushTests()
 
     server = await runServer(1)
-    server.accessToken = await loginAndGetAccessToken(server)
+    server.accessToken = await serverLogin(server)
 
     const videoAttributes = {
       name: 'my super name for server 1',
index 138883ae98e688be6fea5a78deeb47788ea463d3..ee14733e34d12b9323c626a1d14f79b2cddbc47c 100644 (file)
@@ -2,7 +2,7 @@ import * as program from 'commander'
 
 import {
   getClient,
-  loginAndGetAccessToken
+  serverLogin
 } from '../../utils'
 
 program
@@ -36,7 +36,7 @@ getClient(program.url)
     server.client.id = res.body.client_id
     server.client.secret = res.body.client_secret
 
-    return loginAndGetAccessToken(server)
+    return serverLogin(server)
   })
   .then(accessToken => {
     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 (file)
index 0000000..fbd6606
--- /dev/null
@@ -0,0 +1,36 @@
+import { makeGetRequest } from './requests'
+
+function checkBadStartPagination (url: string, path: string) {
+  return makeGetRequest({
+    url,
+    path,
+    query: { start: 'hello' },
+    statusCodeExpected: 400
+  })
+}
+
+function checkBadCountPagination (url: string, path: string) {
+  return makeGetRequest({
+    url,
+    path,
+    query: { count: 'hello' },
+    statusCodeExpected: 400
+  })
+}
+
+function checkBadSortPagination (url: string, path: string) {
+  return makeGetRequest({
+    url,
+    path,
+    query: { sort: 'hello' },
+    statusCodeExpected: 400
+  })
+}
+
+// ---------------------------------------------------------------------------
+
+export {
+  checkBadStartPagination,
+  checkBadCountPagination,
+  checkBadSortPagination
+}
index 52b7a4c29ca73e9d671010798666e5185abb5788..eb02cf9e63fe06164b9b8b8a85e798d7caf31389 100644 (file)
@@ -1,11 +1,43 @@
 import * as request from 'supertest'
 
-function makeGetRequest (url: string, path: string) {
-  return request(url)
-    .get(path)
+function makeGetRequest (options: {
+  url: string,
+  path: string,
+  query?: any,
+  token?: string,
+  statusCodeExpected?: number
+}) {
+  if (!options.statusCodeExpected) options.statusCodeExpected = 400
+
+  const req = request(options.url)
+    .get(options.path)
     .set('Accept', 'application/json')
-    .expect(200)
+
+  if (options.token) req.set('Authorization', 'Bearer ' + options.token)
+  if (options.query) req.query(options.query)
+
+  return req
     .expect('Content-Type', /json/)
+    .expect(options.statusCodeExpected)
+}
+
+function makeDeleteRequest (options: {
+  url: string,
+  path: string,
+  token?: string,
+  statusCodeExpected?: number
+}) {
+  if (!options.statusCodeExpected) options.statusCodeExpected = 400
+
+  const req = request(options.url)
+    .delete(options.path)
+    .set('Accept', 'application/json')
+
+  if (options.token) req.set('Authorization', 'Bearer ' + options.token)
+
+  return req
+    .expect('Content-Type', /json/)
+    .expect(options.statusCodeExpected)
 }
 
 function makePostUploadRequest (options: {
@@ -48,9 +80,10 @@ function makePostBodyRequest (options: {
   url: string,
   path: string,
   token?: string,
-  fields: { [ fieldName: string ]: any },
+  fields?: { [ fieldName: string ]: any },
   statusCodeExpected?: number
 }) {
+  if (!options.fields) options.fields = {}
   if (!options.statusCodeExpected) options.statusCodeExpected = 400
 
   const req = request(options.url)
@@ -88,5 +121,6 @@ export {
   makeGetRequest,
   makePostUploadRequest,
   makePostBodyRequest,
-  makePutBodyRequest
+  makePutBodyRequest,
+  makeDeleteRequest
 }
index 8340fbc18d01bf79b1518262158dd8337a8c7d69..4add2f69a2eb73414587c5837ec720b7633c6b38 100644 (file)
@@ -114,7 +114,7 @@ function runServer (serverNumber: number, configOverride?: Object) {
   }
 
   return new Promise<ServerInfo>(res => {
-    server.app = fork(join(__dirname, '..', '..', '..', 'dist', 'server.js'), [], options)
+    server.app = fork(join(__dirname, '..', '..', '..', '..', 'dist', 'server.js'), [], options)
     server.app.stdout.on('data', function onStdout (data) {
       let dontContinue = false
 
index 855c4828d1d66e6fe3d675a0591ff3b5f874da25..04444e2f1598dc2dffde04738a89400466ca4983 100644 (file)
@@ -26,13 +26,13 @@ function login (url: string, client: Client, user: User, expectedStatus = 200) {
           .expect(expectedStatus)
 }
 
-async function loginAndGetAccessToken (server: Server) {
+async function serverLogin (server: Server) {
   const res = await login(server.url, server.client, server.user, 200)
 
   return res.body.access_token as string
 }
 
-async function getUserAccessToken (server: Server, user: User) {
+async function userLogin (server: Server, user: User) {
   const res = await login(server.url, server.client, user, 200)
 
   return res.body.access_token as string
@@ -42,7 +42,7 @@ function setAccessTokensToServers (servers: ServerInfo[]) {
   const tasks: Promise<any>[] = []
 
   for (const server of servers) {
-    const p = loginAndGetAccessToken(server).then(t => server.accessToken = t)
+    const p = serverLogin(server).then(t => server.accessToken = t)
     tasks.push(p)
   }
 
@@ -53,7 +53,7 @@ function setAccessTokensToServers (servers: ServerInfo[]) {
 
 export {
   login,
-  loginAndGetAccessToken,
-  getUserAccessToken,
+  serverLogin,
+  userLogin,
   setAccessTokensToServers
 }
index 6de1b8c92c9d1d00b59a1333f7a02837c5f475aa..f64ebd2b0eabc9c64ab7ca1c8357fae4507cb927 100644 (file)
@@ -21,25 +21,37 @@ type VideoAttributes = {
 function getVideoCategories (url: string) {
   const path = '/api/v1/videos/categories'
 
-  return makeGetRequest(url, path)
+  return makeGetRequest({
+    url,
+    path
+  })
 }
 
 function getVideoLicences (url: string) {
   const path = '/api/v1/videos/licences'
 
-  return makeGetRequest(url, path)
+  return makeGetRequest({
+    url,
+    path
+  })
 }
 
 function getVideoLanguages (url: string) {
   const path = '/api/v1/videos/languages'
 
-  return makeGetRequest(url, path)
+  return makeGetRequest({
+    url,
+    path
+  })
 }
 
 function getVideoPrivacies (url: string) {
   const path = '/api/v1/videos/privacies'
 
-  return makeGetRequest(url, path)
+  return makeGetRequest({
+    url,
+    path
+  })
 }
 
 function getVideo (url: string, id: number | string, expectedStatus = 200) {