]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Authenticate before make/quit friends (server + tests)
authorChocobozzz <florian.bigard@gmail.com>
Fri, 13 May 2016 14:31:14 +0000 (16:31 +0200)
committerChocobozzz <florian.bigard@gmail.com>
Fri, 13 May 2016 14:31:14 +0000 (16:31 +0200)
server/controllers/api/v1/pods.js
server/controllers/api/v1/remoteVideos.js
server/controllers/api/v1/users.js
server/controllers/api/v1/videos.js
server/middlewares/index.js
server/tests/api/friendsAdvanced.js
server/tests/api/friendsBasic.js
server/tests/api/multiplePods.js
server/tests/api/users.js
server/tests/api/utils.js

index fd13034a2b120d235e66042524e0fcec0c748b21..cec51f272be8e9d03d422b168ee55217fe8215e1 100644 (file)
@@ -4,11 +4,12 @@ const express = require('express')
 
 const logger = require('../../../helpers/logger')
 const friends = require('../../../lib/friends')
-const middleware = require('../../../middlewares')
+const middlewares = require('../../../middlewares')
 const Pods = require('../../../models/pods')
-const reqValidator = middleware.reqValidators.pods
-const secureMiddleware = middleware.secure
-const secureRequest = middleware.reqValidators.remote.secureRequest
+const oAuth2 = middlewares.oauth2
+const reqValidator = middlewares.reqValidators.pods
+const secureMiddleware = middlewares.secure
+const secureRequest = middlewares.reqValidators.remote.secureRequest
 const videos = require('../../../lib/videos')
 const Videos = require('../../../models/videos')
 
@@ -16,8 +17,8 @@ const router = express.Router()
 
 router.get('/', listPods)
 router.post('/', reqValidator.podsAdd, addPods)
-router.get('/makefriends', reqValidator.makeFriends, makeFriends)
-router.get('/quitfriends', quitFriends)
+router.get('/makefriends', oAuth2.authenticate, reqValidator.makeFriends, makeFriends)
+router.get('/quitfriends', oAuth2.authenticate, quitFriends)
 // Post because this is a secured request
 router.post('/remove', secureRequest, secureMiddleware.decryptBody, removePods)
 
index cc4bc41e2dea6b91a5e4ac10ada7bc2bd3566279..2f41c04115cdc8f1246584870a849001aaa8e9f6 100644 (file)
@@ -3,9 +3,9 @@
 const express = require('express')
 const map = require('lodash/map')
 
-const middleware = require('../../../middlewares')
-const secureMiddleware = middleware.secure
-const reqValidator = middleware.reqValidators.remote
+const middlewares = require('../../../middlewares')
+const secureMiddleware = middlewares.secure
+const reqValidator = middlewares.reqValidators.remote
 const logger = require('../../../helpers/logger')
 const Videos = require('../../../models/videos')
 const videos = require('../../../lib/videos')
index 54ff0d74360d786a959ead9eeec690f63b9503cf..7ce0b9c6a675bfbfe657ae3059fe7d75555c1809 100644 (file)
@@ -2,7 +2,7 @@
 
 const config = require('config')
 const express = require('express')
-const oAuth2 = require('../../../middlewares/oauth2')
+const oAuth2 = require('../../../middlewares').oauth2
 
 const Users = require('../../../models/users')
 
index 9891bf4c65e34b7fb31c7e5db6b9cb61c2ee322a..b6e3de08fbac6fc0a283eec0a4a6f5dd13496b57 100644 (file)
@@ -9,9 +9,9 @@ const multer = require('multer')
 const constants = require('../../../initializers/constants')
 const logger = require('../../../helpers/logger')
 const friends = require('../../../lib/friends')
-const middleware = require('../../../middlewares')
-const oAuth2 = require('../../../middlewares/oauth2')
-const reqValidator = middleware.reqValidators.videos
+const middlewares = require('../../../middlewares')
+const oAuth2 = middlewares.oauth2
+const reqValidator = middlewares.reqValidators.videos
 const utils = require('../../../helpers/utils')
 const Videos = require('../../../models/videos') // model
 const videos = require('../../../lib/videos')
index a0b07705d492d56f11089f974b9555bccaca0825..ffd19337cf1c499546adb1540f31694226ac568e 100644 (file)
@@ -1,9 +1,11 @@
 'use strict'
 
+const oauth2 = require('./oauth2')
 const reqValidatorsMiddleware = require('./reqValidators')
 const secureMiddleware = require('./secure')
 
 const middlewares = {
+  oauth2: oauth2,
   reqValidators: reqValidatorsMiddleware,
   secure: secureMiddleware
 }
index 9bd202a0582e464597e6b21de820b37129e616f1..f3d5cd4a07ca61b0b1668a403346875c5c803bef 100644 (file)
@@ -10,15 +10,18 @@ describe('Test advanced friends', function () {
   let servers = []
 
   function makeFriends (podNumber, callback) {
-    return utils.makeFriends(servers[podNumber - 1].url, callback)
+    const server = servers[podNumber - 1]
+    return utils.makeFriends(server.url, server.accessToken, callback)
   }
 
   function quitFriends (podNumber, callback) {
-    return utils.quitFriends(servers[podNumber - 1].url, callback)
+    const server = servers[podNumber - 1]
+    return utils.quitFriends(server.url, server.accessToken, callback)
   }
 
   function getFriendsList (podNumber, end) {
-    return utils.getFriendsList(servers[podNumber - 1].url, end)
+    const server = servers[podNumber - 1]
+    return utils.getFriendsList(server.url, end)
   }
 
   function uploadVideo (podNumber, callback) {
index c9e3bc9adad06a74cbe7be70af5a2a7e5271de46..68817e8524ad623b218a725fb6d688ebc748f575 100644 (file)
@@ -3,13 +3,17 @@
 const async = require('async')
 const chai = require('chai')
 const expect = chai.expect
-const request = require('supertest')
 
 const utils = require('./utils')
 
 describe('Test basic friends', function () {
   let servers = []
 
+  function makeFriends (podNumber, callback) {
+    const server = servers[podNumber - 1]
+    return utils.makeFriends(server.url, server.accessToken, callback)
+  }
+
   function testMadeFriends (servers, serverToTest, callback) {
     const friends = []
     for (let i = 0; i < servers.length; i++) {
@@ -39,7 +43,15 @@ describe('Test basic friends', function () {
     this.timeout(20000)
     utils.flushAndRunMultipleServers(3, function (serversRun, urlsRun) {
       servers = serversRun
-      done()
+
+      async.each(servers, function (server, callbackEach) {
+        utils.loginAndGetAccessToken(server, function (err, accessToken) {
+          if (err) return callbackEach(err)
+
+          server.accessToken = accessToken
+          callbackEach()
+        })
+      }, done)
     })
   })
 
@@ -59,16 +71,10 @@ describe('Test basic friends', function () {
   it('Should make friends', function (done) {
     this.timeout(10000)
 
-    const path = '/api/v1/pods/makefriends'
-
     async.series([
       // The second pod make friend with the third
       function (next) {
-        request(servers[1].url)
-          .get(path)
-          .set('Accept', 'application/json')
-          .expect(204)
-          .end(next)
+        makeFriends(2, next)
       },
       // Wait for the request between pods
       function (next) {
@@ -102,11 +108,7 @@ describe('Test basic friends', function () {
       },
       // Finally the first pod make friend with the second pod
       function (next) {
-        request(servers[0].url)
-          .get(path)
-          .set('Accept', 'application/json')
-          .expect(204)
-          .end(next)
+        makeFriends(1, next)
       },
       // Wait for the request between pods
       function (next) {
@@ -123,14 +125,16 @@ describe('Test basic friends', function () {
   })
 
   it('Should not be allowed to make friend again', function (done) {
-    utils.makeFriends(servers[1].url, 409, done)
+    const server = servers[1]
+    utils.makeFriends(server.url, server.accessToken, 409, done)
   })
 
   it('Should quit friends of pod 2', function (done) {
     async.series([
       // Pod 1 quit friends
       function (next) {
-        utils.quitFriends(servers[1].url, next)
+        const server = servers[1]
+        utils.quitFriends(server.url, server.accessToken, next)
       },
       // Pod 1 should not have friends anymore
       function (next) {
@@ -162,7 +166,8 @@ describe('Test basic friends', function () {
   })
 
   it('Should allow pod 2 to make friend again', function (done) {
-    utils.makeFriends(servers[1].url, function () {
+    const server = servers[1]
+    utils.makeFriends(server.url, server.accessToken, function () {
       async.each(servers, function (server, callback) {
         testMadeFriends(servers, server, callback)
       }, done)
index 1a61034fc4c7bd7bb86c06e927142ade415269fd..486457347a19d1f91744a067f8b0552394026d7c 100644 (file)
@@ -37,7 +37,8 @@ describe('Test multiple pods', function () {
       },
       // The second pod make friend with the third
       function (next) {
-        utils.makeFriends(servers[1].url, next)
+        const server = servers[1]
+        utils.makeFriends(server.url, server.accessToken, next)
       },
       // Wait for the request between pods
       function (next) {
@@ -45,7 +46,8 @@ describe('Test multiple pods', function () {
       },
       // Pod 1 make friends too
       function (next) {
-        utils.makeFriends(servers[0].url, next)
+        const server = servers[0]
+        utils.makeFriends(server.url, server.accessToken, next)
       },
       function (next) {
         webtorrent.create({ host: 'client', port: '1' }, next)
index 57417a69e5cdc2501b672af471a7f1ee154eff00..cb44d26118f5be5390743e83c6649d04520c24d1 100644 (file)
@@ -82,6 +82,16 @@ describe('Test users', function () {
     utils.uploadVideo(server.url, accessToken, 'my super name', 'my super description', 'video_short.webm', 401, done)
   })
 
+  it('Should not be able to make friends', function (done) {
+    accessToken = 'mysupertoken'
+    utils.makeFriends(server.url, accessToken, 401, done)
+  })
+
+  it('Should not be able to quit friends', function (done) {
+    accessToken = 'mysupertoken'
+    utils.quitFriends(server.url, accessToken, 401, done)
+  })
+
   it('Should be able to login', function (done) {
     utils.login(server.url, server.client, server.user, 200, function (err, res) {
       if (err) throw err
index 45f11ac8f36ce57fc51b464d8ba538b2f5099532..9c5e4ee61cf7b4ff5263e466f6c2c51381d86dcb 100644 (file)
@@ -97,7 +97,7 @@ function loginAndGetAccessToken (server, callback) {
   })
 }
 
-function makeFriends (url, expectedStatus, callback) {
+function makeFriends (url, accessToken, expectedStatus, callback) {
   if (!callback) {
     callback = expectedStatus
     expectedStatus = 204
@@ -109,6 +109,7 @@ function makeFriends (url, expectedStatus, callback) {
   request(url)
     .get(path)
     .set('Accept', 'application/json')
+    .set('Authorization', 'Bearer ' + accessToken)
     .expect(expectedStatus)
     .end(function (err, res) {
       if (err) throw err
@@ -118,14 +119,20 @@ function makeFriends (url, expectedStatus, callback) {
     })
 }
 
-function quitFriends (url, callback) {
+function quitFriends (url, accessToken, expectedStatus, callback) {
+  if (!callback) {
+    callback = expectedStatus
+    expectedStatus = 204
+  }
+
   const path = '/api/v1/pods/quitfriends'
 
   // The first pod make friend with the third
   request(url)
     .get(path)
     .set('Accept', 'application/json')
-    .expect(204)
+    .set('Authorization', 'Bearer ' + accessToken)
+    .expect(expectedStatus)
     .end(function (err, res) {
       if (err) throw err