2017-03-03 11:45:40 -06:00
|
|
|
/* eslint-disable no-unused-expressions */
|
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
'use strict'
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2016-03-16 16:29:27 -05:00
|
|
|
const chai = require('chai')
|
2016-07-18 10:17:52 -05:00
|
|
|
const each = require('async/each')
|
2016-03-16 16:29:27 -05:00
|
|
|
const expect = chai.expect
|
2016-07-18 10:17:52 -05:00
|
|
|
const series = require('async/series')
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2016-08-07 15:09:59 -05:00
|
|
|
const loginUtils = require('../utils/login')
|
2016-08-26 11:55:10 -05:00
|
|
|
const miscsUtils = require('../utils/miscs')
|
2016-08-07 15:09:59 -05:00
|
|
|
const podsUtils = require('../utils/pods')
|
|
|
|
const serversUtils = require('../utils/servers')
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
describe('Test basic friends', function () {
|
2016-04-14 15:06:11 -05:00
|
|
|
let servers = []
|
2016-01-24 09:08:09 -06:00
|
|
|
|
2016-05-13 09:31:14 -05:00
|
|
|
function makeFriends (podNumber, callback) {
|
|
|
|
const server = servers[podNumber - 1]
|
2016-08-07 15:09:59 -05:00
|
|
|
return podsUtils.makeFriends(server.url, server.accessToken, callback)
|
2016-05-13 09:31:14 -05:00
|
|
|
}
|
|
|
|
|
2016-05-11 14:19:34 -05:00
|
|
|
function testMadeFriends (servers, serverToTest, callback) {
|
2016-03-16 16:29:27 -05:00
|
|
|
const friends = []
|
2016-04-14 15:06:11 -05:00
|
|
|
for (let i = 0; i < servers.length; i++) {
|
2016-05-11 14:19:34 -05:00
|
|
|
if (servers[i].url === serverToTest.url) continue
|
2016-11-14 13:45:00 -06:00
|
|
|
friends.push(servers[i].host)
|
2016-02-07 04:23:23 -06:00
|
|
|
}
|
|
|
|
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.getFriendsList(serverToTest.url, function (err, res) {
|
2016-02-07 04:23:23 -06:00
|
|
|
if (err) throw err
|
|
|
|
|
2017-01-04 13:59:23 -06:00
|
|
|
const result = res.body.data
|
2016-02-07 04:23:23 -06:00
|
|
|
expect(result).to.be.an('array')
|
|
|
|
expect(result.length).to.equal(2)
|
2016-06-18 09:13:54 -05:00
|
|
|
|
2016-11-14 13:45:00 -06:00
|
|
|
const resultHosts = [ result[0].host, result[1].host ]
|
|
|
|
expect(resultHosts[0]).to.not.equal(resultHosts[1])
|
2016-01-23 11:31:58 -06:00
|
|
|
|
2016-11-14 13:45:00 -06:00
|
|
|
const errorString = 'Friends host do not correspond for ' + serverToTest.host
|
|
|
|
expect(friends).to.contain(resultHosts[0], errorString)
|
|
|
|
expect(friends).to.contain(resultHosts[1], errorString)
|
2016-02-07 04:23:23 -06:00
|
|
|
callback()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------
|
|
|
|
|
|
|
|
before(function (done) {
|
2017-07-02 13:48:31 -05:00
|
|
|
this.timeout(120000)
|
2016-08-07 15:09:59 -05:00
|
|
|
serversUtils.flushAndRunMultipleServers(3, function (serversRun, urlsRun) {
|
2016-05-11 14:19:34 -05:00
|
|
|
servers = serversRun
|
2016-05-13 09:31:14 -05:00
|
|
|
|
2016-07-18 10:17:52 -05:00
|
|
|
each(servers, function (server, callbackEach) {
|
2016-08-07 15:09:59 -05:00
|
|
|
loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
|
2016-05-13 09:31:14 -05:00
|
|
|
if (err) return callbackEach(err)
|
|
|
|
|
|
|
|
server.accessToken = accessToken
|
|
|
|
callbackEach()
|
|
|
|
})
|
|
|
|
}, done)
|
2016-02-07 04:23:23 -06:00
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
it('Should not have friends', function (done) {
|
2016-07-18 10:17:52 -05:00
|
|
|
each(servers, function (server, callback) {
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.getFriendsList(server.url, function (err, res) {
|
2016-01-23 11:31:58 -06:00
|
|
|
if (err) throw err
|
|
|
|
|
2017-01-04 13:59:23 -06:00
|
|
|
const result = res.body.data
|
2016-01-23 11:31:58 -06:00
|
|
|
expect(result).to.be.an('array')
|
2016-02-07 04:23:23 -06:00
|
|
|
expect(result.length).to.equal(0)
|
2016-01-23 11:31:58 -06:00
|
|
|
callback()
|
|
|
|
})
|
2016-02-07 04:23:23 -06:00
|
|
|
}, done)
|
|
|
|
})
|
2016-01-23 11:31:58 -06:00
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
it('Should make friends', function (done) {
|
2017-07-02 13:48:31 -05:00
|
|
|
this.timeout(120000)
|
2016-02-07 04:23:23 -06:00
|
|
|
|
2016-07-18 10:17:52 -05:00
|
|
|
series([
|
2016-02-07 04:23:23 -06:00
|
|
|
// The second pod make friend with the third
|
|
|
|
function (next) {
|
2016-05-13 09:31:14 -05:00
|
|
|
makeFriends(2, next)
|
2016-02-07 04:23:23 -06:00
|
|
|
},
|
|
|
|
// Wait for the request between pods
|
|
|
|
function (next) {
|
2016-09-21 16:05:31 -05:00
|
|
|
setTimeout(next, 11000)
|
2016-02-07 04:23:23 -06:00
|
|
|
},
|
|
|
|
// The second pod should have the third as a friend
|
|
|
|
function (next) {
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.getFriendsList(servers[1].url, function (err, res) {
|
2016-02-07 04:23:23 -06:00
|
|
|
if (err) throw err
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2017-01-04 13:59:23 -06:00
|
|
|
const result = res.body.data
|
2016-02-07 04:23:23 -06:00
|
|
|
expect(result).to.be.an('array')
|
|
|
|
expect(result.length).to.equal(1)
|
2016-08-26 11:55:10 -05:00
|
|
|
|
|
|
|
const pod = result[0]
|
2016-11-14 13:45:00 -06:00
|
|
|
expect(pod.host).to.equal(servers[2].host)
|
2017-02-16 12:19:56 -06:00
|
|
|
expect(pod.email).to.equal('admin3@example.com')
|
2016-08-26 11:55:10 -05:00
|
|
|
expect(pod.score).to.equal(20)
|
2016-12-11 14:50:51 -06:00
|
|
|
expect(miscsUtils.dateIsValid(pod.createdAt)).to.be.true
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
next()
|
|
|
|
})
|
|
|
|
},
|
|
|
|
// Same here, the third pod should have the second pod as a friend
|
|
|
|
function (next) {
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.getFriendsList(servers[2].url, function (err, res) {
|
2015-06-09 10:41:40 -05:00
|
|
|
if (err) throw err
|
|
|
|
|
2017-01-04 13:59:23 -06:00
|
|
|
const result = res.body.data
|
2015-06-09 10:41:40 -05:00
|
|
|
expect(result).to.be.an('array')
|
2016-02-07 04:23:23 -06:00
|
|
|
expect(result.length).to.equal(1)
|
2016-08-26 11:55:10 -05:00
|
|
|
|
|
|
|
const pod = result[0]
|
2016-11-14 13:45:00 -06:00
|
|
|
expect(pod.host).to.equal(servers[1].host)
|
2017-02-16 12:19:56 -06:00
|
|
|
expect(pod.email).to.equal('admin2@example.com')
|
2016-08-26 11:55:10 -05:00
|
|
|
expect(pod.score).to.equal(20)
|
2016-12-11 14:50:51 -06:00
|
|
|
expect(miscsUtils.dateIsValid(pod.createdAt)).to.be.true
|
2016-02-07 04:23:23 -06:00
|
|
|
|
|
|
|
next()
|
2015-06-09 10:41:40 -05:00
|
|
|
})
|
2016-02-07 04:23:23 -06:00
|
|
|
},
|
|
|
|
// Finally the first pod make friend with the second pod
|
|
|
|
function (next) {
|
2016-05-13 09:31:14 -05:00
|
|
|
makeFriends(1, next)
|
2016-02-07 04:23:23 -06:00
|
|
|
},
|
|
|
|
// Wait for the request between pods
|
|
|
|
function (next) {
|
2016-09-21 15:52:25 -05:00
|
|
|
setTimeout(next, 11000)
|
2016-02-07 04:23:23 -06:00
|
|
|
}
|
|
|
|
],
|
|
|
|
// Now each pod should be friend with the other ones
|
|
|
|
function (err) {
|
|
|
|
if (err) throw err
|
2016-07-18 10:17:52 -05:00
|
|
|
each(servers, function (server, callback) {
|
2016-04-14 15:06:11 -05:00
|
|
|
testMadeFriends(servers, server, callback)
|
2016-01-24 09:08:09 -06:00
|
|
|
}, done)
|
2015-06-09 10:41:40 -05:00
|
|
|
})
|
2016-02-07 04:23:23 -06:00
|
|
|
})
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
it('Should not be allowed to make friend again', function (done) {
|
2017-07-02 13:48:31 -05:00
|
|
|
this.timeout(10000)
|
2016-05-13 09:31:14 -05:00
|
|
|
const server = servers[1]
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.makeFriends(server.url, server.accessToken, 409, done)
|
2016-02-07 04:23:23 -06:00
|
|
|
})
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
it('Should quit friends of pod 2', function (done) {
|
2017-07-02 13:48:31 -05:00
|
|
|
this.timeout(10000)
|
|
|
|
|
2016-07-18 10:17:52 -05:00
|
|
|
series([
|
2016-02-07 04:23:23 -06:00
|
|
|
// Pod 1 quit friends
|
|
|
|
function (next) {
|
2016-05-13 09:31:14 -05:00
|
|
|
const server = servers[1]
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.quitFriends(server.url, server.accessToken, next)
|
2016-02-07 04:23:23 -06:00
|
|
|
},
|
|
|
|
// Pod 1 should not have friends anymore
|
|
|
|
function (next) {
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.getFriendsList(servers[1].url, function (err, res) {
|
2016-02-07 04:23:23 -06:00
|
|
|
if (err) throw err
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2017-01-04 13:59:23 -06:00
|
|
|
const result = res.body.data
|
2016-02-07 04:23:23 -06:00
|
|
|
expect(result).to.be.an('array')
|
|
|
|
expect(result.length).to.equal(0)
|
|
|
|
|
|
|
|
next()
|
|
|
|
})
|
|
|
|
},
|
|
|
|
// Other pods shouldn't have pod 1 too
|
|
|
|
function (next) {
|
2016-07-18 10:17:52 -05:00
|
|
|
each([ servers[0].url, servers[2].url ], function (url, callback) {
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.getFriendsList(url, function (err, res) {
|
2016-01-24 09:08:09 -06:00
|
|
|
if (err) throw err
|
|
|
|
|
2017-01-04 13:59:23 -06:00
|
|
|
const result = res.body.data
|
2016-01-24 09:08:09 -06:00
|
|
|
expect(result).to.be.an('array')
|
|
|
|
expect(result.length).to.equal(1)
|
2016-11-14 13:45:00 -06:00
|
|
|
expect(result[0].host).not.to.be.equal(servers[1].host)
|
2016-02-07 04:23:23 -06:00
|
|
|
callback()
|
2016-01-24 09:08:09 -06:00
|
|
|
})
|
2016-02-07 04:23:23 -06:00
|
|
|
}, next)
|
|
|
|
}
|
|
|
|
], done)
|
|
|
|
})
|
2016-01-23 11:31:58 -06:00
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
it('Should allow pod 2 to make friend again', function (done) {
|
2017-07-02 13:48:31 -05:00
|
|
|
this.timeout(120000)
|
2016-09-21 16:05:31 -05:00
|
|
|
|
2016-05-13 09:31:14 -05:00
|
|
|
const server = servers[1]
|
2016-08-07 15:09:59 -05:00
|
|
|
podsUtils.makeFriends(server.url, server.accessToken, function () {
|
2016-09-21 15:52:25 -05:00
|
|
|
setTimeout(function () {
|
|
|
|
each(servers, function (server, callback) {
|
|
|
|
testMadeFriends(servers, server, callback)
|
|
|
|
}, done)
|
|
|
|
}, 11000)
|
2016-01-23 11:31:58 -06:00
|
|
|
})
|
2016-02-07 04:23:23 -06:00
|
|
|
})
|
2016-01-23 11:31:58 -06:00
|
|
|
|
2017-08-02 14:50:42 -05:00
|
|
|
it('Should allow pod 1 to quit only pod 2', function (done) {
|
|
|
|
series([
|
|
|
|
// Pod 1 quits pod 2
|
|
|
|
function (next) {
|
|
|
|
const server = servers[0]
|
|
|
|
|
|
|
|
// Get pod 2 id so we can query it
|
|
|
|
podsUtils.getFriendsList(server.url, function (err, res) {
|
|
|
|
if (err) throw err
|
|
|
|
|
|
|
|
const result = res.body.data
|
|
|
|
let pod = result.find((friend) => (friend.host === servers[1].host))
|
|
|
|
|
|
|
|
// Remove it from the friends list
|
|
|
|
podsUtils.quitOneFriend(server.url, server.accessToken, pod.id, next)
|
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
// Pod 1 should have only pod 3 in its friends list
|
|
|
|
function (next) {
|
|
|
|
podsUtils.getFriendsList(servers[0].url, function (err, res) {
|
|
|
|
if (err) throw err
|
|
|
|
|
|
|
|
const result = res.body.data
|
|
|
|
expect(result).to.be.an('array')
|
|
|
|
expect(result.length).to.equal(1)
|
|
|
|
|
|
|
|
const pod = result[0]
|
|
|
|
expect(pod.host).to.equal(servers[2].host)
|
|
|
|
|
|
|
|
next()
|
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
// Pod 2 should have only pod 3 in its friends list
|
|
|
|
function (next) {
|
|
|
|
podsUtils.getFriendsList(servers[1].url, function (err, res) {
|
|
|
|
if (err) throw err
|
|
|
|
|
|
|
|
const result = res.body.data
|
|
|
|
expect(result).to.be.an('array')
|
|
|
|
expect(result.length).to.equal(1)
|
|
|
|
|
|
|
|
const pod = result[0]
|
|
|
|
expect(pod.host).to.equal(servers[2].host)
|
|
|
|
|
|
|
|
next()
|
|
|
|
})
|
|
|
|
},
|
|
|
|
|
|
|
|
// Pod 3 should have both pods in its friends list
|
|
|
|
function (next) {
|
|
|
|
podsUtils.getFriendsList(servers[2].url, function (err, res) {
|
|
|
|
if (err) throw err
|
|
|
|
|
|
|
|
const result = res.body.data
|
|
|
|
expect(result).to.be.an('array')
|
|
|
|
expect(result.length).to.equal(2)
|
|
|
|
|
|
|
|
next()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
], done)
|
|
|
|
})
|
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
after(function (done) {
|
2016-04-14 15:06:11 -05:00
|
|
|
servers.forEach(function (server) {
|
|
|
|
process.kill(-server.app.pid)
|
2016-01-23 11:31:58 -06:00
|
|
|
})
|
2015-06-09 10:41:40 -05:00
|
|
|
|
2016-02-07 04:23:23 -06:00
|
|
|
if (this.ok) {
|
2016-08-07 15:09:59 -05:00
|
|
|
serversUtils.flushTests(done)
|
2016-02-07 04:23:23 -06:00
|
|
|
} else {
|
|
|
|
done()
|
|
|
|
}
|
2015-06-09 10:41:40 -05:00
|
|
|
})
|
2016-02-07 04:23:23 -06:00
|
|
|
})
|