]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - test/api/friendsBasic.js
Tests refractoring
[github/Chocobozzz/PeerTube.git] / test / api / friendsBasic.js
index 40ed341992ec75d267a682be5796a39803037d9d..dbc9183830987e5a3827abafcd0134848623ab8b 100644 (file)
@@ -1,31 +1,45 @@
 ;(function () {
   'use strict'
 
-  var request = require('supertest')
+  var async = require('async')
   var chai = require('chai')
   var expect = chai.expect
-  var async = require('async')
-
-  var utils = require('../utils')
-
-  function getFriendsList (url, end) {
-    var path = '/api/v1/pods/'
+  var request = require('supertest')
 
-    request(url)
-      .get(path)
-      .set('Accept', 'application/json')
-      .expect(200)
-      .expect('Content-Type', /json/)
-      .end(end)
-  }
+  var utils = require('./utils')
 
   describe('Test basic friends', function () {
     var apps = []
     var urls = []
 
+    function testMadeFriends (urls, url_to_test, callback) {
+      var friends = []
+      for (var i = 0; i < urls.length; i++) {
+        if (urls[i] === url_to_test) continue
+        friends.push(urls[i])
+      }
+
+      utils.getFriendsList(url_to_test, function (err, res) {
+        if (err) throw err
+
+        var result = res.body
+        var result_urls = [ result[0].url, result[1].url ]
+        expect(result).to.be.an('array')
+        expect(result.length).to.equal(2)
+        expect(result_urls[0]).to.not.equal(result_urls[1])
+
+        var error_string = 'Friends url do not correspond for ' + url_to_test
+        expect(friends).to.contain(result_urls[0], error_string)
+        expect(friends).to.contain(result_urls[1], error_string)
+        callback()
+      })
+    }
+
+    // ---------------------------------------------------------------
+
     before(function (done) {
       this.timeout(20000)
-      utils.runMultipleServers(3, function (apps_run, urls_run) {
+      utils.flushAndRunMultipleServers(3, function (apps_run, urls_run) {
         apps = apps_run
         urls = urls_run
         done()
@@ -34,7 +48,7 @@
 
     it('Should not have friends', function (done) {
       async.each(urls, function (url, callback) {
-        getFriendsList(url, function (err, res) {
+        utils.getFriendsList(url, function (err, res) {
           if (err) throw err
 
           var result = res.body
           expect(result.length).to.equal(0)
           callback()
         })
-      }, function (err) {
-        if (err) throw err
-
-        done()
-      })
+      }, done)
     })
 
     it('Should make friends', function (done) {
       this.timeout(10000)
 
-      function testMadeFriends (urls, url_to_test, callback) {
-        var friends = []
-        for (var i = 0; i < urls.length; i++) {
-          if (urls[i] === url_to_test) continue
-          friends.push(urls[i])
-        }
-
-        getFriendsList(url_to_test, function (err, res) {
-          if (err) throw err
-
-          var result = res.body
-          var result_urls = [ result[0].url, result[1].url ]
-          expect(result).to.be.an('array')
-          expect(result.length).to.equal(2)
-          expect(result_urls[0]).to.not.equal(result_urls[1])
-
-          var error_string = 'Friends url do not correspond for ' + url_to_test
-          expect(friends).to.contain(result_urls[0], error_string)
-          expect(friends).to.contain(result_urls[1], error_string)
-          callback()
-        })
-      }
-
       var path = '/api/v1/pods/makefriends'
 
-      // The second pod make friend with the third
-      request(urls[1])
-        .get(path)
-        .set('Accept', 'application/json')
-        .expect(204)
-        .end(function (err, res) {
-          if (err) throw err
+      async.series([
+        // The second pod make friend with the third
+        function (next) {
+          request(urls[1])
+            .get(path)
+            .set('Accept', 'application/json')
+            .expect(204)
+            .end(next)
+        },
+        // Wait for the request between pods
+        function (next) {
+          setTimeout(next, 1000)
+        },
+        // The second pod should have the third as a friend
+        function (next) {
+          utils.getFriendsList(urls[1], function (err, res) {
+            if (err) throw err
+
+            var result = res.body
+            expect(result).to.be.an('array')
+            expect(result.length).to.equal(1)
+            expect(result[0].url).to.be.equal(urls[2])
+
+            next()
+          })
+        },
+        // Same here, the third pod should have the second pod as a friend
+        function (next) {
+          utils.getFriendsList(urls[2], function (err, res) {
+            if (err) throw err
+
+            var result = res.body
+            expect(result).to.be.an('array')
+            expect(result.length).to.equal(1)
+            expect(result[0].url).to.be.equal(urls[1])
+
+            next()
+          })
+        },
+        // Finally the first pod make friend with the second pod
+        function (next) {
+          request(urls[0])
+            .get(path)
+            .set('Accept', 'application/json')
+            .expect(204)
+            .end(next)
+        },
+        // Wait for the request between pods
+        function (next) {
+          setTimeout(next, 1000)
+        }
+      ],
+      // Now each pod should be friend with the other ones
+      function (err) {
+        if (err) throw err
+        async.each(urls, function (url, callback) {
+          testMadeFriends(urls, url, callback)
+        }, done)
+      })
+    })
+
+    it('Should not be allowed to make friend again', function (done) {
+      utils.makeFriends(urls[1], 409, done)
+    })
 
-          // Wait for the request between pods
-          setTimeout(function () {
-            // The second pod should have the third as a friend
-            getFriendsList(urls[1], function (err, res) {
+    it('Should quit friends of pod 2', function (done) {
+      async.series([
+        // Pod 1 quit friends
+        function (next) {
+          utils.quitFriends(urls[1], next)
+        },
+        // Pod 1 should not have friends anymore
+        function (next) {
+          utils.getFriendsList(urls[1], function (err, res) {
+            if (err) throw err
+
+            var result = res.body
+            expect(result).to.be.an('array')
+            expect(result.length).to.equal(0)
+
+            next()
+          })
+        },
+        // Other pods shouldn't have pod 1 too
+        function (next) {
+          async.each([ urls[0], urls[2] ], function (url, callback) {
+            utils.getFriendsList(url, function (err, res) {
               if (err) throw err
 
               var result = res.body
               expect(result).to.be.an('array')
               expect(result.length).to.equal(1)
-              expect(result[0].url).to.be.equal(urls[2])
-
-              // Same here, the third pod should have the second pod as a friend
-              getFriendsList(urls[2], function (err, res) {
-                if (err) throw err
-
-                var result = res.body
-                expect(result).to.be.an('array')
-                expect(result.length).to.equal(1)
-                expect(result[0].url).to.be.equal(urls[1])
-
-                // Finally the first pod make friend with the second pod
-                request(urls[0])
-                  .get(path)
-                  .set('Accept', 'application/json')
-                  .expect(204)
-                  .end(function (err, res) {
-                    if (err) throw err
-
-                    setTimeout(function () {
-                      // Now each pod should be friend with the other ones
-                      async.each(urls, function (url, callback) {
-                        testMadeFriends(urls, url, callback)
-                      }, function (err) {
-                        if (err) throw err
-                        done()
-                      })
-                    }, 1000)
-                  })
-              })
+              expect(result[0].url).not.to.be.equal(urls[1])
+              callback()
             })
-          }, 1000)
-        })
+          }, next)
+        }
+      ], done)
     })
 
-    // TODO
-    it('Should not be able to make friends again')
+    it('Should allow pod 2 to make friend again', function (done) {
+      utils.makeFriends(urls[1], function () {
+        async.each(urls, function (url, callback) {
+          testMadeFriends(urls, url, callback)
+        }, done)
+      })
+    })
 
     after(function (done) {
       apps.forEach(function (app) {
       })
 
       if (this.ok) {
-        utils.flushTests(function () {
-          done()
-        })
+        utils.flushTests(done)
       } else {
         done()
       }