Server: split tests utils in multiple files
This commit is contained in:
parent
58b2ba55a9
commit
8d30905858
|
@ -6,7 +6,9 @@ const pathUtils = require('path')
|
||||||
const request = require('supertest')
|
const request = require('supertest')
|
||||||
const series = require('async/series')
|
const series = require('async/series')
|
||||||
|
|
||||||
const utils = require('./utils')
|
const loginUtils = require('../utils/login')
|
||||||
|
const serversUtils = require('../utils/servers')
|
||||||
|
const usersUtils = require('../utils/users')
|
||||||
|
|
||||||
describe('Test parameters validator', function () {
|
describe('Test parameters validator', function () {
|
||||||
let server = null
|
let server = null
|
||||||
|
@ -71,17 +73,17 @@ describe('Test parameters validator', function () {
|
||||||
|
|
||||||
series([
|
series([
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.flushTests(next)
|
serversUtils.flushTests(next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.runServer(1, function (server1) {
|
serversUtils.runServer(1, function (server1) {
|
||||||
server = server1
|
server = server1
|
||||||
|
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.loginAndGetAccessToken(server, function (err, token) {
|
loginUtils.loginAndGetAccessToken(server, function (err, token) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
server.accessToken = token
|
server.accessToken = token
|
||||||
|
|
||||||
|
@ -141,13 +143,13 @@ describe('Test parameters validator', function () {
|
||||||
let userAccessToken = null
|
let userAccessToken = null
|
||||||
|
|
||||||
before(function (done) {
|
before(function (done) {
|
||||||
utils.createUser(server.url, server.accessToken, 'user1', 'password', function () {
|
usersUtils.createUser(server.url, server.accessToken, 'user1', 'password', function () {
|
||||||
server.user = {
|
server.user = {
|
||||||
username: 'user1',
|
username: 'user1',
|
||||||
password: 'password'
|
password: 'password'
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.loginAndGetAccessToken(server, function (err, accessToken) {
|
loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
userAccessToken = accessToken
|
userAccessToken = accessToken
|
||||||
|
@ -581,7 +583,7 @@ describe('Test parameters validator', function () {
|
||||||
password: 'my super password'
|
password: 'my super password'
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.loginAndGetAccessToken(server, function (err, accessToken) {
|
loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
userAccessToken = accessToken
|
userAccessToken = accessToken
|
||||||
|
@ -598,7 +600,7 @@ describe('Test parameters validator', function () {
|
||||||
|
|
||||||
describe('When updating a user', function () {
|
describe('When updating a user', function () {
|
||||||
before(function (done) {
|
before(function (done) {
|
||||||
utils.getUsersList(server.url, function (err, res) {
|
usersUtils.getUsersList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
userId = res.body.data[1].id
|
userId = res.body.data[1].id
|
||||||
|
@ -702,7 +704,7 @@ describe('Test parameters validator', function () {
|
||||||
|
|
||||||
// Keep the logs if the test failed
|
// Keep the logs if the test failed
|
||||||
if (this.ok) {
|
if (this.ok) {
|
||||||
utils.flushTests(done)
|
serversUtils.flushTests(done)
|
||||||
} else {
|
} else {
|
||||||
done()
|
done()
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,24 +5,27 @@ const each = require('async/each')
|
||||||
const expect = chai.expect
|
const expect = chai.expect
|
||||||
const series = require('async/series')
|
const series = require('async/series')
|
||||||
|
|
||||||
const utils = require('./utils')
|
const loginUtils = require('../utils/login')
|
||||||
|
const podsUtils = require('../utils/pods')
|
||||||
|
const serversUtils = require('../utils/servers')
|
||||||
|
const videosUtils = require('../utils/videos')
|
||||||
|
|
||||||
describe('Test advanced friends', function () {
|
describe('Test advanced friends', function () {
|
||||||
let servers = []
|
let servers = []
|
||||||
|
|
||||||
function makeFriends (podNumber, callback) {
|
function makeFriends (podNumber, callback) {
|
||||||
const server = servers[podNumber - 1]
|
const server = servers[podNumber - 1]
|
||||||
return utils.makeFriends(server.url, server.accessToken, callback)
|
return podsUtils.makeFriends(server.url, server.accessToken, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
function quitFriends (podNumber, callback) {
|
function quitFriends (podNumber, callback) {
|
||||||
const server = servers[podNumber - 1]
|
const server = servers[podNumber - 1]
|
||||||
return utils.quitFriends(server.url, server.accessToken, callback)
|
return podsUtils.quitFriends(server.url, server.accessToken, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFriendsList (podNumber, end) {
|
function getFriendsList (podNumber, end) {
|
||||||
const server = servers[podNumber - 1]
|
const server = servers[podNumber - 1]
|
||||||
return utils.getFriendsList(server.url, end)
|
return podsUtils.getFriendsList(server.url, end)
|
||||||
}
|
}
|
||||||
|
|
||||||
function uploadVideo (podNumber, callback) {
|
function uploadVideo (podNumber, callback) {
|
||||||
|
@ -32,22 +35,22 @@ describe('Test advanced friends', function () {
|
||||||
const fixture = 'video_short.webm'
|
const fixture = 'video_short.webm'
|
||||||
const server = servers[podNumber - 1]
|
const server = servers[podNumber - 1]
|
||||||
|
|
||||||
return utils.uploadVideo(server.url, server.accessToken, name, description, tags, fixture, callback)
|
return videosUtils.uploadVideo(server.url, server.accessToken, name, description, tags, fixture, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVideos (podNumber, callback) {
|
function getVideos (podNumber, callback) {
|
||||||
return utils.getVideosList(servers[podNumber - 1].url, callback)
|
return videosUtils.getVideosList(servers[podNumber - 1].url, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
|
||||||
before(function (done) {
|
before(function (done) {
|
||||||
this.timeout(30000)
|
this.timeout(30000)
|
||||||
utils.flushAndRunMultipleServers(6, function (serversRun, urlsRun) {
|
serversUtils.flushAndRunMultipleServers(6, function (serversRun, urlsRun) {
|
||||||
servers = serversRun
|
servers = serversRun
|
||||||
|
|
||||||
each(servers, function (server, callbackEach) {
|
each(servers, function (server, callbackEach) {
|
||||||
utils.loginAndGetAccessToken(server, function (err, accessToken) {
|
loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
|
||||||
if (err) return callbackEach(err)
|
if (err) return callbackEach(err)
|
||||||
|
|
||||||
server.accessToken = accessToken
|
server.accessToken = accessToken
|
||||||
|
@ -169,7 +172,7 @@ describe('Test advanced friends', function () {
|
||||||
},
|
},
|
||||||
// Rerun server 4
|
// Rerun server 4
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.runServer(4, function (server) {
|
serversUtils.runServer(4, function (server) {
|
||||||
servers[3].app = server.app
|
servers[3].app = server.app
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
|
@ -273,7 +276,7 @@ describe('Test advanced friends', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
if (this.ok) {
|
if (this.ok) {
|
||||||
utils.flushTests(done)
|
serversUtils.flushTests(done)
|
||||||
} else {
|
} else {
|
||||||
done()
|
done()
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,14 +5,16 @@ const each = require('async/each')
|
||||||
const expect = chai.expect
|
const expect = chai.expect
|
||||||
const series = require('async/series')
|
const series = require('async/series')
|
||||||
|
|
||||||
const utils = require('./utils')
|
const loginUtils = require('../utils/login')
|
||||||
|
const podsUtils = require('../utils/pods')
|
||||||
|
const serversUtils = require('../utils/servers')
|
||||||
|
|
||||||
describe('Test basic friends', function () {
|
describe('Test basic friends', function () {
|
||||||
let servers = []
|
let servers = []
|
||||||
|
|
||||||
function makeFriends (podNumber, callback) {
|
function makeFriends (podNumber, callback) {
|
||||||
const server = servers[podNumber - 1]
|
const server = servers[podNumber - 1]
|
||||||
return utils.makeFriends(server.url, server.accessToken, callback)
|
return podsUtils.makeFriends(server.url, server.accessToken, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
function testMadeFriends (servers, serverToTest, callback) {
|
function testMadeFriends (servers, serverToTest, callback) {
|
||||||
|
@ -22,7 +24,7 @@ describe('Test basic friends', function () {
|
||||||
friends.push(servers[i].url)
|
friends.push(servers[i].url)
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.getFriendsList(serverToTest.url, function (err, res) {
|
podsUtils.getFriendsList(serverToTest.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const result = res.body
|
const result = res.body
|
||||||
|
@ -43,11 +45,11 @@ describe('Test basic friends', function () {
|
||||||
|
|
||||||
before(function (done) {
|
before(function (done) {
|
||||||
this.timeout(20000)
|
this.timeout(20000)
|
||||||
utils.flushAndRunMultipleServers(3, function (serversRun, urlsRun) {
|
serversUtils.flushAndRunMultipleServers(3, function (serversRun, urlsRun) {
|
||||||
servers = serversRun
|
servers = serversRun
|
||||||
|
|
||||||
each(servers, function (server, callbackEach) {
|
each(servers, function (server, callbackEach) {
|
||||||
utils.loginAndGetAccessToken(server, function (err, accessToken) {
|
loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
|
||||||
if (err) return callbackEach(err)
|
if (err) return callbackEach(err)
|
||||||
|
|
||||||
server.accessToken = accessToken
|
server.accessToken = accessToken
|
||||||
|
@ -59,7 +61,7 @@ describe('Test basic friends', function () {
|
||||||
|
|
||||||
it('Should not have friends', function (done) {
|
it('Should not have friends', function (done) {
|
||||||
each(servers, function (server, callback) {
|
each(servers, function (server, callback) {
|
||||||
utils.getFriendsList(server.url, function (err, res) {
|
podsUtils.getFriendsList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const result = res.body
|
const result = res.body
|
||||||
|
@ -84,7 +86,7 @@ describe('Test basic friends', function () {
|
||||||
},
|
},
|
||||||
// The second pod should have the third as a friend
|
// The second pod should have the third as a friend
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.getFriendsList(servers[1].url, function (err, res) {
|
podsUtils.getFriendsList(servers[1].url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const result = res.body
|
const result = res.body
|
||||||
|
@ -97,7 +99,7 @@ describe('Test basic friends', function () {
|
||||||
},
|
},
|
||||||
// Same here, the third pod should have the second pod as a friend
|
// Same here, the third pod should have the second pod as a friend
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.getFriendsList(servers[2].url, function (err, res) {
|
podsUtils.getFriendsList(servers[2].url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const result = res.body
|
const result = res.body
|
||||||
|
@ -128,7 +130,7 @@ describe('Test basic friends', function () {
|
||||||
|
|
||||||
it('Should not be allowed to make friend again', function (done) {
|
it('Should not be allowed to make friend again', function (done) {
|
||||||
const server = servers[1]
|
const server = servers[1]
|
||||||
utils.makeFriends(server.url, server.accessToken, 409, done)
|
podsUtils.makeFriends(server.url, server.accessToken, 409, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should quit friends of pod 2', function (done) {
|
it('Should quit friends of pod 2', function (done) {
|
||||||
|
@ -136,11 +138,11 @@ describe('Test basic friends', function () {
|
||||||
// Pod 1 quit friends
|
// Pod 1 quit friends
|
||||||
function (next) {
|
function (next) {
|
||||||
const server = servers[1]
|
const server = servers[1]
|
||||||
utils.quitFriends(server.url, server.accessToken, next)
|
podsUtils.quitFriends(server.url, server.accessToken, next)
|
||||||
},
|
},
|
||||||
// Pod 1 should not have friends anymore
|
// Pod 1 should not have friends anymore
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.getFriendsList(servers[1].url, function (err, res) {
|
podsUtils.getFriendsList(servers[1].url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const result = res.body
|
const result = res.body
|
||||||
|
@ -153,7 +155,7 @@ describe('Test basic friends', function () {
|
||||||
// Other pods shouldn't have pod 1 too
|
// Other pods shouldn't have pod 1 too
|
||||||
function (next) {
|
function (next) {
|
||||||
each([ servers[0].url, servers[2].url ], function (url, callback) {
|
each([ servers[0].url, servers[2].url ], function (url, callback) {
|
||||||
utils.getFriendsList(url, function (err, res) {
|
podsUtils.getFriendsList(url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const result = res.body
|
const result = res.body
|
||||||
|
@ -169,7 +171,7 @@ describe('Test basic friends', function () {
|
||||||
|
|
||||||
it('Should allow pod 2 to make friend again', function (done) {
|
it('Should allow pod 2 to make friend again', function (done) {
|
||||||
const server = servers[1]
|
const server = servers[1]
|
||||||
utils.makeFriends(server.url, server.accessToken, function () {
|
podsUtils.makeFriends(server.url, server.accessToken, function () {
|
||||||
each(servers, function (server, callback) {
|
each(servers, function (server, callback) {
|
||||||
testMadeFriends(servers, server, callback)
|
testMadeFriends(servers, server, callback)
|
||||||
}, done)
|
}, done)
|
||||||
|
@ -182,7 +184,7 @@ describe('Test basic friends', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
if (this.ok) {
|
if (this.ok) {
|
||||||
utils.flushTests(done)
|
serversUtils.flushTests(done)
|
||||||
} else {
|
} else {
|
||||||
done()
|
done()
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,11 @@ const expect = chai.expect
|
||||||
const pathUtils = require('path')
|
const pathUtils = require('path')
|
||||||
const series = require('async/series')
|
const series = require('async/series')
|
||||||
|
|
||||||
const utils = require('./utils')
|
const loginUtils = require('../utils/login')
|
||||||
|
const miscsUtils = require('../utils/miscs')
|
||||||
|
const podsUtils = require('../utils/pods')
|
||||||
|
const serversUtils = require('../utils/servers')
|
||||||
|
const videosUtils = require('../utils/videos')
|
||||||
const webtorrent = require(pathUtils.join(__dirname, '../../lib/webtorrent'))
|
const webtorrent = require(pathUtils.join(__dirname, '../../lib/webtorrent'))
|
||||||
webtorrent.silent = true
|
webtorrent.silent = true
|
||||||
|
|
||||||
|
@ -20,7 +24,7 @@ describe('Test multiple pods', function () {
|
||||||
series([
|
series([
|
||||||
// Run servers
|
// Run servers
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.flushAndRunMultipleServers(3, function (serversRun) {
|
serversUtils.flushAndRunMultipleServers(3, function (serversRun) {
|
||||||
servers = serversRun
|
servers = serversRun
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
|
@ -28,7 +32,7 @@ describe('Test multiple pods', function () {
|
||||||
// Get the access tokens
|
// Get the access tokens
|
||||||
function (next) {
|
function (next) {
|
||||||
each(servers, function (server, callbackEach) {
|
each(servers, function (server, callbackEach) {
|
||||||
utils.loginAndGetAccessToken(server, function (err, accessToken) {
|
loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
|
||||||
if (err) return callbackEach(err)
|
if (err) return callbackEach(err)
|
||||||
|
|
||||||
server.accessToken = accessToken
|
server.accessToken = accessToken
|
||||||
|
@ -39,7 +43,7 @@ describe('Test multiple pods', function () {
|
||||||
// The second pod make friend with the third
|
// The second pod make friend with the third
|
||||||
function (next) {
|
function (next) {
|
||||||
const server = servers[1]
|
const server = servers[1]
|
||||||
utils.makeFriends(server.url, server.accessToken, next)
|
podsUtils.makeFriends(server.url, server.accessToken, next)
|
||||||
},
|
},
|
||||||
// Wait for the request between pods
|
// Wait for the request between pods
|
||||||
function (next) {
|
function (next) {
|
||||||
|
@ -48,7 +52,7 @@ describe('Test multiple pods', function () {
|
||||||
// Pod 1 make friends too
|
// Pod 1 make friends too
|
||||||
function (next) {
|
function (next) {
|
||||||
const server = servers[0]
|
const server = servers[0]
|
||||||
utils.makeFriends(server.url, server.accessToken, next)
|
podsUtils.makeFriends(server.url, server.accessToken, next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
webtorrent.create({ host: 'client', port: '1' }, next)
|
webtorrent.create({ host: 'client', port: '1' }, next)
|
||||||
|
@ -58,7 +62,7 @@ describe('Test multiple pods', function () {
|
||||||
|
|
||||||
it('Should not have videos for all pods', function (done) {
|
it('Should not have videos for all pods', function (done) {
|
||||||
each(servers, function (server, callback) {
|
each(servers, function (server, callback) {
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -80,7 +84,7 @@ describe('Test multiple pods', function () {
|
||||||
const description = 'my super description for pod 1'
|
const description = 'my super description for pod 1'
|
||||||
const tags = [ 'tag1p1', 'tag2p1' ]
|
const tags = [ 'tag1p1', 'tag2p1' ]
|
||||||
const file = 'video_short1.webm'
|
const file = 'video_short1.webm'
|
||||||
utils.uploadVideo(servers[0].url, servers[0].accessToken, name, description, tags, file, next)
|
videosUtils.uploadVideo(servers[0].url, servers[0].accessToken, name, description, tags, file, next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
setTimeout(next, 11000)
|
setTimeout(next, 11000)
|
||||||
|
@ -92,7 +96,7 @@ describe('Test multiple pods', function () {
|
||||||
each(servers, function (server, callback) {
|
each(servers, function (server, callback) {
|
||||||
let baseMagnet = null
|
let baseMagnet = null
|
||||||
|
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -105,7 +109,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video.magnetUri).to.exist
|
expect(video.magnetUri).to.exist
|
||||||
expect(video.duration).to.equal(10)
|
expect(video.duration).to.equal(10)
|
||||||
expect(video.tags).to.deep.equal([ 'tag1p1', 'tag2p1' ])
|
expect(video.tags).to.deep.equal([ 'tag1p1', 'tag2p1' ])
|
||||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
|
|
||||||
if (server.url !== 'http://localhost:9001') {
|
if (server.url !== 'http://localhost:9001') {
|
||||||
|
@ -121,7 +125,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video.magnetUri).to.equal.magnetUri
|
expect(video.magnetUri).to.equal.magnetUri
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short1.webm', video.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short1.webm', video.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
|
@ -142,7 +146,7 @@ describe('Test multiple pods', function () {
|
||||||
const description = 'my super description for pod 2'
|
const description = 'my super description for pod 2'
|
||||||
const tags = [ 'tag1p2', 'tag2p2', 'tag3p2' ]
|
const tags = [ 'tag1p2', 'tag2p2', 'tag3p2' ]
|
||||||
const file = 'video_short2.webm'
|
const file = 'video_short2.webm'
|
||||||
utils.uploadVideo(servers[1].url, servers[1].accessToken, name, description, tags, file, next)
|
videosUtils.uploadVideo(servers[1].url, servers[1].accessToken, name, description, tags, file, next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
setTimeout(next, 11000)
|
setTimeout(next, 11000)
|
||||||
|
@ -154,7 +158,7 @@ describe('Test multiple pods', function () {
|
||||||
each(servers, function (server, callback) {
|
each(servers, function (server, callback) {
|
||||||
let baseMagnet = null
|
let baseMagnet = null
|
||||||
|
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -167,7 +171,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video.magnetUri).to.exist
|
expect(video.magnetUri).to.exist
|
||||||
expect(video.duration).to.equal(5)
|
expect(video.duration).to.equal(5)
|
||||||
expect(video.tags).to.deep.equal([ 'tag1p2', 'tag2p2', 'tag3p2' ])
|
expect(video.tags).to.deep.equal([ 'tag1p2', 'tag2p2', 'tag3p2' ])
|
||||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
|
|
||||||
if (server.url !== 'http://localhost:9002') {
|
if (server.url !== 'http://localhost:9002') {
|
||||||
|
@ -183,7 +187,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video.magnetUri).to.equal.magnetUri
|
expect(video.magnetUri).to.equal.magnetUri
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short2.webm', video.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short2.webm', video.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
|
@ -204,14 +208,14 @@ describe('Test multiple pods', function () {
|
||||||
const description = 'my super description for pod 3'
|
const description = 'my super description for pod 3'
|
||||||
const tags = [ 'tag1p3' ]
|
const tags = [ 'tag1p3' ]
|
||||||
const file = 'video_short3.webm'
|
const file = 'video_short3.webm'
|
||||||
utils.uploadVideo(servers[2].url, servers[2].accessToken, name, description, tags, file, next)
|
videosUtils.uploadVideo(servers[2].url, servers[2].accessToken, name, description, tags, file, next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
const name = 'my super name for pod 3-2'
|
const name = 'my super name for pod 3-2'
|
||||||
const description = 'my super description for pod 3-2'
|
const description = 'my super description for pod 3-2'
|
||||||
const tags = [ 'tag2p3', 'tag3p3', 'tag4p3' ]
|
const tags = [ 'tag2p3', 'tag3p3', 'tag4p3' ]
|
||||||
const file = 'video_short.webm'
|
const file = 'video_short.webm'
|
||||||
utils.uploadVideo(servers[2].url, servers[2].accessToken, name, description, tags, file, next)
|
videosUtils.uploadVideo(servers[2].url, servers[2].accessToken, name, description, tags, file, next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
setTimeout(next, 22000)
|
setTimeout(next, 22000)
|
||||||
|
@ -222,7 +226,7 @@ describe('Test multiple pods', function () {
|
||||||
let baseMagnet = null
|
let baseMagnet = null
|
||||||
// All pods should have this video
|
// All pods should have this video
|
||||||
each(servers, function (server, callback) {
|
each(servers, function (server, callback) {
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -247,7 +251,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video1.duration).to.equal(5)
|
expect(video1.duration).to.equal(5)
|
||||||
expect(video1.tags).to.deep.equal([ 'tag1p3' ])
|
expect(video1.tags).to.deep.equal([ 'tag1p3' ])
|
||||||
expect(video1.author).to.equal('root')
|
expect(video1.author).to.equal('root')
|
||||||
expect(utils.dateIsValid(video1.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video1.createdDate)).to.be.true
|
||||||
|
|
||||||
expect(video2.name).to.equal('my super name for pod 3-2')
|
expect(video2.name).to.equal('my super name for pod 3-2')
|
||||||
expect(video2.description).to.equal('my super description for pod 3-2')
|
expect(video2.description).to.equal('my super description for pod 3-2')
|
||||||
|
@ -256,7 +260,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video2.duration).to.equal(5)
|
expect(video2.duration).to.equal(5)
|
||||||
expect(video2.tags).to.deep.equal([ 'tag2p3', 'tag3p3', 'tag4p3' ])
|
expect(video2.tags).to.deep.equal([ 'tag2p3', 'tag3p3', 'tag4p3' ])
|
||||||
expect(video2.author).to.equal('root')
|
expect(video2.author).to.equal('root')
|
||||||
expect(utils.dateIsValid(video2.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video2.createdDate)).to.be.true
|
||||||
|
|
||||||
if (server.url !== 'http://localhost:9003') {
|
if (server.url !== 'http://localhost:9003') {
|
||||||
expect(video1.isLocal).to.be.false
|
expect(video1.isLocal).to.be.false
|
||||||
|
@ -273,11 +277,11 @@ describe('Test multiple pods', function () {
|
||||||
expect(video2.magnetUri).to.equal.magnetUri
|
expect(video2.magnetUri).to.equal.magnetUri
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short3.webm', video1.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short3.webm', video1.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short.webm', video2.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short.webm', video2.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
|
@ -296,7 +300,7 @@ describe('Test multiple pods', function () {
|
||||||
// Yes, this could be long
|
// Yes, this could be long
|
||||||
this.timeout(200000)
|
this.timeout(200000)
|
||||||
|
|
||||||
utils.getVideosList(servers[2].url, function (err, res) {
|
videosUtils.getVideosList(servers[2].url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const video = res.body.data[0]
|
const video = res.body.data[0]
|
||||||
|
@ -317,7 +321,7 @@ describe('Test multiple pods', function () {
|
||||||
// Yes, this could be long
|
// Yes, this could be long
|
||||||
this.timeout(200000)
|
this.timeout(200000)
|
||||||
|
|
||||||
utils.getVideosList(servers[0].url, function (err, res) {
|
videosUtils.getVideosList(servers[0].url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const video = res.body.data[1]
|
const video = res.body.data[1]
|
||||||
|
@ -336,7 +340,7 @@ describe('Test multiple pods', function () {
|
||||||
// Yes, this could be long
|
// Yes, this could be long
|
||||||
this.timeout(200000)
|
this.timeout(200000)
|
||||||
|
|
||||||
utils.getVideosList(servers[1].url, function (err, res) {
|
videosUtils.getVideosList(servers[1].url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const video = res.body.data[2]
|
const video = res.body.data[2]
|
||||||
|
@ -355,7 +359,7 @@ describe('Test multiple pods', function () {
|
||||||
// Yes, this could be long
|
// Yes, this could be long
|
||||||
this.timeout(200000)
|
this.timeout(200000)
|
||||||
|
|
||||||
utils.getVideosList(servers[0].url, function (err, res) {
|
videosUtils.getVideosList(servers[0].url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const video = res.body.data[3]
|
const video = res.body.data[3]
|
||||||
|
@ -375,10 +379,10 @@ describe('Test multiple pods', function () {
|
||||||
|
|
||||||
series([
|
series([
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.removeVideo(servers[2].url, servers[2].accessToken, toRemove[0], next)
|
videosUtils.removeVideo(servers[2].url, servers[2].accessToken, toRemove[0], next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.removeVideo(servers[2].url, servers[2].accessToken, toRemove[1], next)
|
videosUtils.removeVideo(servers[2].url, servers[2].accessToken, toRemove[1], next)
|
||||||
}],
|
}],
|
||||||
function (err) {
|
function (err) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
@ -389,7 +393,7 @@ describe('Test multiple pods', function () {
|
||||||
|
|
||||||
it('Should have videos 1 and 3 on each pod', function (done) {
|
it('Should have videos 1 and 3 on each pod', function (done) {
|
||||||
each(servers, function (server, callback) {
|
each(servers, function (server, callback) {
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -415,7 +419,7 @@ describe('Test multiple pods', function () {
|
||||||
|
|
||||||
// Keep the logs if the test failed
|
// Keep the logs if the test failed
|
||||||
if (this.ok) {
|
if (this.ok) {
|
||||||
utils.flushTests(done)
|
serversUtils.flushTests(done)
|
||||||
} else {
|
} else {
|
||||||
done()
|
done()
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,11 +8,13 @@ const keyBy = require('lodash/keyBy')
|
||||||
const pathUtils = require('path')
|
const pathUtils = require('path')
|
||||||
const series = require('async/series')
|
const series = require('async/series')
|
||||||
|
|
||||||
|
const loginUtils = require('../utils/login')
|
||||||
|
const miscsUtils = require('../utils/miscs')
|
||||||
|
const serversUtils = require('../utils/servers')
|
||||||
|
const videosUtils = require('../utils/videos')
|
||||||
const webtorrent = require(pathUtils.join(__dirname, '../../lib/webtorrent'))
|
const webtorrent = require(pathUtils.join(__dirname, '../../lib/webtorrent'))
|
||||||
webtorrent.silent = true
|
webtorrent.silent = true
|
||||||
|
|
||||||
const utils = require('./utils')
|
|
||||||
|
|
||||||
describe('Test a single pod', function () {
|
describe('Test a single pod', function () {
|
||||||
let server = null
|
let server = null
|
||||||
let videoId = -1
|
let videoId = -1
|
||||||
|
@ -23,16 +25,16 @@ describe('Test a single pod', function () {
|
||||||
|
|
||||||
series([
|
series([
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.flushTests(next)
|
serversUtils.flushTests(next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.runServer(1, function (server1) {
|
serversUtils.runServer(1, function (server1) {
|
||||||
server = server1
|
server = server1
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.loginAndGetAccessToken(server, function (err, token) {
|
loginUtils.loginAndGetAccessToken(server, function (err, token) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
server.accessToken = token
|
server.accessToken = token
|
||||||
next()
|
next()
|
||||||
|
@ -45,7 +47,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not have videos', function (done) {
|
it('Should not have videos', function (done) {
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(0)
|
expect(res.body.total).to.equal(0)
|
||||||
|
@ -62,14 +64,14 @@ describe('Test a single pod', function () {
|
||||||
const description = 'my super description'
|
const description = 'my super description'
|
||||||
const tags = [ 'tag1', 'tag2', 'tag3' ]
|
const tags = [ 'tag1', 'tag2', 'tag3' ]
|
||||||
const file = 'video_short.webm'
|
const file = 'video_short.webm'
|
||||||
utils.uploadVideo(server.url, server.accessToken, name, description, tags, file, done)
|
videosUtils.uploadVideo(server.url, server.accessToken, name, description, tags, file, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should seed the uploaded video', function (done) {
|
it('Should seed the uploaded video', function (done) {
|
||||||
// Yes, this could be long
|
// Yes, this could be long
|
||||||
this.timeout(60000)
|
this.timeout(60000)
|
||||||
|
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(1)
|
expect(res.body.total).to.equal(1)
|
||||||
|
@ -84,9 +86,9 @@ describe('Test a single pod', function () {
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
expect(video.isLocal).to.be.true
|
expect(video.isLocal).to.be.true
|
||||||
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
||||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
|
@ -108,7 +110,7 @@ describe('Test a single pod', function () {
|
||||||
// Yes, this could be long
|
// Yes, this could be long
|
||||||
this.timeout(60000)
|
this.timeout(60000)
|
||||||
|
|
||||||
utils.getVideo(server.url, videoId, function (err, res) {
|
videosUtils.getVideo(server.url, videoId, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const video = res.body
|
const video = res.body
|
||||||
|
@ -119,9 +121,9 @@ describe('Test a single pod', function () {
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
expect(video.isLocal).to.be.true
|
expect(video.isLocal).to.be.true
|
||||||
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
||||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
|
@ -137,7 +139,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search the video by name by default', function (done) {
|
it('Should search the video by name by default', function (done) {
|
||||||
utils.searchVideo(server.url, 'my', function (err, res) {
|
videosUtils.searchVideo(server.url, 'my', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(1)
|
expect(res.body.total).to.equal(1)
|
||||||
|
@ -151,9 +153,9 @@ describe('Test a single pod', function () {
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
expect(video.isLocal).to.be.true
|
expect(video.isLocal).to.be.true
|
||||||
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
||||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
|
@ -163,7 +165,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search the video by podUrl', function (done) {
|
it('Should search the video by podUrl', function (done) {
|
||||||
utils.searchVideo(server.url, '9001', 'podUrl', function (err, res) {
|
videosUtils.searchVideo(server.url, '9001', 'podUrl', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(1)
|
expect(res.body.total).to.equal(1)
|
||||||
|
@ -177,9 +179,9 @@ describe('Test a single pod', function () {
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
expect(video.isLocal).to.be.true
|
expect(video.isLocal).to.be.true
|
||||||
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
||||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
|
@ -189,7 +191,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search the video by tag', function (done) {
|
it('Should search the video by tag', function (done) {
|
||||||
utils.searchVideo(server.url, 'tag1', 'tags', function (err, res) {
|
videosUtils.searchVideo(server.url, 'tag1', 'tags', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(1)
|
expect(res.body.total).to.equal(1)
|
||||||
|
@ -203,9 +205,9 @@ describe('Test a single pod', function () {
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
expect(video.isLocal).to.be.true
|
expect(video.isLocal).to.be.true
|
||||||
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
expect(video.tags).to.deep.equal([ 'tag1', 'tag2', 'tag3' ])
|
||||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
expect(miscsUtils.dateIsValid(video.createdDate)).to.be.true
|
||||||
|
|
||||||
utils.testImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
|
||||||
|
@ -215,7 +217,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not find a search by name by default', function (done) {
|
it('Should not find a search by name by default', function (done) {
|
||||||
utils.searchVideo(server.url, 'hello', function (err, res) {
|
videosUtils.searchVideo(server.url, 'hello', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(0)
|
expect(res.body.total).to.equal(0)
|
||||||
|
@ -227,7 +229,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not find a search by author', function (done) {
|
it('Should not find a search by author', function (done) {
|
||||||
utils.searchVideo(server.url, 'hello', 'author', function (err, res) {
|
videosUtils.searchVideo(server.url, 'hello', 'author', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(0)
|
expect(res.body.total).to.equal(0)
|
||||||
|
@ -239,7 +241,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not find a search by tag', function (done) {
|
it('Should not find a search by tag', function (done) {
|
||||||
utils.searchVideo(server.url, 'tag', 'tags', function (err, res) {
|
videosUtils.searchVideo(server.url, 'tag', 'tags', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(0)
|
expect(res.body.total).to.equal(0)
|
||||||
|
@ -251,7 +253,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should remove the video', function (done) {
|
it('Should remove the video', function (done) {
|
||||||
utils.removeVideo(server.url, server.accessToken, videoId, function (err) {
|
videosUtils.removeVideo(server.url, server.accessToken, videoId, function (err) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
fs.readdir(pathUtils.join(__dirname, '../../../test1/uploads/'), function (err, files) {
|
fs.readdir(pathUtils.join(__dirname, '../../../test1/uploads/'), function (err, files) {
|
||||||
|
@ -264,7 +266,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not have videos', function (done) {
|
it('Should not have videos', function (done) {
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(0)
|
expect(res.body.total).to.equal(0)
|
||||||
|
@ -286,12 +288,12 @@ describe('Test a single pod', function () {
|
||||||
const description = video + ' description'
|
const description = video + ' description'
|
||||||
const tags = [ 'tag1', 'tag2', 'tag3' ]
|
const tags = [ 'tag1', 'tag2', 'tag3' ]
|
||||||
|
|
||||||
utils.uploadVideo(server.url, server.accessToken, name, description, tags, video, callbackEach)
|
videosUtils.uploadVideo(server.url, server.accessToken, name, description, tags, video, callbackEach)
|
||||||
}, done)
|
}, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should have the correct durations', function (done) {
|
it('Should have the correct durations', function (done) {
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(6)
|
expect(res.body.total).to.equal(6)
|
||||||
|
@ -312,7 +314,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should have the correct thumbnails', function (done) {
|
it('Should have the correct thumbnails', function (done) {
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -323,7 +325,7 @@ describe('Test a single pod', function () {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
const videoName = video.name.replace(' name', '')
|
const videoName = video.name.replace(' name', '')
|
||||||
|
|
||||||
utils.testImage(server.url, videoName, video.thumbnailPath, function (err, test) {
|
videosUtils.testVideoImage(server.url, videoName, video.thumbnailPath, function (err, test) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(test).to.equal(true)
|
expect(test).to.equal(true)
|
||||||
|
@ -334,7 +336,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should list only the two first videos', function (done) {
|
it('Should list only the two first videos', function (done) {
|
||||||
utils.getVideosListPagination(server.url, 0, 2, function (err, res) {
|
videosUtils.getVideosListPagination(server.url, 0, 2, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -348,7 +350,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should list only the next three videos', function (done) {
|
it('Should list only the next three videos', function (done) {
|
||||||
utils.getVideosListPagination(server.url, 2, 3, function (err, res) {
|
videosUtils.getVideosListPagination(server.url, 2, 3, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -363,7 +365,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should list the last video', function (done) {
|
it('Should list the last video', function (done) {
|
||||||
utils.getVideosListPagination(server.url, 5, 6, function (err, res) {
|
videosUtils.getVideosListPagination(server.url, 5, 6, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -376,7 +378,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search the first video', function (done) {
|
it('Should search the first video', function (done) {
|
||||||
utils.searchVideoWithPagination(server.url, 'webm', 'name', 0, 1, function (err, res) {
|
videosUtils.searchVideoWithPagination(server.url, 'webm', 'name', 0, 1, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -389,7 +391,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search the last two videos', function (done) {
|
it('Should search the last two videos', function (done) {
|
||||||
utils.searchVideoWithPagination(server.url, 'webm', 'name', 2, 2, function (err, res) {
|
videosUtils.searchVideoWithPagination(server.url, 'webm', 'name', 2, 2, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -403,7 +405,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search all the webm videos', function (done) {
|
it('Should search all the webm videos', function (done) {
|
||||||
utils.searchVideoWithPagination(server.url, 'webm', 'name', 0, 15, function (err, res) {
|
videosUtils.searchVideoWithPagination(server.url, 'webm', 'name', 0, 15, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -415,7 +417,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search all the root author videos', function (done) {
|
it('Should search all the root author videos', function (done) {
|
||||||
utils.searchVideoWithPagination(server.url, 'root', 'author', 0, 15, function (err, res) {
|
videosUtils.searchVideoWithPagination(server.url, 'root', 'author', 0, 15, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -427,7 +429,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search all the 9001 port videos', function (done) {
|
it('Should search all the 9001 port videos', function (done) {
|
||||||
utils.searchVideoWithPagination(server.url, '9001', 'podUrl', 0, 15, function (err, res) {
|
videosUtils.searchVideoWithPagination(server.url, '9001', 'podUrl', 0, 15, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -439,7 +441,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search all the localhost videos', function (done) {
|
it('Should search all the localhost videos', function (done) {
|
||||||
utils.searchVideoWithPagination(server.url, 'localhost', 'podUrl', 0, 15, function (err, res) {
|
videosUtils.searchVideoWithPagination(server.url, 'localhost', 'podUrl', 0, 15, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -452,7 +454,7 @@ describe('Test a single pod', function () {
|
||||||
|
|
||||||
it('Should search the good magnetUri video', function (done) {
|
it('Should search the good magnetUri video', function (done) {
|
||||||
const video = videosListBase[0]
|
const video = videosListBase[0]
|
||||||
utils.searchVideoWithPagination(server.url, encodeURIComponent(video.magnetUri), 'magnetUri', 0, 15, function (err, res) {
|
videosUtils.searchVideoWithPagination(server.url, encodeURIComponent(video.magnetUri), 'magnetUri', 0, 15, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -465,7 +467,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should list and sort by name in descending order', function (done) {
|
it('Should list and sort by name in descending order', function (done) {
|
||||||
utils.getVideosListSort(server.url, '-name', function (err, res) {
|
videosUtils.getVideosListSort(server.url, '-name', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -483,7 +485,7 @@ describe('Test a single pod', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search and sort by name in ascending order', function (done) {
|
it('Should search and sort by name in ascending order', function (done) {
|
||||||
utils.searchVideoWithSort(server.url, 'webm', 'name', function (err, res) {
|
videosUtils.searchVideoWithSort(server.url, 'webm', 'name', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const videos = res.body.data
|
const videos = res.body.data
|
||||||
|
@ -505,7 +507,7 @@ describe('Test a single pod', function () {
|
||||||
|
|
||||||
// Keep the logs if the test failed
|
// Keep the logs if the test failed
|
||||||
if (this.ok) {
|
if (this.ok) {
|
||||||
utils.flushTests(done)
|
serversUtils.flushTests(done)
|
||||||
} else {
|
} else {
|
||||||
done()
|
done()
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,14 @@ const expect = chai.expect
|
||||||
const pathUtils = require('path')
|
const pathUtils = require('path')
|
||||||
const series = require('async/series')
|
const series = require('async/series')
|
||||||
|
|
||||||
|
const loginUtils = require('../utils/login')
|
||||||
|
const podsUtils = require('../utils/pods')
|
||||||
|
const serversUtils = require('../utils/servers')
|
||||||
|
const usersUtils = require('../utils/users')
|
||||||
|
const videosUtils = require('../utils/videos')
|
||||||
const webtorrent = require(pathUtils.join(__dirname, '../../lib/webtorrent'))
|
const webtorrent = require(pathUtils.join(__dirname, '../../lib/webtorrent'))
|
||||||
webtorrent.silent = true
|
webtorrent.silent = true
|
||||||
|
|
||||||
const utils = require('./utils')
|
|
||||||
|
|
||||||
describe('Test users', function () {
|
describe('Test users', function () {
|
||||||
let server = null
|
let server = null
|
||||||
let accessToken = null
|
let accessToken = null
|
||||||
|
@ -22,10 +25,10 @@ describe('Test users', function () {
|
||||||
|
|
||||||
series([
|
series([
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.flushTests(next)
|
serversUtils.flushTests(next)
|
||||||
},
|
},
|
||||||
function (next) {
|
function (next) {
|
||||||
utils.runServer(1, function (server1) {
|
serversUtils.runServer(1, function (server1) {
|
||||||
server = server1
|
server = server1
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
|
@ -41,7 +44,7 @@ describe('Test users', function () {
|
||||||
|
|
||||||
it('Should not login with an invalid client id', function (done) {
|
it('Should not login with an invalid client id', function (done) {
|
||||||
const client = { id: 'client', password: server.client.secret }
|
const client = { id: 'client', password: server.client.secret }
|
||||||
utils.login(server.url, client, server.user, 400, function (err, res) {
|
loginUtils.login(server.url, client, server.user, 400, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.error).to.equal('invalid_client')
|
expect(res.body.error).to.equal('invalid_client')
|
||||||
|
@ -51,7 +54,7 @@ describe('Test users', function () {
|
||||||
|
|
||||||
it('Should not login with an invalid client password', function (done) {
|
it('Should not login with an invalid client password', function (done) {
|
||||||
const client = { id: server.client.id, password: 'coucou' }
|
const client = { id: server.client.id, password: 'coucou' }
|
||||||
utils.login(server.url, client, server.user, 400, function (err, res) {
|
loginUtils.login(server.url, client, server.user, 400, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.error).to.equal('invalid_client')
|
expect(res.body.error).to.equal('invalid_client')
|
||||||
|
@ -61,7 +64,7 @@ describe('Test users', function () {
|
||||||
|
|
||||||
it('Should not login with an invalid username', function (done) {
|
it('Should not login with an invalid username', function (done) {
|
||||||
const user = { username: 'captain crochet', password: server.user.password }
|
const user = { username: 'captain crochet', password: server.user.password }
|
||||||
utils.login(server.url, server.client, user, 400, function (err, res) {
|
loginUtils.login(server.url, server.client, user, 400, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.error).to.equal('invalid_grant')
|
expect(res.body.error).to.equal('invalid_grant')
|
||||||
|
@ -71,7 +74,7 @@ describe('Test users', function () {
|
||||||
|
|
||||||
it('Should not login with an invalid password', function (done) {
|
it('Should not login with an invalid password', function (done) {
|
||||||
const user = { username: server.user.username, password: 'mewthree' }
|
const user = { username: server.user.username, password: 'mewthree' }
|
||||||
utils.login(server.url, server.client, user, 400, function (err, res) {
|
loginUtils.login(server.url, server.client, user, 400, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.error).to.equal('invalid_grant')
|
expect(res.body.error).to.equal('invalid_grant')
|
||||||
|
@ -86,21 +89,21 @@ describe('Test users', function () {
|
||||||
const description = 'my super description'
|
const description = 'my super description'
|
||||||
const tags = [ 'tag1', 'tag2' ]
|
const tags = [ 'tag1', 'tag2' ]
|
||||||
const video = 'video_short.webm'
|
const video = 'video_short.webm'
|
||||||
utils.uploadVideo(server.url, accessToken, name, description, tags, video, 401, done)
|
videosUtils.uploadVideo(server.url, accessToken, name, description, tags, video, 401, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not be able to make friends', function (done) {
|
it('Should not be able to make friends', function (done) {
|
||||||
accessToken = 'mysupertoken'
|
accessToken = 'mysupertoken'
|
||||||
utils.makeFriends(server.url, accessToken, 401, done)
|
podsUtils.makeFriends(server.url, accessToken, 401, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not be able to quit friends', function (done) {
|
it('Should not be able to quit friends', function (done) {
|
||||||
accessToken = 'mysupertoken'
|
accessToken = 'mysupertoken'
|
||||||
utils.quitFriends(server.url, accessToken, 401, done)
|
podsUtils.quitFriends(server.url, accessToken, 401, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should be able to login', function (done) {
|
it('Should be able to login', function (done) {
|
||||||
utils.login(server.url, server.client, server.user, 200, function (err, res) {
|
loginUtils.login(server.url, server.client, server.user, 200, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
accessToken = res.body.access_token
|
accessToken = res.body.access_token
|
||||||
|
@ -113,10 +116,10 @@ describe('Test users', function () {
|
||||||
const description = 'my super description'
|
const description = 'my super description'
|
||||||
const tags = [ 'tag1', 'tag2' ]
|
const tags = [ 'tag1', 'tag2' ]
|
||||||
const video = 'video_short.webm'
|
const video = 'video_short.webm'
|
||||||
utils.uploadVideo(server.url, accessToken, name, description, tags, video, 204, function (err, res) {
|
videosUtils.uploadVideo(server.url, accessToken, name, description, tags, video, 204, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const video = res.body.data[0]
|
const video = res.body.data[0]
|
||||||
|
@ -133,17 +136,17 @@ describe('Test users', function () {
|
||||||
const description = 'my super description 2'
|
const description = 'my super description 2'
|
||||||
const tags = [ 'tag1' ]
|
const tags = [ 'tag1' ]
|
||||||
const video = 'video_short.webm'
|
const video = 'video_short.webm'
|
||||||
utils.uploadVideo(server.url, accessToken, name, description, tags, video, 204, done)
|
videosUtils.uploadVideo(server.url, accessToken, name, description, tags, video, 204, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not be able to remove the video with an incorrect token', function (done) {
|
it('Should not be able to remove the video with an incorrect token', function (done) {
|
||||||
utils.removeVideo(server.url, 'bad_token', videoId, 401, done)
|
videosUtils.removeVideo(server.url, 'bad_token', videoId, 401, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not be able to remove the video with the token of another account')
|
it('Should not be able to remove the video with the token of another account')
|
||||||
|
|
||||||
it('Should be able to remove the video with the correct token', function (done) {
|
it('Should be able to remove the video with the correct token', function (done) {
|
||||||
utils.removeVideo(server.url, accessToken, videoId, done)
|
videosUtils.removeVideo(server.url, accessToken, videoId, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should logout (revoke token)')
|
it('Should logout (revoke token)')
|
||||||
|
@ -161,7 +164,7 @@ describe('Test users', function () {
|
||||||
it('Should be able to upload a video again')
|
it('Should be able to upload a video again')
|
||||||
|
|
||||||
it('Should be able to create a new user', function (done) {
|
it('Should be able to create a new user', function (done) {
|
||||||
utils.createUser(server.url, accessToken, 'user_1', 'super password', done)
|
usersUtils.createUser(server.url, accessToken, 'user_1', 'super password', done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should be able to login with this user', function (done) {
|
it('Should be able to login with this user', function (done) {
|
||||||
|
@ -170,7 +173,7 @@ describe('Test users', function () {
|
||||||
password: 'super password'
|
password: 'super password'
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.loginAndGetAccessToken(server, function (err, token) {
|
loginUtils.loginAndGetAccessToken(server, function (err, token) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
accessTokenUser = token
|
accessTokenUser = token
|
||||||
|
@ -180,7 +183,7 @@ describe('Test users', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should be able to get the user informations', function (done) {
|
it('Should be able to get the user informations', function (done) {
|
||||||
utils.getUserInformation(server.url, accessTokenUser, function (err, res) {
|
usersUtils.getUserInformation(server.url, accessTokenUser, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const user = res.body
|
const user = res.body
|
||||||
|
@ -199,11 +202,11 @@ describe('Test users', function () {
|
||||||
const description = 'my super description'
|
const description = 'my super description'
|
||||||
const tags = [ 'tag1', 'tag2', 'tag3' ]
|
const tags = [ 'tag1', 'tag2', 'tag3' ]
|
||||||
const file = 'video_short.webm'
|
const file = 'video_short.webm'
|
||||||
utils.uploadVideo(server.url, accessTokenUser, name, description, tags, file, done)
|
videosUtils.uploadVideo(server.url, accessTokenUser, name, description, tags, file, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should list all the users', function (done) {
|
it('Should list all the users', function (done) {
|
||||||
utils.getUsersList(server.url, function (err, res) {
|
usersUtils.getUsersList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const users = res.body.data
|
const users = res.body.data
|
||||||
|
@ -223,25 +226,25 @@ describe('Test users', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should update the user password', function (done) {
|
it('Should update the user password', function (done) {
|
||||||
utils.updateUser(server.url, userId, accessTokenUser, 'new password', function (err, res) {
|
usersUtils.updateUser(server.url, userId, accessTokenUser, 'new password', function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
server.user.password = 'new password'
|
server.user.password = 'new password'
|
||||||
utils.login(server.url, server.client, server.user, 200, done)
|
loginUtils.login(server.url, server.client, server.user, 200, done)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should be able to remove this user', function (done) {
|
it('Should be able to remove this user', function (done) {
|
||||||
utils.removeUser(server.url, accessToken, 'user_1', done)
|
usersUtils.removeUser(server.url, accessToken, 'user_1', done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not be able to login with this user', function (done) {
|
it('Should not be able to login with this user', function (done) {
|
||||||
// server.user is already set to user 1
|
// server.user is already set to user 1
|
||||||
utils.login(server.url, server.client, server.user, 400, done)
|
loginUtils.login(server.url, server.client, server.user, 400, done)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should not have videos of this user', function (done) {
|
it('Should not have videos of this user', function (done) {
|
||||||
utils.getVideosList(server.url, function (err, res) {
|
videosUtils.getVideosList(server.url, function (err, res) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
expect(res.body.total).to.equal(1)
|
expect(res.body.total).to.equal(1)
|
||||||
|
@ -257,7 +260,7 @@ describe('Test users', function () {
|
||||||
|
|
||||||
// Keep the logs if the test failed
|
// Keep the logs if the test failed
|
||||||
if (this.ok) {
|
if (this.ok) {
|
||||||
utils.flushTests(done)
|
serversUtils.flushTests(done)
|
||||||
} else {
|
} else {
|
||||||
done()
|
done()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,492 +0,0 @@
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const childProcess = require('child_process')
|
|
||||||
const exec = childProcess.exec
|
|
||||||
const fork = childProcess.fork
|
|
||||||
const fs = require('fs')
|
|
||||||
const pathUtils = require('path')
|
|
||||||
const request = require('supertest')
|
|
||||||
|
|
||||||
const testUtils = {
|
|
||||||
createUser: createUser,
|
|
||||||
dateIsValid: dateIsValid,
|
|
||||||
flushTests: flushTests,
|
|
||||||
getAllVideosListBy: getAllVideosListBy,
|
|
||||||
getClient: getClient,
|
|
||||||
getFriendsList: getFriendsList,
|
|
||||||
getUserInformation: getUserInformation,
|
|
||||||
getUsersList: getUsersList,
|
|
||||||
getVideo: getVideo,
|
|
||||||
getVideosList: getVideosList,
|
|
||||||
getVideosListPagination: getVideosListPagination,
|
|
||||||
getVideosListSort: getVideosListSort,
|
|
||||||
login: login,
|
|
||||||
loginAndGetAccessToken: loginAndGetAccessToken,
|
|
||||||
makeFriends: makeFriends,
|
|
||||||
quitFriends: quitFriends,
|
|
||||||
removeUser: removeUser,
|
|
||||||
removeVideo: removeVideo,
|
|
||||||
flushAndRunMultipleServers: flushAndRunMultipleServers,
|
|
||||||
runServer: runServer,
|
|
||||||
searchVideo: searchVideo,
|
|
||||||
searchVideoWithPagination: searchVideoWithPagination,
|
|
||||||
searchVideoWithSort: searchVideoWithSort,
|
|
||||||
testImage: testImage,
|
|
||||||
uploadVideo: uploadVideo,
|
|
||||||
updateUser: updateUser
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------- Export functions --------------------
|
|
||||||
|
|
||||||
function createUser (url, accessToken, username, password, specialStatus, end) {
|
|
||||||
if (!end) {
|
|
||||||
end = specialStatus
|
|
||||||
specialStatus = 204
|
|
||||||
}
|
|
||||||
|
|
||||||
const path = '/api/v1/users'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.post(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.send({ username: username, password: password })
|
|
||||||
.expect(specialStatus)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function dateIsValid (dateString) {
|
|
||||||
const dateToCheck = new Date(dateString)
|
|
||||||
const now = new Date()
|
|
||||||
|
|
||||||
// Check if the interval is more than 2 minutes
|
|
||||||
if (now - dateToCheck > 120000) return false
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
function flushTests (callback) {
|
|
||||||
exec('npm run clean:server:test', callback)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAllVideosListBy (url, end) {
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.query({ sort: 'createdDate' })
|
|
||||||
.query({ start: 0 })
|
|
||||||
.query({ count: 10000 })
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getClient (url, end) {
|
|
||||||
const path = '/api/v1/users/client'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getUserInformation (url, accessToken, end) {
|
|
||||||
const path = '/api/v1/users/me'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getUsersList (url, end) {
|
|
||||||
const path = '/api/v1/users'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getFriendsList (url, end) {
|
|
||||||
const path = '/api/v1/pods/'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getVideo (url, id, end) {
|
|
||||||
const path = '/api/v1/videos/' + id
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getVideosList (url, end) {
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.query({ sort: 'name' })
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getVideosListPagination (url, start, count, end) {
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.query({ start: start })
|
|
||||||
.query({ count: count })
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getVideosListSort (url, sort, end) {
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.query({ sort: sort })
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function login (url, client, user, expectedStatus, end) {
|
|
||||||
if (!end) {
|
|
||||||
end = expectedStatus
|
|
||||||
expectedStatus = 200
|
|
||||||
}
|
|
||||||
|
|
||||||
const path = '/api/v1/users/token'
|
|
||||||
|
|
||||||
const body = {
|
|
||||||
client_id: client.id,
|
|
||||||
client_secret: client.secret,
|
|
||||||
username: user.username,
|
|
||||||
password: user.password,
|
|
||||||
response_type: 'code',
|
|
||||||
grant_type: 'password',
|
|
||||||
scope: 'upload'
|
|
||||||
}
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.post(path)
|
|
||||||
.type('form')
|
|
||||||
.send(body)
|
|
||||||
.expect(expectedStatus)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function loginAndGetAccessToken (server, callback) {
|
|
||||||
login(server.url, server.client, server.user, 200, function (err, res) {
|
|
||||||
if (err) return callback(err)
|
|
||||||
|
|
||||||
return callback(null, res.body.access_token)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeFriends (url, accessToken, expectedStatus, callback) {
|
|
||||||
if (!callback) {
|
|
||||||
callback = expectedStatus
|
|
||||||
expectedStatus = 204
|
|
||||||
}
|
|
||||||
|
|
||||||
const path = '/api/v1/pods/makefriends'
|
|
||||||
|
|
||||||
// The first pod make friend with the third
|
|
||||||
request(url)
|
|
||||||
.get(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.expect(expectedStatus)
|
|
||||||
.end(function (err, res) {
|
|
||||||
if (err) throw err
|
|
||||||
|
|
||||||
// Wait for the request between pods
|
|
||||||
setTimeout(callback, 1000)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
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')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.expect(expectedStatus)
|
|
||||||
.end(function (err, res) {
|
|
||||||
if (err) throw err
|
|
||||||
|
|
||||||
// Wait for the request between pods
|
|
||||||
setTimeout(callback, 1000)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeUser (url, token, username, expectedStatus, end) {
|
|
||||||
if (!end) {
|
|
||||||
end = expectedStatus
|
|
||||||
expectedStatus = 204
|
|
||||||
}
|
|
||||||
|
|
||||||
const path = '/api/v1/users'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.delete(path + '/' + username)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + token)
|
|
||||||
.expect(expectedStatus)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeVideo (url, token, id, expectedStatus, end) {
|
|
||||||
if (!end) {
|
|
||||||
end = expectedStatus
|
|
||||||
expectedStatus = 204
|
|
||||||
}
|
|
||||||
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.delete(path + '/' + id)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + token)
|
|
||||||
.expect(expectedStatus)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function flushAndRunMultipleServers (totalServers, serversRun) {
|
|
||||||
let apps = []
|
|
||||||
let urls = []
|
|
||||||
let i = 0
|
|
||||||
|
|
||||||
function anotherServerDone (number, app, url) {
|
|
||||||
apps[number - 1] = app
|
|
||||||
urls[number - 1] = url
|
|
||||||
i++
|
|
||||||
if (i === totalServers) {
|
|
||||||
serversRun(apps, urls)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
flushTests(function () {
|
|
||||||
for (let j = 1; j <= totalServers; j++) {
|
|
||||||
// For the virtual buffer
|
|
||||||
setTimeout(function () {
|
|
||||||
runServer(j, function (app, url) {
|
|
||||||
anotherServerDone(j, app, url)
|
|
||||||
})
|
|
||||||
}, 1000 * j)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function runServer (number, callback) {
|
|
||||||
const server = {
|
|
||||||
app: null,
|
|
||||||
url: `http://localhost:${9000 + number}`,
|
|
||||||
client: {
|
|
||||||
id: null,
|
|
||||||
secret: null
|
|
||||||
},
|
|
||||||
user: {
|
|
||||||
username: null,
|
|
||||||
password: null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// These actions are async so we need to be sure that they have both been done
|
|
||||||
const serverRunString = {
|
|
||||||
'Connected to mongodb': false,
|
|
||||||
'Server listening on port': false
|
|
||||||
}
|
|
||||||
|
|
||||||
const regexps = {
|
|
||||||
client_id: 'Client id: ([a-f0-9]+)',
|
|
||||||
client_secret: 'Client secret: (.+)',
|
|
||||||
user_username: 'Username: (.+)',
|
|
||||||
user_password: 'User password: (.+)'
|
|
||||||
}
|
|
||||||
|
|
||||||
// Share the environment
|
|
||||||
const env = Object.create(process.env)
|
|
||||||
env.NODE_ENV = 'test'
|
|
||||||
env.NODE_APP_INSTANCE = number
|
|
||||||
const options = {
|
|
||||||
silent: true,
|
|
||||||
env: env,
|
|
||||||
detached: true
|
|
||||||
}
|
|
||||||
|
|
||||||
server.app = fork(pathUtils.join(__dirname, '../../../server.js'), [], options)
|
|
||||||
server.app.stdout.on('data', function onStdout (data) {
|
|
||||||
let dontContinue = false
|
|
||||||
|
|
||||||
// Capture things if we want to
|
|
||||||
for (const key of Object.keys(regexps)) {
|
|
||||||
const regexp = regexps[key]
|
|
||||||
const matches = data.toString().match(regexp)
|
|
||||||
if (matches !== null) {
|
|
||||||
if (key === 'client_id') server.client.id = matches[1]
|
|
||||||
else if (key === 'client_secret') server.client.secret = matches[1]
|
|
||||||
else if (key === 'user_username') server.user.username = matches[1]
|
|
||||||
else if (key === 'user_password') server.user.password = matches[1]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if all required sentences are here
|
|
||||||
for (const key of Object.keys(serverRunString)) {
|
|
||||||
if (data.toString().indexOf(key) !== -1) serverRunString[key] = true
|
|
||||||
if (serverRunString[key] === false) dontContinue = true
|
|
||||||
}
|
|
||||||
|
|
||||||
// If no, there is maybe one thing not already initialized (mongodb...)
|
|
||||||
if (dontContinue === true) return
|
|
||||||
|
|
||||||
server.app.stdout.removeListener('data', onStdout)
|
|
||||||
callback(server)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function searchVideo (url, search, field, end) {
|
|
||||||
if (!end) {
|
|
||||||
end = field
|
|
||||||
field = null
|
|
||||||
}
|
|
||||||
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
const req = request(url)
|
|
||||||
.get(path + '/search/' + search)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
|
|
||||||
if (field) req.query({ field: field })
|
|
||||||
req.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function searchVideoWithPagination (url, search, field, start, count, end) {
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path + '/search/' + search)
|
|
||||||
.query({ start: start })
|
|
||||||
.query({ count: count })
|
|
||||||
.query({ field: field })
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function searchVideoWithSort (url, search, sort, end) {
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.get(path + '/search/' + search)
|
|
||||||
.query({ sort: sort })
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.expect(200)
|
|
||||||
.expect('Content-Type', /json/)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function testImage (url, videoName, imagePath, callback) {
|
|
||||||
// Don't test images if the node env is not set
|
|
||||||
// Because we need a special ffmpeg version for this test
|
|
||||||
if (process.env.NODE_TEST_IMAGE) {
|
|
||||||
request(url)
|
|
||||||
.get(imagePath)
|
|
||||||
.expect(200)
|
|
||||||
.end(function (err, res) {
|
|
||||||
if (err) return callback(err)
|
|
||||||
|
|
||||||
fs.readFile(pathUtils.join(__dirname, 'fixtures', videoName + '.jpg'), function (err, data) {
|
|
||||||
if (err) return callback(err)
|
|
||||||
|
|
||||||
callback(null, data.equals(res.body))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
console.log('Do not test images. Enable it by setting NODE_TEST_IMAGE env variable.')
|
|
||||||
callback(null, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploadVideo (url, accessToken, name, description, tags, fixture, specialStatus, end) {
|
|
||||||
if (!end) {
|
|
||||||
end = specialStatus
|
|
||||||
specialStatus = 204
|
|
||||||
}
|
|
||||||
|
|
||||||
const path = '/api/v1/videos'
|
|
||||||
|
|
||||||
const req = request(url)
|
|
||||||
.post(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.field('name', name)
|
|
||||||
.field('description', description)
|
|
||||||
|
|
||||||
for (let i = 0; i < tags.length; i++) {
|
|
||||||
req.field('tags[' + i + ']', tags[i])
|
|
||||||
}
|
|
||||||
|
|
||||||
let filepath = ''
|
|
||||||
if (pathUtils.isAbsolute(fixture)) {
|
|
||||||
filepath = fixture
|
|
||||||
} else {
|
|
||||||
filepath = pathUtils.join(__dirname, 'fixtures', fixture)
|
|
||||||
}
|
|
||||||
|
|
||||||
req.attach('videofile', filepath)
|
|
||||||
.expect(specialStatus)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateUser (url, userId, accessToken, newPassword, end) {
|
|
||||||
const path = '/api/v1/users/' + userId
|
|
||||||
|
|
||||||
request(url)
|
|
||||||
.put(path)
|
|
||||||
.set('Accept', 'application/json')
|
|
||||||
.set('Authorization', 'Bearer ' + accessToken)
|
|
||||||
.send({ password: newPassword })
|
|
||||||
.expect(204)
|
|
||||||
.end(end)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
module.exports = testUtils
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const request = require('supertest')
|
||||||
|
|
||||||
|
const clientsUtils = {
|
||||||
|
getClient: getClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------- Export functions --------------------
|
||||||
|
|
||||||
|
function getClient (url, end) {
|
||||||
|
const path = '/api/v1/users/client'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
module.exports = clientsUtils
|
|
@ -0,0 +1,48 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const request = require('supertest')
|
||||||
|
|
||||||
|
const loginUtils = {
|
||||||
|
login: login,
|
||||||
|
loginAndGetAccessToken: loginAndGetAccessToken
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------- Export functions --------------------
|
||||||
|
|
||||||
|
function login (url, client, user, expectedStatus, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = expectedStatus
|
||||||
|
expectedStatus = 200
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = '/api/v1/users/token'
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
client_id: client.id,
|
||||||
|
client_secret: client.secret,
|
||||||
|
username: user.username,
|
||||||
|
password: user.password,
|
||||||
|
response_type: 'code',
|
||||||
|
grant_type: 'password',
|
||||||
|
scope: 'upload'
|
||||||
|
}
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.post(path)
|
||||||
|
.type('form')
|
||||||
|
.send(body)
|
||||||
|
.expect(expectedStatus)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function loginAndGetAccessToken (server, callback) {
|
||||||
|
login(server.url, server.client, server.user, 200, function (err, res) {
|
||||||
|
if (err) return callback(err)
|
||||||
|
|
||||||
|
return callback(null, res.body.access_token)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
module.exports = loginUtils
|
|
@ -0,0 +1,21 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const miscsUtils = {
|
||||||
|
dateIsValid: dateIsValid
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------- Export functions --------------------
|
||||||
|
|
||||||
|
function dateIsValid (dateString) {
|
||||||
|
const dateToCheck = new Date(dateString)
|
||||||
|
const now = new Date()
|
||||||
|
|
||||||
|
// Check if the interval is more than 2 minutes
|
||||||
|
if (now - dateToCheck > 120000) return false
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
module.exports = miscsUtils
|
|
@ -0,0 +1,70 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const request = require('supertest')
|
||||||
|
|
||||||
|
const podsUtils = {
|
||||||
|
getFriendsList: getFriendsList,
|
||||||
|
makeFriends: makeFriends,
|
||||||
|
quitFriends: quitFriends
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------- Export functions --------------------
|
||||||
|
|
||||||
|
function getFriendsList (url, end) {
|
||||||
|
const path = '/api/v1/pods/'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeFriends (url, accessToken, expectedStatus, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = expectedStatus
|
||||||
|
expectedStatus = 204
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = '/api/v1/pods/makefriends'
|
||||||
|
|
||||||
|
// The first pod make friend with the third
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.set('Authorization', 'Bearer ' + accessToken)
|
||||||
|
.expect(expectedStatus)
|
||||||
|
.end(function (err, res) {
|
||||||
|
if (err) throw err
|
||||||
|
|
||||||
|
// Wait for the request between pods
|
||||||
|
setTimeout(end, 1000)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function quitFriends (url, accessToken, expectedStatus, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = 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')
|
||||||
|
.set('Authorization', 'Bearer ' + accessToken)
|
||||||
|
.expect(expectedStatus)
|
||||||
|
.end(function (err, res) {
|
||||||
|
if (err) throw err
|
||||||
|
|
||||||
|
// Wait for the request between pods
|
||||||
|
setTimeout(end, 1000)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
module.exports = podsUtils
|
|
@ -0,0 +1,115 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const childProcess = require('child_process')
|
||||||
|
const exec = childProcess.exec
|
||||||
|
const fork = childProcess.fork
|
||||||
|
const pathUtils = require('path')
|
||||||
|
|
||||||
|
const serversUtils = {
|
||||||
|
flushAndRunMultipleServers: flushAndRunMultipleServers,
|
||||||
|
flushTests: flushTests,
|
||||||
|
runServer: runServer
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------- Export functions --------------------
|
||||||
|
|
||||||
|
function flushAndRunMultipleServers (totalServers, serversRun) {
|
||||||
|
let apps = []
|
||||||
|
let urls = []
|
||||||
|
let i = 0
|
||||||
|
|
||||||
|
function anotherServerDone (number, app, url) {
|
||||||
|
apps[number - 1] = app
|
||||||
|
urls[number - 1] = url
|
||||||
|
i++
|
||||||
|
if (i === totalServers) {
|
||||||
|
serversRun(apps, urls)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
flushTests(function () {
|
||||||
|
for (let j = 1; j <= totalServers; j++) {
|
||||||
|
// For the virtual buffer
|
||||||
|
setTimeout(function () {
|
||||||
|
runServer(j, function (app, url) {
|
||||||
|
anotherServerDone(j, app, url)
|
||||||
|
})
|
||||||
|
}, 1000 * j)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function flushTests (callback) {
|
||||||
|
exec('npm run clean:server:test', callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
function runServer (number, callback) {
|
||||||
|
const server = {
|
||||||
|
app: null,
|
||||||
|
url: `http://localhost:${9000 + number}`,
|
||||||
|
client: {
|
||||||
|
id: null,
|
||||||
|
secret: null
|
||||||
|
},
|
||||||
|
user: {
|
||||||
|
username: null,
|
||||||
|
password: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// These actions are async so we need to be sure that they have both been done
|
||||||
|
const serverRunString = {
|
||||||
|
'Connected to mongodb': false,
|
||||||
|
'Server listening on port': false
|
||||||
|
}
|
||||||
|
|
||||||
|
const regexps = {
|
||||||
|
client_id: 'Client id: ([a-f0-9]+)',
|
||||||
|
client_secret: 'Client secret: (.+)',
|
||||||
|
user_username: 'Username: (.+)',
|
||||||
|
user_password: 'User password: (.+)'
|
||||||
|
}
|
||||||
|
|
||||||
|
// Share the environment
|
||||||
|
const env = Object.create(process.env)
|
||||||
|
env.NODE_ENV = 'test'
|
||||||
|
env.NODE_APP_INSTANCE = number
|
||||||
|
const options = {
|
||||||
|
silent: true,
|
||||||
|
env: env,
|
||||||
|
detached: true
|
||||||
|
}
|
||||||
|
|
||||||
|
server.app = fork(pathUtils.join(__dirname, '../../../server.js'), [], options)
|
||||||
|
server.app.stdout.on('data', function onStdout (data) {
|
||||||
|
let dontContinue = false
|
||||||
|
|
||||||
|
// Capture things if we want to
|
||||||
|
for (const key of Object.keys(regexps)) {
|
||||||
|
const regexp = regexps[key]
|
||||||
|
const matches = data.toString().match(regexp)
|
||||||
|
if (matches !== null) {
|
||||||
|
if (key === 'client_id') server.client.id = matches[1]
|
||||||
|
else if (key === 'client_secret') server.client.secret = matches[1]
|
||||||
|
else if (key === 'user_username') server.user.username = matches[1]
|
||||||
|
else if (key === 'user_password') server.user.password = matches[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if all required sentences are here
|
||||||
|
for (const key of Object.keys(serverRunString)) {
|
||||||
|
if (data.toString().indexOf(key) !== -1) serverRunString[key] = true
|
||||||
|
if (serverRunString[key] === false) dontContinue = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// If no, there is maybe one thing not already initialized (mongodb...)
|
||||||
|
if (dontContinue === true) return
|
||||||
|
|
||||||
|
server.app.stdout.removeListener('data', onStdout)
|
||||||
|
callback(server)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
module.exports = serversUtils
|
|
@ -0,0 +1,85 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const request = require('supertest')
|
||||||
|
|
||||||
|
const usersUtils = {
|
||||||
|
createUser: createUser,
|
||||||
|
getUserInformation: getUserInformation,
|
||||||
|
getUsersList: getUsersList,
|
||||||
|
removeUser: removeUser,
|
||||||
|
updateUser: updateUser
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------- Export functions --------------------
|
||||||
|
|
||||||
|
function createUser (url, accessToken, username, password, specialStatus, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = specialStatus
|
||||||
|
specialStatus = 204
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = '/api/v1/users'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.post(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.set('Authorization', 'Bearer ' + accessToken)
|
||||||
|
.send({ username: username, password: password })
|
||||||
|
.expect(specialStatus)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getUserInformation (url, accessToken, end) {
|
||||||
|
const path = '/api/v1/users/me'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.set('Authorization', 'Bearer ' + accessToken)
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getUsersList (url, end) {
|
||||||
|
const path = '/api/v1/users'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeUser (url, token, username, expectedStatus, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = expectedStatus
|
||||||
|
expectedStatus = 204
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = '/api/v1/users'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.delete(path + '/' + username)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.set('Authorization', 'Bearer ' + token)
|
||||||
|
.expect(expectedStatus)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateUser (url, userId, accessToken, newPassword, end) {
|
||||||
|
const path = '/api/v1/users/' + userId
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.put(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.set('Authorization', 'Bearer ' + accessToken)
|
||||||
|
.send({ password: newPassword })
|
||||||
|
.expect(204)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
module.exports = usersUtils
|
|
@ -0,0 +1,199 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const fs = require('fs')
|
||||||
|
const pathUtils = require('path')
|
||||||
|
const request = require('supertest')
|
||||||
|
|
||||||
|
const videosUtils = {
|
||||||
|
getAllVideosListBy: getAllVideosListBy,
|
||||||
|
getVideo: getVideo,
|
||||||
|
getVideosList: getVideosList,
|
||||||
|
getVideosListPagination: getVideosListPagination,
|
||||||
|
getVideosListSort: getVideosListSort,
|
||||||
|
removeVideo: removeVideo,
|
||||||
|
searchVideo: searchVideo,
|
||||||
|
searchVideoWithPagination: searchVideoWithPagination,
|
||||||
|
searchVideoWithSort: searchVideoWithSort,
|
||||||
|
testVideoImage: testVideoImage,
|
||||||
|
uploadVideo: uploadVideo
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------- Export functions --------------------
|
||||||
|
|
||||||
|
function getAllVideosListBy (url, end) {
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.query({ sort: 'createdDate' })
|
||||||
|
.query({ start: 0 })
|
||||||
|
.query({ count: 10000 })
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getVideo (url, id, end) {
|
||||||
|
const path = '/api/v1/videos/' + id
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getVideosList (url, end) {
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.query({ sort: 'name' })
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getVideosListPagination (url, start, count, end) {
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.query({ start: start })
|
||||||
|
.query({ count: count })
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getVideosListSort (url, sort, end) {
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path)
|
||||||
|
.query({ sort: sort })
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeVideo (url, token, id, expectedStatus, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = expectedStatus
|
||||||
|
expectedStatus = 204
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.delete(path + '/' + id)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.set('Authorization', 'Bearer ' + token)
|
||||||
|
.expect(expectedStatus)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function searchVideo (url, search, field, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = field
|
||||||
|
field = null
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
const req = request(url)
|
||||||
|
.get(path + '/search/' + search)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
|
||||||
|
if (field) req.query({ field: field })
|
||||||
|
req.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function searchVideoWithPagination (url, search, field, start, count, end) {
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path + '/search/' + search)
|
||||||
|
.query({ start: start })
|
||||||
|
.query({ count: count })
|
||||||
|
.query({ field: field })
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function searchVideoWithSort (url, search, sort, end) {
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
request(url)
|
||||||
|
.get(path + '/search/' + search)
|
||||||
|
.query({ sort: sort })
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.expect(200)
|
||||||
|
.expect('Content-Type', /json/)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
function testVideoImage (url, videoName, imagePath, callback) {
|
||||||
|
// Don't test images if the node env is not set
|
||||||
|
// Because we need a special ffmpeg version for this test
|
||||||
|
if (process.env.NODE_TEST_IMAGE) {
|
||||||
|
request(url)
|
||||||
|
.get(imagePath)
|
||||||
|
.expect(200)
|
||||||
|
.end(function (err, res) {
|
||||||
|
if (err) return callback(err)
|
||||||
|
|
||||||
|
fs.readFile(pathUtils.join(__dirname, '..', 'api', 'fixtures', videoName + '.jpg'), function (err, data) {
|
||||||
|
if (err) return callback(err)
|
||||||
|
|
||||||
|
callback(null, data.equals(res.body))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
console.log('Do not test images. Enable it by setting NODE_TEST_IMAGE env variable.')
|
||||||
|
callback(null, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadVideo (url, accessToken, name, description, tags, fixture, specialStatus, end) {
|
||||||
|
if (!end) {
|
||||||
|
end = specialStatus
|
||||||
|
specialStatus = 204
|
||||||
|
}
|
||||||
|
|
||||||
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
const req = request(url)
|
||||||
|
.post(path)
|
||||||
|
.set('Accept', 'application/json')
|
||||||
|
.set('Authorization', 'Bearer ' + accessToken)
|
||||||
|
.field('name', name)
|
||||||
|
.field('description', description)
|
||||||
|
|
||||||
|
for (let i = 0; i < tags.length; i++) {
|
||||||
|
req.field('tags[' + i + ']', tags[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
let filepath = ''
|
||||||
|
if (pathUtils.isAbsolute(fixture)) {
|
||||||
|
filepath = fixture
|
||||||
|
} else {
|
||||||
|
filepath = pathUtils.join(__dirname, '..', 'api', 'fixtures', fixture)
|
||||||
|
}
|
||||||
|
|
||||||
|
req.attach('videofile', filepath)
|
||||||
|
.expect(specialStatus)
|
||||||
|
.end(end)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
module.exports = videosUtils
|
Loading…
Reference in New Issue