Use test wrapper exit function

This commit is contained in:
Chocobozzz 2019-04-24 15:10:37 +02:00
parent 913b1d71e6
commit 7c3b79768b
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
80 changed files with 426 additions and 384 deletions

View File

@ -12,7 +12,7 @@ addons:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
packages: packages:
- g++-4.9 - g++-4.9
postgresql: "9.4" postgresql: "9.6"
cache: cache:
directories: directories:

View File

@ -6,7 +6,7 @@ import { CustomConfig } from '../../../../shared/models/server/custom-config.mod
import { import {
createUser, flushTests, killallServers, makeDeleteRequest, makeGetRequest, makePutBodyRequest, flushAndRunServer, ServerInfo, createUser, flushTests, killallServers, makeDeleteRequest, makeGetRequest, makePutBodyRequest, flushAndRunServer, ServerInfo,
setAccessTokensToServers, userLogin, immutableAssign setAccessTokensToServers, userLogin, immutableAssign, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
describe('Test config API validators', function () { describe('Test config API validators', function () {
@ -181,7 +181,7 @@ describe('Test config API validators', function () {
}) })
it('Should fail if email disabled and signup requires email verification', async function () { it('Should fail if email disabled and signup requires email verification', async function () {
// opposite scenario - succcess when enable enabled - covered via tests/api/users/user-verification.ts // opposite scenario - success when enable enabled - covered via tests/api/users/user-verification.ts
const newUpdateParams = immutableAssign(updateParams, { const newUpdateParams = immutableAssign(updateParams, {
signup: { signup: {
enabled: true, enabled: true,
@ -229,7 +229,7 @@ describe('Test config API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -9,7 +9,7 @@ import {
reRunServer, reRunServer,
flushAndRunServer, flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers setAccessTokensToServers, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { import {
checkBadCountPagination, checkBadCountPagination,
@ -28,13 +28,14 @@ describe('Test contact form API validators', function () {
fromEmail: 'toto@example.com', fromEmail: 'toto@example.com',
body: 'Hello, how are you?' body: 'Hello, how are you?'
} }
let emailPort: number
// --------------------------------------------------------------- // ---------------------------------------------------------------
before(async function () { before(async function () {
this.timeout(60000) this.timeout(60000)
await MockSmtpServer.Instance.collectEmails(emails) emailPort = await MockSmtpServer.Instance.collectEmails(emails)
// Email is disabled // Email is disabled
server = await flushAndRunServer(1) server = await flushAndRunServer(1)
@ -50,7 +51,7 @@ describe('Test contact form API validators', function () {
killallServers([ server ]) killallServers([ server ])
// Contact form is disabled // Contact form is disabled
await reRunServer(server, { smtp: { hostname: 'localhost' }, contact_form: { enabled: false } }) await reRunServer(server, { smtp: { hostname: 'localhost', port: emailPort }, contact_form: { enabled: false } })
await sendContactForm(immutableAssign(defaultBody, { url: server.url, expectedStatus: 409 })) await sendContactForm(immutableAssign(defaultBody, { url: server.url, expectedStatus: 409 }))
}) })
@ -60,7 +61,7 @@ describe('Test contact form API validators', function () {
killallServers([ server ]) killallServers([ server ])
// Email & contact form enabled // Email & contact form enabled
await reRunServer(server, { smtp: { hostname: 'localhost' } }) await reRunServer(server, { smtp: { hostname: 'localhost', port: emailPort } })
await sendContactForm(immutableAssign(defaultBody, { url: server.url, expectedStatus: 400, fromEmail: 'badEmail' })) await sendContactForm(immutableAssign(defaultBody, { url: server.url, expectedStatus: 400, fromEmail: 'badEmail' }))
await sendContactForm(immutableAssign(defaultBody, { url: server.url, expectedStatus: 400, fromEmail: 'badEmail@' })) await sendContactForm(immutableAssign(defaultBody, { url: server.url, expectedStatus: 400, fromEmail: 'badEmail@' }))
@ -83,8 +84,9 @@ describe('Test contact form API validators', function () {
await sendContactForm(immutableAssign(defaultBody, { url: server.url })) await sendContactForm(immutableAssign(defaultBody, { url: server.url }))
}) })
after(function () { after(async function () {
MockSmtpServer.Instance.kill() MockSmtpServer.Instance.kill()
killallServers([ server ])
// await cleanupTests([ server ])
}) })
}) })

View File

@ -9,7 +9,7 @@ import {
flushAndRunServer, flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
userLogin userLogin, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { makeGetRequest } from '../../../../shared/extra-utils/requests/requests' import { makeGetRequest } from '../../../../shared/extra-utils/requests/requests'
@ -65,7 +65,7 @@ describe('Test debug API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,7 +3,13 @@
import 'mocha' import 'mocha'
import { import {
createUser, flushTests, killallServers, makeDeleteRequest, makePostBodyRequest, flushAndRunServer, ServerInfo, setAccessTokensToServers, cleanupTests,
createUser,
flushAndRunServer,
makeDeleteRequest,
makePostBodyRequest,
ServerInfo,
setAccessTokensToServers,
userLogin userLogin
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { import {
@ -295,7 +301,7 @@ describe('Test server follows API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -9,7 +9,8 @@ import {
flushAndRunServer, flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
userLogin userLogin,
cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { import {
checkBadCountPagination, checkBadCountPagination,
@ -80,7 +81,7 @@ describe('Test jobs API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -9,7 +9,8 @@ import {
flushAndRunServer, flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
userLogin userLogin,
cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { makeGetRequest } from '../../../../shared/extra-utils/requests/requests' import { makeGetRequest } from '../../../../shared/extra-utils/requests/requests'
@ -104,7 +105,7 @@ describe('Test logs API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,6 +3,7 @@
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -43,7 +44,7 @@ describe('Test server redundancy API validators', function () {
it('Should fail with an invalid token', async function () { it('Should fail with an invalid token', async function () {
await makePutBodyRequest({ await makePutBodyRequest({
url: servers[0].url, url: servers[0].url,
path: path + '/localhost:9002', path: path + '/localhost:' + servers[1].port,
fields: { redundancyAllowed: true }, fields: { redundancyAllowed: true },
token: 'fake_token', token: 'fake_token',
statusCodeExpected: 401 statusCodeExpected: 401
@ -53,7 +54,7 @@ describe('Test server redundancy API validators', function () {
it('Should fail if the user is not an administrator', async function () { it('Should fail if the user is not an administrator', async function () {
await makePutBodyRequest({ await makePutBodyRequest({
url: servers[0].url, url: servers[0].url,
path: path + '/localhost:9002', path: path + '/localhost:' + servers[1].port,
fields: { redundancyAllowed: true }, fields: { redundancyAllowed: true },
token: userAccessToken, token: userAccessToken,
statusCodeExpected: 403 statusCodeExpected: 403
@ -73,7 +74,7 @@ describe('Test server redundancy API validators', function () {
it('Should fail without de redundancyAllowed param', async function () { it('Should fail without de redundancyAllowed param', async function () {
await makePutBodyRequest({ await makePutBodyRequest({
url: servers[0].url, url: servers[0].url,
path: path + '/localhost:9002', path: path + '/localhost:' + servers[1].port,
fields: { blabla: true }, fields: { blabla: true },
token: servers[0].accessToken, token: servers[0].accessToken,
statusCodeExpected: 400 statusCodeExpected: 400
@ -83,7 +84,7 @@ describe('Test server redundancy API validators', function () {
it('Should succeed with the correct parameters', async function () { it('Should succeed with the correct parameters', async function () {
await makePutBodyRequest({ await makePutBodyRequest({
url: servers[0].url, url: servers[0].url,
path: path + '/localhost:9002', path: path + '/localhost:' + servers[1].port,
fields: { redundancyAllowed: true }, fields: { redundancyAllowed: true },
token: servers[0].accessToken, token: servers[0].accessToken,
statusCodeExpected: 204 statusCodeExpected: 204
@ -91,7 +92,7 @@ describe('Test server redundancy API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -2,7 +2,7 @@
import 'mocha' import 'mocha'
import { flushTests, immutableAssign, killallServers, makeGetRequest, flushAndRunServer, ServerInfo } from '../../../../shared/extra-utils' import { cleanupTests, flushAndRunServer, immutableAssign, makeGetRequest, ServerInfo } from '../../../../shared/extra-utils'
import { import {
checkBadCountPagination, checkBadCountPagination,
checkBadSortPagination, checkBadSortPagination,
@ -144,7 +144,7 @@ describe('Test videos API validator', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,10 +3,9 @@
import 'mocha' import 'mocha'
import { import {
flushTests, cleanupTests,
killallServers,
makeGetRequest,
flushAndRunServer, flushAndRunServer,
makeGetRequest,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo uploadVideo
@ -40,47 +39,47 @@ describe('Test services API validators', function () {
}) })
it('Should fail with an invalid video id', async function () { it('Should fail with an invalid video id', async function () {
const embedUrl = 'http://localhost:9001/videos/watch/blabla' const embedUrl = `http://localhost:${server.port}/videos/watch/blabla`
await checkParamEmbed(server, embedUrl) await checkParamEmbed(server, embedUrl)
}) })
it('Should fail with an unknown video', async function () { it('Should fail with an unknown video', async function () {
const embedUrl = 'http://localhost:9001/videos/watch/88fc0165-d1f0-4a35-a51a-3b47f668689c' const embedUrl = `http://localhost:${server.port}/videos/watch/88fc0165-d1f0-4a35-a51a-3b47f668689c`
await checkParamEmbed(server, embedUrl, 404) await checkParamEmbed(server, embedUrl, 404)
}) })
it('Should fail with an invalid path', async function () { it('Should fail with an invalid path', async function () {
const embedUrl = 'http://localhost:9001/videos/watchs/' + server.video.uuid const embedUrl = `http://localhost:${server.port}/videos/watchs/${server.video.uuid}`
await checkParamEmbed(server, embedUrl) await checkParamEmbed(server, embedUrl)
}) })
it('Should fail with an invalid max height', async function () { it('Should fail with an invalid max height', async function () {
const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
await checkParamEmbed(server, embedUrl, 400, { maxheight: 'hello' }) await checkParamEmbed(server, embedUrl, 400, { maxheight: 'hello' })
}) })
it('Should fail with an invalid max width', async function () { it('Should fail with an invalid max width', async function () {
const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
await checkParamEmbed(server, embedUrl, 400, { maxwidth: 'hello' }) await checkParamEmbed(server, embedUrl, 400, { maxwidth: 'hello' })
}) })
it('Should fail with an invalid format', async function () { it('Should fail with an invalid format', async function () {
const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
await checkParamEmbed(server, embedUrl, 400, { format: 'blabla' }) await checkParamEmbed(server, embedUrl, 400, { format: 'blabla' })
}) })
it('Should fail with a non supported format', async function () { it('Should fail with a non supported format', async function () {
const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
await checkParamEmbed(server, embedUrl, 501, { format: 'xml' }) await checkParamEmbed(server, embedUrl, 501, { format: 'xml' })
}) })
it('Should succeed with the correct params', async function () { it('Should succeed with the correct params', async function () {
const embedUrl = 'http://localhost:9001/videos/watch/' + server.video.uuid const embedUrl = `http://localhost:${server.port}/videos/watch/${server.video.uuid}`
const query = { const query = {
format: 'json', format: 'json',
maxheight: 400, maxheight: 400,
@ -91,8 +90,8 @@ describe('Test services API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -4,13 +4,12 @@ import 'mocha'
import * as io from 'socket.io-client' import * as io from 'socket.io-client'
import { import {
flushTests, cleanupTests,
flushAndRunServer,
immutableAssign, immutableAssign,
killallServers,
makeGetRequest, makeGetRequest,
makePostBodyRequest, makePostBodyRequest,
makePutBodyRequest, makePutBodyRequest,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
wait wait
@ -234,7 +233,7 @@ describe('Test user notifications API validators', function () {
describe('When connecting to my notification socket', function () { describe('When connecting to my notification socket', function () {
it('Should fail with no token', function (next) { it('Should fail with no token', function (next) {
const socket = io('http://localhost:9001/user-notifications', { reconnection: false }) const socket = io(`http://localhost:${server.port}/user-notifications`, { reconnection: false })
socket.on('error', () => { socket.on('error', () => {
socket.removeListener('error', this) socket.removeListener('error', this)
@ -249,7 +248,7 @@ describe('Test user notifications API validators', function () {
}) })
it('Should fail with an invalid token', function (next) { it('Should fail with an invalid token', function (next) {
const socket = io('http://localhost:9001/user-notifications', { const socket = io(`http://localhost:${server.port}/user-notifications`, {
query: { accessToken: 'bad_access_token' }, query: { accessToken: 'bad_access_token' },
reconnection: false reconnection: false
}) })
@ -267,7 +266,7 @@ describe('Test user notifications API validators', function () {
}) })
it('Should success with the correct token', function (next) { it('Should success with the correct token', function (next) {
const socket = io('http://localhost:9001/user-notifications', { const socket = io(`http://localhost:${server.port}/user-notifications`, {
query: { accessToken: server.accessToken }, query: { accessToken: server.accessToken },
reconnection: false reconnection: false
}) })
@ -286,7 +285,7 @@ describe('Test user notifications API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,13 +3,12 @@
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
flushTests, flushAndRunServer,
killallServers,
makeDeleteRequest, makeDeleteRequest,
makeGetRequest, makeGetRequest,
makePostBodyRequest, makePostBodyRequest,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
userLogin userLogin
@ -113,7 +112,7 @@ describe('Test user subscriptions API validators', function () {
await makePostBodyRequest({ await makePostBodyRequest({
url: server.url, url: server.url,
path, path,
fields: { uri: 'user1_channel@localhost:9001' }, fields: { uri: 'user1_channel@localhost:' + server.port },
statusCodeExpected: 401 statusCodeExpected: 401
}) })
}) })
@ -151,7 +150,7 @@ describe('Test user subscriptions API validators', function () {
url: server.url, url: server.url,
path, path,
token: server.accessToken, token: server.accessToken,
fields: { uri: 'user1_channel@localhost:9001' }, fields: { uri: 'user1_channel@localhost:' + server.port },
statusCodeExpected: 204 statusCodeExpected: 204
}) })
@ -163,7 +162,7 @@ describe('Test user subscriptions API validators', function () {
it('Should fail with a non authenticated user', async function () { it('Should fail with a non authenticated user', async function () {
await makeGetRequest({ await makeGetRequest({
url: server.url, url: server.url,
path: path + '/user1_channel@localhost:9001', path: path + '/user1_channel@localhost:' + server.port,
statusCodeExpected: 401 statusCodeExpected: 401
}) })
}) })
@ -194,7 +193,7 @@ describe('Test user subscriptions API validators', function () {
it('Should fail with an unknown subscription', async function () { it('Should fail with an unknown subscription', async function () {
await makeGetRequest({ await makeGetRequest({
url: server.url, url: server.url,
path: path + '/root1@localhost:9001', path: path + '/root1@localhost:' + server.port,
token: server.accessToken, token: server.accessToken,
statusCodeExpected: 404 statusCodeExpected: 404
}) })
@ -203,7 +202,7 @@ describe('Test user subscriptions API validators', function () {
it('Should succeed with the correct parameters', async function () { it('Should succeed with the correct parameters', async function () {
await makeGetRequest({ await makeGetRequest({
url: server.url, url: server.url,
path: path + '/user1_channel@localhost:9001', path: path + '/user1_channel@localhost:' + server.port,
token: server.accessToken, token: server.accessToken,
statusCodeExpected: 200 statusCodeExpected: 200
}) })
@ -243,7 +242,7 @@ describe('Test user subscriptions API validators', function () {
await makeGetRequest({ await makeGetRequest({
url: server.url, url: server.url,
path: existPath, path: existPath,
query: { 'uris[]': 'coucou@localhost:9001' }, query: { 'uris[]': 'coucou@localhost:' + server.port },
token: server.accessToken, token: server.accessToken,
statusCodeExpected: 200 statusCodeExpected: 200
}) })
@ -254,7 +253,7 @@ describe('Test user subscriptions API validators', function () {
it('Should fail with a non authenticated user', async function () { it('Should fail with a non authenticated user', async function () {
await makeDeleteRequest({ await makeDeleteRequest({
url: server.url, url: server.url,
path: path + '/user1_channel@localhost:9001', path: path + '/user1_channel@localhost:' + server.port,
statusCodeExpected: 401 statusCodeExpected: 401
}) })
}) })
@ -285,7 +284,7 @@ describe('Test user subscriptions API validators', function () {
it('Should fail with an unknown subscription', async function () { it('Should fail with an unknown subscription', async function () {
await makeDeleteRequest({ await makeDeleteRequest({
url: server.url, url: server.url,
path: path + '/root1@localhost:9001', path: path + '/root1@localhost:' + server.port,
token: server.accessToken, token: server.accessToken,
statusCodeExpected: 404 statusCodeExpected: 404
}) })
@ -294,14 +293,14 @@ describe('Test user subscriptions API validators', function () {
it('Should succeed with the correct parameters', async function () { it('Should succeed with the correct parameters', async function () {
await makeDeleteRequest({ await makeDeleteRequest({
url: server.url, url: server.url,
path: path + '/user1_channel@localhost:9001', path: path + '/user1_channel@localhost:' + server.port,
token: server.accessToken, token: server.accessToken,
statusCodeExpected: 204 statusCodeExpected: 204
}) })
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -7,6 +7,7 @@ import { UserRole, VideoImport, VideoImportState } from '../../../../shared'
import { import {
blockUser, blockUser,
cleanupTests,
createUser, createUser,
deleteMe, deleteMe,
flushAndRunServer, flushAndRunServer,
@ -14,7 +15,6 @@ import {
getMyUserVideoRating, getMyUserVideoRating,
getUsersList, getUsersList,
immutableAssign, immutableAssign,
killallServers,
makeGetRequest, makeGetRequest,
makePostBodyRequest, makePostBodyRequest,
makePutBodyRequest, makePutBodyRequest,
@ -713,7 +713,7 @@ describe('Test users API validators', function () {
}) })
it('Should fail if we register a user with the same email', async function () { it('Should fail if we register a user with the same email', async function () {
const fields = immutableAssign(baseCorrectParams, { email: 'admin1@example.com' }) const fields = immutableAssign(baseCorrectParams, { email: 'admin' + server.internalServerNumber + '@example.com' })
await makePostBodyRequest({ await makePostBodyRequest({
url: server.url, url: server.url,
@ -897,7 +897,7 @@ describe('Test users API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server, serverWithRegistrationDisabled ]) await cleanupTests([ server, serverWithRegistrationDisabled ])
}) })
}) })

View File

@ -3,13 +3,12 @@
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
deleteVideoAbuse, deleteVideoAbuse,
flushTests, flushAndRunServer,
killallServers,
makeGetRequest, makeGetRequest,
makePostBodyRequest, makePostBodyRequest,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
updateVideoAbuse, updateVideoAbuse,
@ -188,7 +187,7 @@ describe('Test video abuses API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,6 +3,7 @@
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -247,7 +248,7 @@ describe('Test video blacklist API validators', function () {
}) })
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -2,13 +2,12 @@
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
flushTests, flushAndRunServer,
killallServers,
makeDeleteRequest, makeDeleteRequest,
makeGetRequest, makeGetRequest,
makeUploadRequest, makeUploadRequest,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo, uploadVideo,
@ -269,7 +268,7 @@ describe('Test video captions API validator', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -4,19 +4,16 @@ import * as chai from 'chai'
import { omit } from 'lodash' import { omit } from 'lodash'
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
deleteVideoChannel, deleteVideoChannel,
flushTests, flushAndRunServer,
getAccountVideoChannelsList, getAccountVideoChannelsList,
getMyUserInformation,
getVideoChannelsList,
immutableAssign, immutableAssign,
killallServers,
makeGetRequest, makeGetRequest,
makePostBodyRequest, makePostBodyRequest,
makePutBodyRequest, makePutBodyRequest,
makeUploadRequest, makeUploadRequest,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
userLogin userLogin
@ -26,7 +23,6 @@ import {
checkBadSortPagination, checkBadSortPagination,
checkBadStartPagination checkBadStartPagination
} from '../../../../shared/extra-utils/requests/check-api-params' } from '../../../../shared/extra-utils/requests/check-api-params'
import { User } from '../../../../shared/models/users'
import { join } from 'path' import { join } from 'path'
const expect = chai.expect const expect = chai.expect
@ -310,7 +306,7 @@ describe('Test video channels API validator', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,9 +3,9 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
flushAndRunServer, flushAndRunServer,
killallServers,
makeDeleteRequest, makeDeleteRequest,
makeGetRequest, makeGetRequest,
makePostBodyRequest, makePostBodyRequest,
@ -258,7 +258,7 @@ describe('Test video comments API validator', function () {
it('Should return conflict on comment thread add') it('Should return conflict on comment thread add')
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -5,15 +5,14 @@ import 'mocha'
import { join } from 'path' import { join } from 'path'
import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum' import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum'
import { import {
cleanupTests,
createUser, createUser,
flushTests, flushAndRunServer,
getMyUserInformation, getMyUserInformation,
immutableAssign, immutableAssign,
killallServers,
makeGetRequest, makeGetRequest,
makePostBodyRequest, makePostBodyRequest,
makeUploadRequest, makeUploadRequest,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
updateCustomSubConfig, updateCustomSubConfig,
@ -311,7 +310,7 @@ describe('Test video imports API validator', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,20 +3,20 @@
import 'mocha' import 'mocha'
import { import {
addVideoInPlaylist, addVideoInPlaylist,
cleanupTests,
createVideoPlaylist, createVideoPlaylist,
deleteVideoPlaylist, deleteVideoPlaylist,
flushTests, flushAndRunServer,
generateUserAccessToken, generateUserAccessToken,
getAccountPlaylistsListWithToken, getAccountPlaylistsListWithToken,
getVideoPlaylist, getVideoPlaylist,
immutableAssign, immutableAssign,
killallServers,
makeGetRequest, makeGetRequest,
removeVideoFromPlaylist, removeVideoFromPlaylist,
reorderVideosPlaylist, reorderVideosPlaylist,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setDefaultVideoChannel, setAccessTokensToServers,
setDefaultVideoChannel,
updateVideoPlaylist, updateVideoPlaylist,
updateVideoPlaylistElement, updateVideoPlaylistElement,
uploadVideoAndGetId uploadVideoAndGetId
@ -668,7 +668,7 @@ describe('Test video playlists API validator', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -2,14 +2,14 @@
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
createVideoPlaylist, createVideoPlaylist,
flushTests,
killallServers,
makeGetRequest,
flushAndRunServer, flushAndRunServer,
makeGetRequest,
ServerInfo, ServerInfo,
setAccessTokensToServers, setDefaultVideoChannel, setAccessTokensToServers,
setDefaultVideoChannel,
userLogin userLogin
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { UserRole } from '../../../../shared/models/users' import { UserRole } from '../../../../shared/models/users'
@ -129,7 +129,7 @@ describe('Test videos filters', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -5,12 +5,11 @@ import 'mocha'
import { import {
checkBadCountPagination, checkBadCountPagination,
checkBadStartPagination, checkBadStartPagination,
flushTests, cleanupTests,
killallServers, flushAndRunServer,
makeGetRequest, makeGetRequest,
makePostBodyRequest, makePostBodyRequest,
makePutBodyRequest, makePutBodyRequest,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo uploadVideo
@ -126,7 +125,7 @@ describe('Test videos history API validator', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -6,16 +6,28 @@ import 'mocha'
import { join } from 'path' import { join } from 'path'
import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum' import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum'
import { import {
createUser, flushTests, getMyUserInformation, getVideo, getVideosList, immutableAssign, killallServers, makeDeleteRequest, cleanupTests,
makeGetRequest, makeUploadRequest, makePutBodyRequest, removeVideo, uploadVideo, createUser,
flushAndRunServer, ServerInfo, setAccessTokensToServers, userLogin, updateCustomSubConfig flushAndRunServer,
getMyUserInformation,
getVideo,
getVideosList,
immutableAssign,
makeDeleteRequest,
makeGetRequest,
makePutBodyRequest,
makeUploadRequest,
removeVideo,
ServerInfo,
setAccessTokensToServers,
userLogin,
root
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { import {
checkBadCountPagination, checkBadCountPagination,
checkBadSortPagination, checkBadSortPagination,
checkBadStartPagination checkBadStartPagination
} from '../../../../shared/extra-utils/requests/check-api-params' } from '../../../../shared/extra-utils/requests/check-api-params'
import { getAccountsList } from '../../../../shared/extra-utils/users/accounts'
const expect = chai.expect const expect = chai.expect
@ -166,7 +178,7 @@ describe('Test videos API validator', function () {
describe('When adding a video', function () { describe('When adding a video', function () {
let baseCorrectParams let baseCorrectParams
const baseCorrectAttaches = { const baseCorrectAttaches = {
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short.webm') 'videofile': join(root(), 'server', 'tests', 'fixtures', 'video_short.webm')
} }
before(function () { before(function () {
@ -326,15 +338,15 @@ describe('Test videos API validator', function () {
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
it('Should fail without an incorrect input file', async function () { it('Should fail with an incorrect input file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
let attaches = { let attaches = {
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short_fake.webm') 'videofile': join(root(), 'server', 'tests', 'fixtures', 'video_short_fake.webm')
} }
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
attaches = { attaches = {
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short.mkv') 'videofile': join(root(), 'server', 'tests', 'fixtures', 'video_short.mkv')
} }
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
}) })
@ -342,8 +354,8 @@ describe('Test videos API validator', function () {
it('Should fail with an incorrect thumbnail file', async function () { it('Should fail with an incorrect thumbnail file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
const attaches = { const attaches = {
'thumbnailfile': join(__dirname, '..', '..', 'fixtures', 'avatar.png'), 'thumbnailfile': join(root(), 'server', 'tests', 'fixtures', 'avatar.png'),
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') 'videofile': join(root(), 'server', 'tests', 'fixtures', 'video_short.mp4')
} }
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
@ -352,8 +364,8 @@ describe('Test videos API validator', function () {
it('Should fail with a big thumbnail file', async function () { it('Should fail with a big thumbnail file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
const attaches = { const attaches = {
'thumbnailfile': join(__dirname, '..', '..', 'fixtures', 'avatar-big.png'), 'thumbnailfile': join(root(), 'server', 'tests', 'fixtures', 'avatar-big.png'),
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') 'videofile': join(root(), 'server', 'tests', 'fixtures', 'video_short.mp4')
} }
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
@ -362,8 +374,8 @@ describe('Test videos API validator', function () {
it('Should fail with an incorrect preview file', async function () { it('Should fail with an incorrect preview file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
const attaches = { const attaches = {
'previewfile': join(__dirname, '..', '..', 'fixtures', 'avatar.png'), 'previewfile': join(root(), 'server', 'tests', 'fixtures', 'avatar.png'),
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') 'videofile': join(root(), 'server', 'tests', 'fixtures', 'video_short.mp4')
} }
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
@ -372,8 +384,8 @@ describe('Test videos API validator', function () {
it('Should fail with a big preview file', async function () { it('Should fail with a big preview file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
const attaches = { const attaches = {
'previewfile': join(__dirname, '..', '..', 'fixtures', 'avatar-big.png'), 'previewfile': join(root(), 'server', 'tests', 'fixtures', 'avatar-big.png'),
'videofile': join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') 'videofile': join(root(), 'server', 'tests', 'fixtures', 'video_short.mp4')
} }
await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches })
@ -398,7 +410,7 @@ describe('Test videos API validator', function () {
{ {
const attaches = immutableAssign(baseCorrectAttaches, { const attaches = immutableAssign(baseCorrectAttaches, {
videofile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') videofile: join(root(), 'server', 'tests', 'fixtures', 'video_short.mp4')
}) })
await makeUploadRequest({ await makeUploadRequest({
@ -413,7 +425,7 @@ describe('Test videos API validator', function () {
{ {
const attaches = immutableAssign(baseCorrectAttaches, { const attaches = immutableAssign(baseCorrectAttaches, {
videofile: join(__dirname, '..', '..', 'fixtures', 'video_short.ogv') videofile: join(root(), 'server', 'tests', 'fixtures', 'video_short.ogv')
}) })
await makeUploadRequest({ await makeUploadRequest({
@ -550,7 +562,7 @@ describe('Test videos API validator', function () {
it('Should fail with an incorrect thumbnail file', async function () { it('Should fail with an incorrect thumbnail file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
const attaches = { const attaches = {
'thumbnailfile': join(__dirname, '..', '..', 'fixtures', 'avatar.png') 'thumbnailfile': join(root(), 'server', 'tests', 'fixtures', 'avatar.png')
} }
await makeUploadRequest({ await makeUploadRequest({
@ -566,7 +578,7 @@ describe('Test videos API validator', function () {
it('Should fail with a big thumbnail file', async function () { it('Should fail with a big thumbnail file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
const attaches = { const attaches = {
'thumbnailfile': join(__dirname, '..', '..', 'fixtures', 'avatar-big.png') 'thumbnailfile': join(root(), 'server', 'tests', 'fixtures', 'avatar-big.png')
} }
await makeUploadRequest({ await makeUploadRequest({
@ -582,7 +594,7 @@ describe('Test videos API validator', function () {
it('Should fail with an incorrect preview file', async function () { it('Should fail with an incorrect preview file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
const attaches = { const attaches = {
'previewfile': join(__dirname, '..', '..', 'fixtures', 'avatar.png') 'previewfile': join(root(), 'server', 'tests', 'fixtures', 'avatar.png')
} }
await makeUploadRequest({ await makeUploadRequest({
@ -598,7 +610,7 @@ describe('Test videos API validator', function () {
it('Should fail with a big preview file', async function () { it('Should fail with a big preview file', async function () {
const fields = baseCorrectParams const fields = baseCorrectParams
const attaches = { const attaches = {
'previewfile': join(__dirname, '..', '..', 'fixtures', 'avatar-big.png') 'previewfile': join(root(), 'server', 'tests', 'fixtures', 'avatar-big.png')
} }
await makeUploadRequest({ await makeUploadRequest({
@ -728,7 +740,7 @@ describe('Test videos API validator', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -19,7 +19,7 @@ import {
userLogin, userLogin,
wait, wait,
getCustomConfig, getCustomConfig,
updateCustomConfig, getVideoThreadComments, getVideoCommentThreads, follow updateCustomConfig, getVideoThreadComments, getVideoCommentThreads, follow, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { killallServers, ServerInfo, uploadVideo } from '../../../../shared/extra-utils/index' import { killallServers, ServerInfo, uploadVideo } from '../../../../shared/extra-utils/index'
import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login' import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login'
@ -1295,9 +1295,9 @@ describe('Test users notifications', function () {
}) })
}) })
after(function () { after(async function () {
MockSmtpServer.Instance.kill() MockSmtpServer.Instance.kill()
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -5,7 +5,7 @@ import 'mocha'
import { VideoDetails } from '../../../../shared/models/videos' import { VideoDetails } from '../../../../shared/models/videos'
import { import {
checkSegmentHash, checkSegmentHash,
checkVideoFilesWereRemoved, checkVideoFilesWereRemoved, cleanupTests,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getFollowingListPaginationAndSort, getFollowingListPaginationAndSort,
@ -52,7 +52,7 @@ function checkMagnetWebseeds (file: { magnetUri: string, resolution: { id: numbe
expect(parsed.urlList).to.have.lengthOf(baseWebseeds.length) expect(parsed.urlList).to.have.lengthOf(baseWebseeds.length)
} }
async function runServers (strategy: VideoRedundancyStrategy, additionalParams: any = {}) { async function flushAndRunServers (strategy: VideoRedundancyStrategy, additionalParams: any = {}) {
const config = { const config = {
transcoding: { transcoding: {
hls: { hls: {
@ -264,10 +264,6 @@ async function disableRedundancyOnServer1 () {
expect(server2.following.hostRedundancyAllowed).to.be.false expect(server2.following.hostRedundancyAllowed).to.be.false
} }
async function cleanServers () {
killallServers(servers)
}
describe('Test videos redundancy', function () { describe('Test videos redundancy', function () {
describe('With most-views strategy', function () { describe('With most-views strategy', function () {
@ -276,7 +272,7 @@ describe('Test videos redundancy', function () {
before(function () { before(function () {
this.timeout(120000) this.timeout(120000)
return runServers(strategy) return flushAndRunServers(strategy)
}) })
it('Should have 1 webseed on the first video', async function () { it('Should have 1 webseed on the first video', async function () {
@ -315,8 +311,8 @@ describe('Test videos redundancy', function () {
await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos', join('playlists', 'hls') ]) await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos', join('playlists', 'hls') ])
}) })
after(function () { after(async function () {
return cleanServers() return cleanupTests(servers)
}) })
}) })
@ -326,7 +322,7 @@ describe('Test videos redundancy', function () {
before(function () { before(function () {
this.timeout(120000) this.timeout(120000)
return runServers(strategy) return flushAndRunServers(strategy)
}) })
it('Should have 1 webseed on the first video', async function () { it('Should have 1 webseed on the first video', async function () {
@ -365,8 +361,8 @@ describe('Test videos redundancy', function () {
await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos' ]) await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos' ])
}) })
after(function () { after(async function () {
return cleanServers() await cleanupTests(servers)
}) })
}) })
@ -376,7 +372,7 @@ describe('Test videos redundancy', function () {
before(function () { before(function () {
this.timeout(120000) this.timeout(120000)
return runServers(strategy, { min_views: 3 }) return flushAndRunServers(strategy, { min_views: 3 })
}) })
it('Should have 1 webseed on the first video', async function () { it('Should have 1 webseed on the first video', async function () {
@ -435,8 +431,8 @@ describe('Test videos redundancy', function () {
} }
}) })
after(function () { after(async function () {
return cleanServers() await cleanupTests(servers)
}) })
}) })
@ -468,7 +464,7 @@ describe('Test videos redundancy', function () {
before(async function () { before(async function () {
this.timeout(120000) this.timeout(120000)
await runServers(strategy, { min_lifetime: '7 seconds', min_views: 0 }) await flushAndRunServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
await enableRedundancyOnServer1() await enableRedundancyOnServer1()
}) })
@ -498,8 +494,8 @@ describe('Test videos redundancy', function () {
await checkNotContains([ servers[1], servers[2] ], 'http%3A%2F%2Flocalhost%3A9001') await checkNotContains([ servers[1], servers[2] ], 'http%3A%2F%2Flocalhost%3A9001')
}) })
after(function () { after(async function () {
return killallServers([ servers[1], servers[2] ]) await cleanupTests(servers)
}) })
}) })
@ -510,7 +506,7 @@ describe('Test videos redundancy', function () {
before(async function () { before(async function () {
this.timeout(120000) this.timeout(120000)
await runServers(strategy, { min_lifetime: '7 seconds', min_views: 0 }) await flushAndRunServers(strategy, { min_lifetime: '7 seconds', min_views: 0 })
await enableRedundancyOnServer1() await enableRedundancyOnServer1()
@ -569,8 +565,8 @@ describe('Test videos redundancy', function () {
await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ join('redundancy', 'hls') ]) await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ join('redundancy', 'hls') ])
}) })
after(function () { after(async function () {
return cleanServers() await cleanupTests(servers)
}) })
}) })
}) })

View File

@ -3,7 +3,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
addVideoChannel, addVideoChannel, cleanupTests,
createUser, createUser,
deleteVideoChannel, deleteVideoChannel,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -205,7 +205,7 @@ describe('Test a ActivityPub video channels search', function () {
expect(res.body.data).to.have.lengthOf(0) expect(res.body.data).to.have.lengthOf(0)
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -15,7 +15,7 @@ import {
updateVideo, updateVideo,
uploadVideo, uploadVideo,
wait, wait,
searchVideo searchVideo, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { waitJobs } from '../../../../shared/extra-utils/server/jobs' import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import { Video, VideoPrivacy } from '../../../../shared/models/videos' import { Video, VideoPrivacy } from '../../../../shared/models/videos'
@ -149,7 +149,7 @@ describe('Test a ActivityPub videos search', function () {
expect(res.body.data).to.have.lengthOf(0) expect(res.body.data).to.have.lengthOf(0)
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -12,7 +12,8 @@ import {
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo, uploadVideo,
wait, wait,
immutableAssign immutableAssign,
cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
const expect = chai.expect const expect = chai.expect
@ -405,7 +406,7 @@ describe('Test a videos search', function () {
} }
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -5,15 +5,15 @@ import * as chai from 'chai'
import { About } from '../../../../shared/models/server/about.model' import { About } from '../../../../shared/models/server/about.model'
import { CustomConfig } from '../../../../shared/models/server/custom-config.model' import { CustomConfig } from '../../../../shared/models/server/custom-config.model'
import { import {
cleanupTests,
deleteCustomConfig, deleteCustomConfig,
flushAndRunServer,
getAbout, getAbout,
killallServers,
reRunServer,
flushTests,
getConfig, getConfig,
getCustomConfig, getCustomConfig,
killallServers,
registerUser, registerUser,
flushAndRunServer, reRunServer,
setAccessTokensToServers, setAccessTokensToServers,
updateCustomConfig updateCustomConfig
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
@ -300,7 +300,7 @@ describe('Test config', function () {
checkInitialConfig(data) checkInitialConfig(data)
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -2,7 +2,15 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { flushTests, killallServers, flushAndRunServer, ServerInfo, setAccessTokensToServers, wait } from '../../../../shared/extra-utils' import {
flushTests,
killallServers,
flushAndRunServer,
ServerInfo,
setAccessTokensToServers,
wait,
cleanupTests
} from '../../../../shared/extra-utils'
import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email' import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email'
import { waitJobs } from '../../../../shared/extra-utils/server/jobs' import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import { sendContactForm } from '../../../../shared/extra-utils/server/contact-form' import { sendContactForm } from '../../../../shared/extra-utils/server/contact-form'
@ -78,8 +86,9 @@ describe('Test contact form', function () {
}) })
}) })
after(function () { after(async function () {
MockSmtpServer.Instance.kill() MockSmtpServer.Instance.kill()
killallServers([ server ])
await cleanupTests([ server ])
}) })
}) })

View File

@ -18,7 +18,7 @@ import {
flushTests, flushTests,
killallServers, killallServers,
ServerInfo, ServerInfo,
setAccessTokensToServers setAccessTokensToServers, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email' import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email'
import { waitJobs } from '../../../../shared/extra-utils/server/jobs' import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
@ -256,8 +256,9 @@ describe('Test emails', function () {
}) })
}) })
after(function () { after(async function () {
MockSmtpServer.Instance.kill() MockSmtpServer.Instance.kill()
killallServers([ server ])
await cleanupTests([ server ])
}) })
}) })

View File

@ -12,7 +12,7 @@ import {
killallServers, killallServers,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo uploadVideo, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { unfollow } from '../../../../shared/extra-utils/server/follows' import { unfollow } from '../../../../shared/extra-utils/server/follows'
import { userLogin } from '../../../../shared/extra-utils/users/login' import { userLogin } from '../../../../shared/extra-utils/users/login'
@ -219,7 +219,7 @@ describe('Test follow constraints', function () {
}) })
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -3,7 +3,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
acceptFollower, acceptFollower, cleanupTests,
flushAndRunMultipleServers, flushAndRunMultipleServers,
killallServers, killallServers,
ServerInfo, ServerInfo,
@ -189,7 +189,7 @@ describe('Test follows moderation', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,7 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { Video, VideoPrivacy } from '../../../../shared/models/videos' import { Video, VideoPrivacy } from '../../../../shared/models/videos'
import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
import { completeVideoCheck } from '../../../../shared/extra-utils' import { cleanupTests, completeVideoCheck } from '../../../../shared/extra-utils'
import { import {
flushAndRunMultipleServers, flushAndRunMultipleServers,
getVideosList, getVideosList,
@ -435,7 +435,7 @@ describe('Test follows', function () {
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -7,6 +7,7 @@ import { VideoPrivacy } from '../../../../shared/models/videos'
import { VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' import { VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
import { import {
cleanupTests,
completeVideoCheck, completeVideoCheck,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getVideo, getVideo,
@ -296,7 +297,7 @@ describe('Test handle downs', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -2,7 +2,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { killallServers, ServerInfo, setAccessTokensToServers } from '../../../../shared/extra-utils/index' import { cleanupTests, killallServers, ServerInfo, setAccessTokensToServers } from '../../../../shared/extra-utils/index'
import { doubleFollow } from '../../../../shared/extra-utils/server/follows' import { doubleFollow } from '../../../../shared/extra-utils/server/follows'
import { getJobsList, getJobsListPaginationAndSort, waitJobs } from '../../../../shared/extra-utils/server/jobs' import { getJobsList, getJobsListPaginationAndSort, waitJobs } from '../../../../shared/extra-utils/server/jobs'
import { flushAndRunMultipleServers } from '../../../../shared/extra-utils/server/servers' import { flushAndRunMultipleServers } from '../../../../shared/extra-utils/server/servers'
@ -56,7 +56,7 @@ describe('Test jobs', function () {
expect(dateIsValid(job.finishedOn)).to.be.true expect(dateIsValid(job.finishedOn)).to.be.true
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -2,7 +2,14 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { flushTests, killallServers, flushAndRunServer, ServerInfo, setAccessTokensToServers } from '../../../../shared/extra-utils/index' import {
flushTests,
killallServers,
flushAndRunServer,
ServerInfo,
setAccessTokensToServers,
cleanupTests
} from '../../../../shared/extra-utils/index'
import { waitJobs } from '../../../../shared/extra-utils/server/jobs' import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import { uploadVideo } from '../../../../shared/extra-utils/videos/videos' import { uploadVideo } from '../../../../shared/extra-utils/videos/videos'
import { getLogs } from '../../../../shared/extra-utils/logs/logs' import { getLogs } from '../../../../shared/extra-utils/logs/logs'
@ -84,7 +91,7 @@ describe('Test logs', function () {
} }
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -1,11 +1,7 @@
import 'mocha' import 'mocha'
import * as request from 'supertest' import * as request from 'supertest'
import { import { ServerInfo } from '../../../../shared/extra-utils'
flushTests, import { cleanupTests, flushAndRunServer } from '../../../../shared/extra-utils/server/servers'
killallServers,
ServerInfo
} from '../../../../shared/extra-utils'
import { flushAndRunServer } from '../../../../shared/extra-utils/server/servers'
describe('Start and stop server without web client routes', function () { describe('Start and stop server without web client routes', function () {
let server: ServerInfo let server: ServerInfo
@ -23,7 +19,7 @@ describe('Start and stop server without web client routes', function () {
return req.expect(404) return req.expect(404)
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -2,28 +2,10 @@
import 'mocha' import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import { About } from '../../../../shared/models/server/about.model' import { cleanupTests, getVideo, uploadVideo, userLogin, viewVideo, wait } from '../../../../shared/extra-utils'
import { CustomConfig } from '../../../../shared/models/server/custom-config.model' import { flushAndRunServer, setAccessTokensToServers } from '../../../../shared/extra-utils/index'
import {
deleteCustomConfig,
getAbout,
getVideo,
killallServers,
login,
reRunServer,
uploadVideo,
userLogin,
viewVideo,
wait
} from '../../../../shared/extra-utils'
const expect = chai.expect
import { const expect = chai.expect
getConfig,
flushTests,
flushAndRunServer,
registerUser, getCustomConfig, setAccessTokensToServers, updateCustomConfig
} from '../../../../shared/extra-utils/index'
describe('Test application behind a reverse proxy', function () { describe('Test application behind a reverse proxy', function () {
let server = null let server = null
@ -100,7 +82,7 @@ describe('Test application behind a reverse proxy', function () {
await userLogin(server, user, 429) await userLogin(server, user, 429)
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -4,6 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { ServerStats } from '../../../../shared/models/server/server-stats.model' import { ServerStats } from '../../../../shared/models/server/server-stats.model'
import { import {
cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -95,7 +96,7 @@ describe('Test stats (excluding redundancy)', function () {
expect(data.totalInstanceFollowers).to.equal(0) expect(data.totalInstanceFollowers).to.equal(0)
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -2,8 +2,16 @@
import * as magnetUtil from 'magnet-uri' import * as magnetUtil from 'magnet-uri'
import 'mocha' import 'mocha'
import { getVideo, killallServers, reRunServer, flushAndRunServer, ServerInfo, uploadVideo } from '../../../../shared/extra-utils' import {
import { flushTests, setAccessTokensToServers } from '../../../../shared/extra-utils/index' cleanupTests,
flushAndRunServer,
getVideo,
killallServers,
reRunServer,
ServerInfo,
uploadVideo
} from '../../../../shared/extra-utils'
import { setAccessTokensToServers } from '../../../../shared/extra-utils/index'
import { VideoDetails } from '../../../../shared/models/videos' import { VideoDetails } from '../../../../shared/models/videos'
import * as WebTorrent from 'webtorrent' import * as WebTorrent from 'webtorrent'
@ -82,7 +90,7 @@ describe('Test tracker', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -4,6 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { AccountBlock, ServerBlock, Video } from '../../../../shared/index' import { AccountBlock, ServerBlock, Video } from '../../../../shared/index'
import { import {
cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -498,7 +499,7 @@ describe('Test blocklist', function () {
}) })
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -3,6 +3,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -368,7 +369,7 @@ describe('Test users subscriptions', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -5,7 +5,7 @@ import 'mocha'
import { Account } from '../../../../shared/models/actors' import { Account } from '../../../../shared/models/actors'
import { import {
checkTmpIsEmpty, checkTmpIsEmpty,
checkVideoFilesWereRemoved, checkVideoFilesWereRemoved, cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -235,7 +235,7 @@ describe('Test users with multiple servers', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,7 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
registerUser, flushTests, getUserInformation, getMyUserInformation, killallServers, registerUser, flushTests, getUserInformation, getMyUserInformation, killallServers,
userLogin, login, flushAndRunServer, ServerInfo, verifyEmail, updateCustomSubConfig, wait userLogin, login, flushAndRunServer, ServerInfo, verifyEmail, updateCustomSubConfig, wait, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login' import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login'
import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email' import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email'
@ -120,8 +120,9 @@ describe('Test users account verification', function () {
await userLogin(server, user2) await userLogin(server, user2)
}) })
after(function () { after(async function () {
MockSmtpServer.Instance.kill() MockSmtpServer.Instance.kill()
killallServers([ server ])
await cleanupTests([ server ])
}) })
}) })

View File

@ -5,9 +5,10 @@ import 'mocha'
import { User, UserRole } from '../../../../shared/index' import { User, UserRole } from '../../../../shared/index'
import { import {
blockUser, blockUser,
cleanupTests,
createUser, createUser,
deleteMe, deleteMe,
flushTests, flushAndRunServer,
getAccountRatings, getAccountRatings,
getBlacklistedVideosList, getBlacklistedVideosList,
getMyUserInformation, getMyUserInformation,
@ -17,14 +18,12 @@ import {
getUsersList, getUsersList,
getUsersListPaginationAndSort, getUsersListPaginationAndSort,
getVideosList, getVideosList,
killallServers,
login, login,
makePutBodyRequest, makePutBodyRequest,
rateVideo, rateVideo,
registerUser, registerUser,
removeUser, removeUser,
removeVideo, removeVideo,
flushAndRunServer,
ServerInfo, ServerInfo,
testImage, testImage,
unblockUser, unblockUser,
@ -677,7 +676,7 @@ describe('Test users', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -9,7 +9,7 @@ import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/
import { import {
addVideoChannel, addVideoChannel,
checkTmpIsEmpty, checkTmpIsEmpty,
checkVideoFilesWereRemoved, checkVideoFilesWereRemoved, cleanupTests,
completeVideoCheck, completeVideoCheck,
createUser, createUser,
dateIsValid, dateIsValid,
@ -1029,7 +1029,7 @@ describe('Test multiple servers', function () {
}) })
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -2,16 +2,8 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import { getOEmbed, getVideosList, ServerInfo, setAccessTokensToServers, uploadVideo } from '../../../../shared/extra-utils/index'
flushTests, import { cleanupTests, flushAndRunServer } from '../../../../shared/extra-utils/server/servers'
getOEmbed,
getVideosList,
killallServers,
ServerInfo,
setAccessTokensToServers,
uploadVideo
} from '../../../../shared/extra-utils/index'
import { flushAndRunServer } from '../../../../shared/extra-utils/server/servers'
const expect = chai.expect const expect = chai.expect
@ -74,7 +66,7 @@ describe('Test services', function () {
expect(res.body).to.not.have.property('thumbnail_height') expect(res.body).to.not.have.property('thumbnail_height')
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -6,8 +6,9 @@ import 'mocha'
import { VideoPrivacy } from '../../../../shared/models/videos' import { VideoPrivacy } from '../../../../shared/models/videos'
import { import {
checkVideoFilesWereRemoved, checkVideoFilesWereRemoved,
cleanupTests,
completeVideoCheck, completeVideoCheck,
flushTests, flushAndRunServer,
getVideo, getVideo,
getVideoCategories, getVideoCategories,
getVideoLanguages, getVideoLanguages,
@ -17,10 +18,8 @@ import {
getVideosListPagination, getVideosListPagination,
getVideosListSort, getVideosListSort,
getVideosWithFilters, getVideosWithFilters,
killallServers,
rateVideo, rateVideo,
removeVideo, removeVideo,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
testImage, testImage,
@ -424,7 +423,7 @@ describe('Test a single server', function () {
expect(video.dislikes).to.equal(1) expect(video.dislikes).to.equal(1)
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -4,6 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { VideoAbuse, VideoAbuseState } from '../../../../shared/models/videos' import { VideoAbuse, VideoAbuseState } from '../../../../shared/models/videos'
import { import {
cleanupTests,
deleteVideoAbuse, deleteVideoAbuse,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getVideoAbusesList, getVideoAbusesList,
@ -172,7 +173,7 @@ describe('Test video abuses', function () {
expect(res.body.data.length).to.equal(0) expect(res.body.data.length).to.equal(0)
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,7 +4,7 @@ import * as chai from 'chai'
import { orderBy } from 'lodash' import { orderBy } from 'lodash'
import 'mocha' import 'mocha'
import { import {
addVideoToBlacklist, addVideoToBlacklist, cleanupTests,
createUser, createUser,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getBlacklistedVideosList, getBlacklistedVideosList,
@ -425,7 +425,7 @@ describe('Test video blacklist', function () {
}) })
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -3,7 +3,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
checkVideoFilesWereRemoved, checkVideoFilesWereRemoved, cleanupTests,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
removeVideo, removeVideo,
@ -195,7 +195,7 @@ describe('Test video captions', function () {
await checkVideoFilesWereRemoved(videoUUID, 1) await checkVideoFilesWereRemoved(videoUUID, 1)
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,7 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
acceptChangeOwnership, acceptChangeOwnership,
changeVideoOwnership, changeVideoOwnership, cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -297,7 +297,7 @@ describe('Test video change ownership - quota too small', function () {
await acceptChangeOwnership(server.url, secondUserAccessToken, lastRequestChangeOwnershipId, channelId, 403) await acceptChangeOwnership(server.url, secondUserAccessToken, lastRequestChangeOwnershipId, channelId, 403)
}) })
after(function () { after(async function () {
killallServers([server]) await cleanupTests([ server ])
}) })
}) })

View File

@ -4,6 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { User, Video } from '../../../../shared/index' import { User, Video } from '../../../../shared/index'
import { import {
cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -277,7 +278,7 @@ describe('Test video channels', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -3,11 +3,9 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model'
import { testImage } from '../../../../shared/extra-utils' import { cleanupTests, testImage } from '../../../../shared/extra-utils'
import { import {
dateIsValid, dateIsValid,
flushTests,
killallServers,
flushAndRunServer, flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
@ -199,7 +197,7 @@ describe('Test video comments', function () {
expect(res.body.data[1].totalReplies).to.equal(0) expect(res.body.data[1].totalReplies).to.equal(0)
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,6 +3,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
cleanupTests,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getVideo, getVideo,
getVideoDescription, getVideoDescription,
@ -99,7 +100,7 @@ describe('Test video description', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -5,7 +5,7 @@ import 'mocha'
import { import {
checkDirectoryIsEmpty, checkDirectoryIsEmpty,
checkSegmentHash, checkSegmentHash,
checkTmpIsEmpty, checkTmpIsEmpty, cleanupTests,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
flushTests, flushTests,
@ -128,7 +128,7 @@ describe('Test HLS videos', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,6 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { VideoDetails, VideoImport, VideoPrivacy } from '../../../../shared/models/videos' import { VideoDetails, VideoImport, VideoPrivacy } from '../../../../shared/models/videos'
import { import {
cleanupTests,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getMyUserInformation, getMyUserInformation,
@ -241,7 +242,7 @@ describe('Test video imports', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -2,25 +2,18 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import { cleanupTests, getVideosList, ServerInfo, setAccessTokensToServers, uploadVideo } from '../../../../shared/extra-utils/index'
flushTests,
getVideosList,
killallServers,
ServerInfo,
setAccessTokensToServers,
uploadVideo
} from '../../../../shared/extra-utils/index'
import { userLogin } from '../../../../shared/extra-utils/users/login' import { userLogin } from '../../../../shared/extra-utils/users/login'
import { createUser } from '../../../../shared/extra-utils/users/users' import { createUser } from '../../../../shared/extra-utils/users/users'
import { getMyVideos } from '../../../../shared/extra-utils/videos/videos' import { getMyVideos } from '../../../../shared/extra-utils/videos/videos'
import { import {
flushAndRunServer,
getAccountVideos, getAccountVideos,
getConfig, getConfig,
getCustomConfig, getCustomConfig,
getMyUserInformation, getMyUserInformation,
getVideoChannelVideos, getVideoChannelVideos,
getVideosListWithToken, getVideosListWithToken,
flushAndRunServer,
searchVideo, searchVideo,
searchVideoWithToken, searchVideoWithToken,
updateCustomConfig, updateCustomConfig,
@ -241,7 +234,7 @@ describe('Test video NSFW policy', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -5,7 +5,7 @@ import 'mocha'
import { import {
addVideoChannel, addVideoChannel,
addVideoInPlaylist, addVideoInPlaylist,
checkPlaylistFilesWereRemoved, checkPlaylistFilesWereRemoved, cleanupTests,
createUser, createUser,
createVideoPlaylist, createVideoPlaylist,
deleteVideoChannel, deleteVideoChannel,
@ -860,7 +860,7 @@ describe('Test video playlists', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,6 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum' import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum'
import { import {
cleanupTests,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getVideosList, getVideosList,
killallServers, killallServers,
@ -152,7 +153,7 @@ describe('Test video privacy', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,6 +4,7 @@ import * as chai from 'chai'
import 'mocha' import 'mocha'
import { VideoPrivacy } from '../../../../shared/models/videos' import { VideoPrivacy } from '../../../../shared/models/videos'
import { import {
cleanupTests,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
getMyVideos, getMyVideos,
@ -165,7 +166,7 @@ describe('Test video update scheduler', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -6,7 +6,7 @@ import { omit } from 'lodash'
import { getMaxBitrate, VideoDetails, VideoResolution, VideoState } from '../../../../shared/models/videos' import { getMaxBitrate, VideoDetails, VideoResolution, VideoState } from '../../../../shared/models/videos'
import { audio, getVideoFileBitrate, getVideoFileFPS, getVideoFileResolution } from '../../../helpers/ffmpeg-utils' import { audio, getVideoFileBitrate, getVideoFileFPS, getVideoFileResolution } from '../../../helpers/ffmpeg-utils'
import { import {
buildAbsoluteFixturePath, buildAbsoluteFixturePath, cleanupTests,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
generateHighBitrateVideo, generateHighBitrateVideo,
@ -349,7 +349,7 @@ describe('Test video transcoding', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -3,6 +3,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -119,7 +120,7 @@ describe('Test videos filter validator', function () {
}) })
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -3,12 +3,13 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
flushTests, flushAndRunServer,
getVideosListWithToken, getVideosListWithToken,
getVideoWithToken, getVideoWithToken,
killallServers, reRunServer, killallServers,
flushAndRunServer, reRunServer,
searchVideoWithToken, searchVideoWithToken,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
@ -220,7 +221,7 @@ describe('Test videos history', function () {
expect(res.body.total).to.equal(0) expect(res.body.total).to.equal(0)
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -2,7 +2,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { flushAndRunServer, killallServers, ServerInfo, setAccessTokensToServers, uploadVideo } from '../../../../shared/extra-utils' import { cleanupTests, flushAndRunServer, ServerInfo, setAccessTokensToServers, uploadVideo } from '../../../../shared/extra-utils'
import { getVideosOverview } from '../../../../shared/extra-utils/overviews/overviews' import { getVideosOverview } from '../../../../shared/extra-utils/overviews/overviews'
import { VideosOverview } from '../../../../shared/models/overviews' import { VideosOverview } from '../../../../shared/models/overviews'
@ -87,7 +87,7 @@ describe('Test a videos overview', function () {
expect(overview.channels[0].channel.name).to.equal('root_channel') expect(overview.channels[0].channel.name).to.equal('root_channel')
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -10,7 +10,7 @@ import {
flushAndRunServer, flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo, uploadVideoAndGetId, viewVideo, wait, countVideoViewsOf, doubleFollow, waitJobs uploadVideo, uploadVideoAndGetId, viewVideo, wait, countVideoViewsOf, doubleFollow, waitJobs, cleanupTests
} from '../../../../shared/extra-utils' } from '../../../../shared/extra-utils'
import { getVideosOverview } from '../../../../shared/extra-utils/overviews/overviews' import { getVideosOverview } from '../../../../shared/extra-utils/overviews/overviews'
import { VideosOverview } from '../../../../shared/models/overviews' import { VideosOverview } from '../../../../shared/models/overviews'
@ -100,7 +100,7 @@ describe('Test video views cleaner', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,6 +4,7 @@ import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import { VideoDetails, VideoFile } from '../../../shared/models/videos' import { VideoDetails, VideoFile } from '../../../shared/models/videos'
import { import {
cleanupTests,
doubleFollow, doubleFollow,
execCLI, execCLI,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -130,7 +131,7 @@ describe('Test create import video jobs', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,6 +4,7 @@ import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import { VideoDetails } from '../../../shared/models/videos' import { VideoDetails } from '../../../shared/models/videos'
import { import {
cleanupTests,
doubleFollow, doubleFollow,
execCLI, execCLI,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -124,7 +125,7 @@ describe('Test create transcoding jobs', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,6 +4,7 @@ import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import { getMaxBitrate, Video, VideoDetails, VideoResolution } from '../../../shared/models/videos' import { getMaxBitrate, Video, VideoDetails, VideoResolution } from '../../../shared/models/videos'
import { import {
cleanupTests,
doubleFollow, doubleFollow,
execCLI, execCLI,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -112,7 +113,7 @@ describe('Test optimize old videos', function () {
} }
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -10,7 +10,7 @@ import {
killallServers, killallServers,
flushAndRunServer, flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers setAccessTokensToServers, cleanupTests
} from '../../../shared/extra-utils' } from '../../../shared/extra-utils'
describe('Test CLI wrapper', function () { describe('Test CLI wrapper', function () {
@ -46,6 +46,6 @@ describe('Test CLI wrapper', function () {
await execCLI(cmd + ` auth del ${server.url}`) await execCLI(cmd + ` auth del ${server.url}`)
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -1,13 +1,12 @@
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
execCLI, execCLI,
flushTests,
getEnvCli,
killallServers,
login,
flushAndRunServer, flushAndRunServer,
getEnvCli,
login,
ServerInfo, ServerInfo,
setAccessTokensToServers setAccessTokensToServers
} from '../../../shared/extra-utils' } from '../../../shared/extra-utils'
@ -32,7 +31,7 @@ describe('Test reset password scripts', function () {
await login(server.url, server.client, { username: 'user_1', password: 'coucou' }, 200) await login(server.url, server.client, { username: 'user_1', password: 'coucou' }, 200)
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -7,17 +7,17 @@ import { waitJobs } from '../../../shared/extra-utils/server/jobs'
import { addVideoCommentThread } from '../../../shared/extra-utils/videos/video-comments' import { addVideoCommentThread } from '../../../shared/extra-utils/videos/video-comments'
import { import {
addVideoChannel, addVideoChannel,
cleanupTests,
createUser, createUser,
execCLI, execCLI,
flushTests, flushAndRunServer,
getEnvCli, getEnvCli,
getVideo, getVideo,
getVideoChannelsList, getVideoChannelsList,
getVideosList, getVideosList,
killallServers, killallServers,
makeActivityPubGetRequest, makeActivityPubGetRequest,
parseTorrentVideo, parseTorrentVideo, reRunServer,
flushAndRunServer,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo uploadVideo
@ -70,7 +70,7 @@ describe('Test update host scripts', function () {
killallServers([ server ]) killallServers([ server ])
// Run server with standard configuration // Run server with standard configuration
server = await flushAndRunServer(2) await reRunServer(server)
const env = getEnvCli(server) const env = getEnvCli(server)
await execCLI(`${env} npm run update-host`) await execCLI(`${env} npm run update-host`)
@ -146,7 +146,7 @@ describe('Test update host scripts', function () {
} }
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -4,12 +4,11 @@ import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import * as request from 'supertest' import * as request from 'supertest'
import { import {
flushTests, cleanupTests,
flushAndRunServer,
getCustomConfig, getCustomConfig,
getVideosList, getVideosList,
killallServers,
makeHTMLRequest, makeHTMLRequest,
flushAndRunServer,
ServerInfo, ServerInfo,
serverLogin, serverLogin,
updateCustomConfig, updateCustomConfig,
@ -145,7 +144,7 @@ describe('Test a client controllers', function () {
checkIndexTags(res.text, 'PeerTube updated', 'my short description', 'body { background-color: red; }') checkIndexTags(res.text, 'PeerTube updated', 'my short description', 'body { background-color: red; }')
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -3,6 +3,7 @@
import * as chai from 'chai' import * as chai from 'chai'
import 'mocha' import 'mocha'
import { import {
cleanupTests,
createUser, createUser,
doubleFollow, doubleFollow,
flushAndRunMultipleServers, flushAndRunMultipleServers,
@ -207,7 +208,7 @@ describe('Test syndication feeds', () => {
}) })
}) })
after(function () { after(async function () {
killallServers(servers) await cleanupTests(servers)
}) })
}) })

View File

@ -4,11 +4,10 @@ import 'mocha'
import * as chai from 'chai' import * as chai from 'chai'
import { import {
addVideoChannel, addVideoChannel,
cleanupTests,
createUser, createUser,
flushTests,
killallServers,
makeGetRequest,
flushAndRunServer, flushAndRunServer,
makeGetRequest,
ServerInfo, ServerInfo,
setAccessTokensToServers, setAccessTokensToServers,
uploadVideo uploadVideo
@ -171,7 +170,7 @@ describe('Test misc endpoints', function () {
}) })
}) })
after(function () { after(async function () {
killallServers([ server ]) await cleanupTests([ server ])
}) })
}) })

View File

@ -0,0 +1,7 @@
function randomInt (low: number, high: number) {
return Math.floor(Math.random() * (high - low) + low)
}
export {
randomInt
}

View File

@ -6,7 +6,7 @@ process.on('message', (msg) => {
if (msg.start) { if (msg.start) {
const maildev = new MailDev({ const maildev = new MailDev({
ip: '127.0.0.1', ip: '127.0.0.1',
smtp: 1025, smtp: msg.port,
disableWeb: true, disableWeb: true,
silent: true silent: true
}) })

View File

@ -1,4 +1,6 @@
import { fork, ChildProcess } from 'child_process' import { ChildProcess, fork } from 'child_process'
import { randomInt } from '../../core-utils/miscs/miscs'
import { parallelTests } from '../server/servers'
class MockSmtpServer { class MockSmtpServer {
@ -20,7 +22,9 @@ class MockSmtpServer {
} }
collectEmails (emailsCollection: object[]) { collectEmails (emailsCollection: object[]) {
return new Promise((res, rej) => { return new Promise<number>((res, rej) => {
const port = parallelTests() ? randomInt(1000, 2000) : 1025
if (this.started) { if (this.started) {
this.emails = emailsCollection this.emails = emailsCollection
return res() return res()
@ -28,7 +32,7 @@ class MockSmtpServer {
// ensure maildev isn't started until // ensure maildev isn't started until
// unexpected exit can be reported to test runner // unexpected exit can be reported to test runner
this.emailChildProcess.send({ start: true }) this.emailChildProcess.send({ start: true, port })
this.emailChildProcess.on('exit', () => { this.emailChildProcess.on('exit', () => {
return rej(new Error('maildev exited unexpectedly, confirm port not in use')) return rej(new Error('maildev exited unexpectedly, confirm port not in use'))
}) })
@ -38,7 +42,7 @@ class MockSmtpServer {
} }
this.started = true this.started = true
this.emails = emailsCollection this.emails = emailsCollection
return res() return res(port)
}) })
}) })
} }

View File

@ -3,10 +3,11 @@
import { ChildProcess, exec, fork } from 'child_process' import { ChildProcess, exec, fork } from 'child_process'
import { join } from 'path' import { join } from 'path'
import { root, wait } from '../miscs/miscs' import { root, wait } from '../miscs/miscs'
import { readdir, readFile } from 'fs-extra' import { copy, readdir, readFile, remove } from 'fs-extra'
import { existsSync } from 'fs' import { existsSync } from 'fs'
import { expect } from 'chai' import { expect } from 'chai'
import { VideoChannel } from '../../models/videos' import { VideoChannel } from '../../models/videos'
import { randomInt } from '../../core-utils/miscs/miscs'
interface ServerInfo { interface ServerInfo {
app: ChildProcess, app: ChildProcess,
@ -29,6 +30,8 @@ interface ServerInfo {
email?: string email?: string
} }
customConfigFile?: string
accessToken?: string accessToken?: string
videoChannel?: VideoChannel videoChannel?: VideoChannel
@ -49,6 +52,10 @@ interface ServerInfo {
videos?: { id: number, uuid: string }[] videos?: { id: number, uuid: string }[]
} }
function parallelTests () {
return process.env.MOCHA_PARALLEL === 'true'
}
function flushAndRunMultipleServers (totalServers: number, configOverride?: Object) { function flushAndRunMultipleServers (totalServers: number, configOverride?: Object) {
let apps = [] let apps = []
let i = 0 let i = 0
@ -84,23 +91,23 @@ function randomServer () {
const low = 10 const low = 10
const high = 10000 const high = 10000
return Math.floor(Math.random() * (high - low) + low) return randomInt(low, high)
} }
async function flushAndRunServer (serverNumber: number, configOverride?: Object, args = []) { async function flushAndRunServer (serverNumber: number, configOverride?: Object, args = []) {
const parallel = process.env.MOCHA_PARALLEL === 'true' const parallel = parallelTests()
const internalServerNumber = parallel ? randomServer() : serverNumber const internalServerNumber = parallel ? randomServer() : serverNumber
const port = 9000 + internalServerNumber const port = 9000 + internalServerNumber
await flushTests(serverNumber) await flushTests(internalServerNumber)
const server: ServerInfo = { const server: ServerInfo = {
app: null, app: null,
port, port,
internalServerNumber, internalServerNumber,
parallel, parallel,
serverNumber: internalServerNumber, serverNumber,
url: `http://localhost:${port}`, url: `http://localhost:${port}`,
host: `localhost:${port}`, host: `localhost:${port}`,
client: { client: {
@ -116,7 +123,7 @@ async function flushAndRunServer (serverNumber: number, configOverride?: Object,
return runServer(server, configOverride, args) return runServer(server, configOverride, args)
} }
function runServer (server: ServerInfo, configOverrideArg?: any, args = []) { async function runServer (server: ServerInfo, configOverrideArg?: any, args = []) {
// These actions are async so we need to be sure that they have both been done // These actions are async so we need to be sure that they have both been done
const serverRunString = { const serverRunString = {
'Server listening': false 'Server listening': false
@ -131,15 +138,19 @@ function runServer (server: ServerInfo, configOverrideArg?: any, args = []) {
user_password: 'User password: (.+)' user_password: 'User password: (.+)'
} }
// Share the environment if (server.internalServerNumber !== server.serverNumber) {
const env = Object.create(process.env) const basePath = join(root(), 'config')
env['NODE_ENV'] = 'test'
env['NODE_APP_INSTANCE'] = server.serverNumber.toString()
let configOverride: any = {} const tmpConfigFile = join(basePath, `test-${server.internalServerNumber}.yaml`)
await copy(join(basePath, `test-${server.serverNumber}.yaml`), tmpConfigFile)
server.customConfigFile = tmpConfigFile
}
const configOverride: any = {}
if (server.parallel) { if (server.parallel) {
configOverride = { Object.assign(configOverride, {
listen: { listen: {
port: server.port port: server.port
}, },
@ -165,18 +176,22 @@ function runServer (server: ServerInfo, configOverrideArg?: any, args = []) {
admin: { admin: {
email: `admin${server.internalServerNumber}@example.com` email: `admin${server.internalServerNumber}@example.com`
} }
} })
} }
if (configOverrideArg !== undefined) { if (configOverrideArg !== undefined) {
Object.assign(configOverride, configOverrideArg) Object.assign(configOverride, configOverrideArg)
} }
// Share the environment
const env = Object.create(process.env)
env['NODE_ENV'] = 'test'
env['NODE_APP_INSTANCE'] = server.internalServerNumber.toString()
env['NODE_CONFIG'] = JSON.stringify(configOverride) env['NODE_CONFIG'] = JSON.stringify(configOverride)
const options = { const options = {
silent: true, silent: true,
env: env, env,
detached: true detached: true
} }
@ -244,7 +259,10 @@ async function checkDirectoryIsEmpty (server: ServerInfo, directory: string) {
function killallServers (servers: ServerInfo[]) { function killallServers (servers: ServerInfo[]) {
for (const server of servers) { for (const server of servers) {
if (!server.app) continue
process.kill(-server.app.pid) process.kill(-server.app.pid)
server.app = null
} }
} }
@ -256,6 +274,10 @@ function cleanupTests (servers: ServerInfo[]) {
if (server.parallel) { if (server.parallel) {
p.push(flushTests(server.internalServerNumber)) p.push(flushTests(server.internalServerNumber))
} }
if (server.customConfigFile) {
p.push(remove(server.customConfigFile))
}
} }
return Promise.all(p) return Promise.all(p)
@ -280,6 +302,7 @@ export {
checkDirectoryIsEmpty, checkDirectoryIsEmpty,
checkTmpIsEmpty, checkTmpIsEmpty,
ServerInfo, ServerInfo,
parallelTests,
cleanupTests, cleanupTests,
flushAndRunMultipleServers, flushAndRunMultipleServers,
flushTests, flushTests,