1
0
Fork 0

Faster ci using compiled ts files

This commit is contained in:
Chocobozzz 2021-06-14 16:52:22 +02:00 committed by Chocobozzz
parent 79db409a41
commit 3d470a530c
24 changed files with 104 additions and 128 deletions

View File

@ -25,7 +25,7 @@ runTest () {
joblog="$jobname-ci.log"
parallel -j $jobs --retries $retries \
"echo Trying {} >> $joblog; npm run mocha -- -c --timeout 30000 --exit --require ts-node/register --require tsconfig-paths/register --bail {}" \
"echo Trying {} >> $joblog; npm run mocha -- -c --timeout 30000 --exit --require ./dist/server/tests/register.js --bail {}" \
::: $files
cat "$joblog" | uniq -c
@ -33,63 +33,63 @@ runTest () {
}
findTestFiles () {
find $1 -type f -name "*.ts" | grep -v "/index.ts" | xargs echo
find $1 -type f -name "*.js" | grep -v "/index.js" | xargs echo
}
if [ "$1" = "misc" ]; then
npm run build
feedsFiles=$(findTestFiles server/tests/feeds)
helperFiles=$(findTestFiles server/tests/helpers)
pluginsFiles=$(findTestFiles server/tests/plugins)
miscFiles="server/tests/client.ts server/tests/misc-endpoints.ts"
feedsFiles=$(findTestFiles ./dist/server/tests/feeds)
helperFiles=$(findTestFiles ./dist/server/tests/helpers)
pluginsFiles=$(findTestFiles ./dist/server/tests/plugins)
miscFiles="./dist/server/tests/client.js ./dist/server/tests/misc-endpoints.js"
MOCHA_PARALLEL=true TS_NODE_FILES=true runTest "$1" 2 $feedsFiles $helperFiles $pluginsFiles $miscFiles
MOCHA_PARALLEL=true runTest "$1" 2 $feedsFiles $helperFiles $pluginsFiles $miscFiles
elif [ "$1" = "cli" ]; then
npm run build:server
npm run setup:cli
cliFiles=$(findTestFiles server/tests/cli)
cliFiles=$(findTestFiles ./dist/server/tests/cli)
runTest "$1" 1 $cliFiles
elif [ "$1" = "api-1" ]; then
npm run build:server
checkParamFiles=$(findTestFiles server/tests/api/check-params)
notificationsFiles=$(findTestFiles server/tests/api/notifications)
searchFiles=$(findTestFiles server/tests/api/search)
checkParamFiles=$(findTestFiles ./dist/server/tests/api/check-params)
notificationsFiles=$(findTestFiles ./dist/server/tests/api/notifications)
searchFiles=$(findTestFiles ./dist/server/tests/api/search)
MOCHA_PARALLEL=true runTest "$1" 3 $notificationsFiles $searchFiles $checkParamFiles
elif [ "$1" = "api-2" ]; then
npm run build:server
serverFiles=$(findTestFiles server/tests/api/server)
usersFiles=$(findTestFiles server/tests/api/users)
liveFiles=$(findTestFiles server/tests/api/live)
serverFiles=$(findTestFiles ./dist/server/tests/api/server)
usersFiles=$(findTestFiles ./dist/server/tests/api/users)
liveFiles=$(findTestFiles ./dist/server/tests/api/live)
MOCHA_PARALLEL=true runTest "$1" 3 $serverFiles $usersFiles $liveFiles
elif [ "$1" = "api-3" ]; then
npm run build:server
videosFiles=$(findTestFiles server/tests/api/videos)
videosFiles=$(findTestFiles ./dist/server/tests/api/videos)
MOCHA_PARALLEL=true runTest "$1" 3 $videosFiles
elif [ "$1" = "api-4" ]; then
npm run build:server
moderationFiles=$(findTestFiles server/tests/api/moderation)
redundancyFiles=$(findTestFiles server/tests/api/redundancy)
activitypubFiles=$(findTestFiles server/tests/api/activitypub)
moderationFiles=$(findTestFiles ./dist/server/tests/api/moderation)
redundancyFiles=$(findTestFiles ./dist/server/tests/api/redundancy)
activitypubFiles=$(findTestFiles ./dist/server/tests/api/activitypub)
MOCHA_PARALLEL=true TS_NODE_FILES=true runTest "$1" 2 $moderationFiles $redundancyFiles $activitypubFiles
elif [ "$1" = "external-plugins" ]; then
npm run build:server
externalPluginsFiles=$(findTestFiles server/tests/external-plugins)
externalPluginsFiles=$(findTestFiles ./dist/server/tests/external-plugins)
runTest "$1" 1 $externalPluginsFiles
elif [ "$1" = "lint" ]; then
npm run eslint -- --ext .ts "server/**/*.ts" "shared/**/*.ts" "scripts/**/*.ts"
npm run eslint -- --ext .ts "./server/**/*.ts" "shared/**/*.ts" "scripts/**/*.ts"
npm run swagger-cli -- validate support/doc/api/openapi.yaml
( cd client

View File

@ -6,13 +6,14 @@ import { buildRequestStub } from '../../../../shared/extra-utils/miscs/stubs'
import { isHTTPSignatureVerified, isJsonLDSignatureVerified, parseHTTPSignature } from '../../../helpers/peertube-crypto'
import { cloneDeep } from 'lodash'
import { buildSignedActivity } from '../../../helpers/activitypub'
import { buildAbsoluteFixturePath } from '@shared/extra-utils'
describe('Test activity pub helpers', function () {
describe('When checking the Linked Signature', function () {
it('Should fail with an invalid Mastodon signature', async function () {
const body = require('./json/mastodon/create-bad-signature.json')
const publicKey = require('./json/mastodon/public-key.json').publicKey
const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create-bad-signature.json'))
const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey
const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' }
const result = await isJsonLDSignatureVerified(fromActor as any, body)
@ -21,8 +22,8 @@ describe('Test activity pub helpers', function () {
})
it('Should fail with an invalid public key', async function () {
const body = require('./json/mastodon/create.json')
const publicKey = require('./json/mastodon/bad-public-key.json').publicKey
const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create.json'))
const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-public-key.json')).publicKey
const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' }
const result = await isJsonLDSignatureVerified(fromActor as any, body)
@ -31,8 +32,8 @@ describe('Test activity pub helpers', function () {
})
it('Should succeed with a valid Mastodon signature', async function () {
const body = require('./json/mastodon/create.json')
const publicKey = require('./json/mastodon/public-key.json').publicKey
const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create.json'))
const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey
const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' }
const result = await isJsonLDSignatureVerified(fromActor as any, body)
@ -41,8 +42,8 @@ describe('Test activity pub helpers', function () {
})
it('Should fail with an invalid PeerTube signature', async function () {
const keys = require('./json/peertube/invalid-keys.json')
const body = require('./json/peertube/announce-without-context.json')
const keys = require(buildAbsoluteFixturePath('./ap-json/peertube/invalid-keys.json'))
const body = require(buildAbsoluteFixturePath('./ap-json/peertube/announce-without-context.json'))
const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey }
const signedBody = await buildSignedActivity(actorSignature as any, body)
@ -54,8 +55,8 @@ describe('Test activity pub helpers', function () {
})
it('Should succeed with a valid PeerTube signature', async function () {
const keys = require('./json/peertube/keys.json')
const body = require('./json/peertube/announce-without-context.json')
const keys = require(buildAbsoluteFixturePath('./ap-json/peertube/keys.json'))
const body = require(buildAbsoluteFixturePath('./ap-json/peertube/announce-without-context.json'))
const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey }
const signedBody = await buildSignedActivity(actorSignature as any, body)
@ -73,12 +74,12 @@ describe('Test activity pub helpers', function () {
req.method = 'POST'
req.url = '/accounts/ronan/inbox'
const mastodonObject = cloneDeep(require('./json/mastodon/bad-http-signature.json'))
const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-http-signature.json')))
req.body = mastodonObject.body
req.headers = mastodonObject.headers
const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10)
const publicKey = require('./json/mastodon/public-key.json').publicKey
const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey
const actor = { publicKey }
const verified = isHTTPSignatureVerified(parsed, actor as any)
@ -91,12 +92,12 @@ describe('Test activity pub helpers', function () {
req.method = 'POST'
req.url = '/accounts/ronan/inbox'
const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json'))
const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json')))
req.body = mastodonObject.body
req.headers = mastodonObject.headers
const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10)
const publicKey = require('./json/mastodon/bad-public-key.json').publicKey
const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-public-key.json')).publicKey
const actor = { publicKey }
const verified = isHTTPSignatureVerified(parsed, actor as any)
@ -109,7 +110,7 @@ describe('Test activity pub helpers', function () {
req.method = 'POST'
req.url = '/accounts/ronan/inbox'
const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json'))
const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json')))
req.body = mastodonObject.body
req.headers = mastodonObject.headers
@ -128,7 +129,7 @@ describe('Test activity pub helpers', function () {
req.method = 'POST'
req.url = '/accounts/ronan/inbox'
const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json'))
const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json')))
req.body = mastodonObject.body
req.headers = mastodonObject.headers
req.headers = 'Signature ' + mastodonObject.headers
@ -148,12 +149,12 @@ describe('Test activity pub helpers', function () {
req.method = 'POST'
req.url = '/accounts/ronan/inbox'
const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json'))
const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json')))
req.body = mastodonObject.body
req.headers = mastodonObject.headers
const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10)
const publicKey = require('./json/mastodon/public-key.json').publicKey
const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey
const actor = { publicKey }
const verified = isHTTPSignatureVerified(parsed, actor as any)

View File

@ -5,6 +5,7 @@ import * as chai from 'chai'
import { buildDigest } from '@server/helpers/peertube-crypto'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import {
buildAbsoluteFixturePath,
cleanupTests,
closeAllSequelize,
flushAndRunMultipleServers,
@ -40,7 +41,7 @@ function setUpdatedAtOfServer (onServer: ServerInfo, ofServer: ServerInfo, updat
}
function getAnnounceWithoutContext (server: ServerInfo) {
const json = require('./json/peertube/announce-without-context.json')
const json = require(buildAbsoluteFixturePath('./ap-json/peertube/announce-without-context.json'))
const result: typeof json = {}
for (const key of Object.keys(json)) {
@ -58,8 +59,8 @@ describe('Test ActivityPub security', function () {
let servers: ServerInfo[]
let url: string
const keys = require('./json/peertube/keys.json')
const invalidKeys = require('./json/peertube/invalid-keys.json')
const keys = require(buildAbsoluteFixturePath('./ap-json/peertube/keys.json'))
const invalidKeys = require(buildAbsoluteFixturePath('./ap-json/peertube/invalid-keys.json'))
const baseHttpSignature = () => ({
algorithm: HTTP_SIGNATURE.ALGORITHM,
authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME,

View File

@ -2,9 +2,10 @@
import 'mocha'
import { omit } from 'lodash'
import { join } from 'path'
import { LiveVideo, VideoPrivacy } from '@shared/models'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import {
buildAbsoluteFixturePath,
cleanupTests,
createUser,
flushAndRunServer,
@ -24,7 +25,6 @@ import {
userLogin,
waitUntilLivePublished
} from '../../../../shared/extra-utils'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
describe('Test video lives API validator', function () {
const path = '/api/v1/videos/live'
@ -180,7 +180,7 @@ describe('Test video lives API validator', function () {
it('Should fail with an incorrect thumbnail file', async function () {
const fields = baseCorrectParams
const attaches = {
thumbnailfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4')
thumbnailfile: buildAbsoluteFixturePath('video_short.mp4')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })
@ -189,7 +189,7 @@ describe('Test video lives API validator', function () {
it('Should fail with a big thumbnail file', async function () {
const fields = baseCorrectParams
const attaches = {
thumbnailfile: join(__dirname, '..', '..', 'fixtures', 'preview-big.png')
thumbnailfile: buildAbsoluteFixturePath('preview-big.png')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })
@ -198,7 +198,7 @@ describe('Test video lives API validator', function () {
it('Should fail with an incorrect preview file', async function () {
const fields = baseCorrectParams
const attaches = {
previewfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4')
previewfile: buildAbsoluteFixturePath('video_short.mp4')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })
@ -207,7 +207,7 @@ describe('Test video lives API validator', function () {
it('Should fail with a big preview file', async function () {
const fields = baseCorrectParams
const attaches = {
previewfile: join(__dirname, '..', '..', 'fixtures', 'preview-big.png')
previewfile: buildAbsoluteFixturePath('preview-big.png')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })

View File

@ -2,12 +2,12 @@
import 'mocha'
import { omit } from 'lodash'
import { join } from 'path'
import { User, UserRole } from '../../../../shared'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import {
addVideoChannel,
blockUser,
buildAbsoluteFixturePath,
cleanupTests,
createUser,
deleteMe,
@ -600,7 +600,7 @@ describe('Test users API validators', function () {
it('Should fail without an incorrect input file', async function () {
const fields = {}
const attaches = {
avatarfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4')
avatarfile: buildAbsoluteFixturePath('video_short.mp4')
}
await makeUploadRequest({ url: server.url, path: path + '/me/avatar/pick', token: server.accessToken, fields, attaches })
})
@ -608,7 +608,7 @@ describe('Test users API validators', function () {
it('Should fail with a big file', async function () {
const fields = {}
const attaches = {
avatarfile: join(__dirname, '..', '..', 'fixtures', 'avatar-big.png')
avatarfile: buildAbsoluteFixturePath('avatar-big.png')
}
await makeUploadRequest({ url: server.url, path: path + '/me/avatar/pick', token: server.accessToken, fields, attaches })
})
@ -616,7 +616,7 @@ describe('Test users API validators', function () {
it('Should fail with an unauthenticated user', async function () {
const fields = {}
const attaches = {
avatarfile: join(__dirname, '..', '..', 'fixtures', 'avatar.png')
avatarfile: buildAbsoluteFixturePath('avatar.png')
}
await makeUploadRequest({
url: server.url,
@ -630,7 +630,7 @@ describe('Test users API validators', function () {
it('Should succeed with the correct params', async function () {
const fields = {}
const attaches = {
avatarfile: join(__dirname, '..', '..', 'fixtures', 'avatar.png')
avatarfile: buildAbsoluteFixturePath('avatar.png')
}
await makeUploadRequest({
url: server.url,

View File

@ -1,7 +1,10 @@
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
import 'mocha'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import {
buildAbsoluteFixturePath,
cleanupTests,
createUser,
flushAndRunServer,
@ -13,9 +16,7 @@ import {
uploadVideo,
userLogin
} from '../../../../shared/extra-utils'
import { join } from 'path'
import { createVideoCaption } from '../../../../shared/extra-utils/videos/video-captions'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
describe('Test video captions API validator', function () {
const path = '/api/v1/videos/'
@ -51,7 +52,7 @@ describe('Test video captions API validator', function () {
describe('When adding video caption', function () {
const fields = { }
const attaches = {
captionfile: join(__dirname, '..', '..', 'fixtures', 'subtitle-good1.vtt')
captionfile: buildAbsoluteFixturePath('subtitle-good1.vtt')
}
it('Should fail without a valid uuid', async function () {
@ -129,7 +130,7 @@ describe('Test video captions API validator', function () {
// We accept any file now
// it('Should fail with an invalid captionfile extension', async function () {
// const attaches = {
// 'captionfile': join(__dirname, '..', '..', 'fixtures', 'subtitle-bad.txt')
// 'captionfile': buildAbsoluteFixturePath('subtitle-bad.txt')
// }
//
// const captionPath = path + videoUUID + '/captions/fr'
@ -171,7 +172,7 @@ describe('Test video captions API validator', function () {
// We don't check the file validity yet
// it('Should fail with an invalid captionfile srt', async function () {
// const attaches = {
// 'captionfile': join(__dirname, '..', '..', 'fixtures', 'subtitle-bad.srt')
// 'captionfile': buildAbsoluteFixturePath('subtitle-bad.srt')
// }
//
// const captionPath = path + videoUUID + '/captions/fr'

View File

@ -1,9 +1,11 @@
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
import 'mocha'
import * as chai from 'chai'
import { omit } from 'lodash'
import 'mocha'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import {
buildAbsoluteFixturePath,
cleanupTests,
createUser,
deleteVideoChannel,
@ -23,9 +25,7 @@ import {
checkBadSortPagination,
checkBadStartPagination
} from '../../../../shared/extra-utils/requests/check-api-params'
import { join } from 'path'
import { VideoChannelUpdate } from '../../../../shared/models/videos'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
const expect = chai.expect
@ -246,7 +246,7 @@ describe('Test video channels API validator', function () {
for (const type of types) {
const fields = {}
const attaches = {
[type + 'file']: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4')
[type + 'file']: buildAbsoluteFixturePath('video_short.mp4')
}
await makeUploadRequest({ url: server.url, path: `${path}/${type}/pick`, token: server.accessToken, fields, attaches })
@ -257,7 +257,7 @@ describe('Test video channels API validator', function () {
for (const type of types) {
const fields = {}
const attaches = {
[type + 'file']: join(__dirname, '..', '..', 'fixtures', 'avatar-big.png')
[type + 'file']: buildAbsoluteFixturePath('avatar-big.png')
}
await makeUploadRequest({ url: server.url, path: `${path}/${type}/pick`, token: server.accessToken, fields, attaches })
}
@ -267,7 +267,7 @@ describe('Test video channels API validator', function () {
for (const type of types) {
const fields = {}
const attaches = {
[type + 'file']: join(__dirname, '..', '..', 'fixtures', 'avatar.png')
[type + 'file']: buildAbsoluteFixturePath('avatar.png')
}
await makeUploadRequest({
url: server.url,
@ -283,7 +283,7 @@ describe('Test video channels API validator', function () {
for (const type of types) {
const fields = {}
const attaches = {
[type + 'file']: join(__dirname, '..', '..', 'fixtures', 'avatar.png')
[type + 'file']: buildAbsoluteFixturePath('avatar.png')
}
await makeUploadRequest({
url: server.url,

View File

@ -2,8 +2,9 @@
import 'mocha'
import { omit } from 'lodash'
import { join } from 'path'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import {
buildAbsoluteFixturePath,
cleanupTests,
createUser,
flushAndRunServer,
@ -22,9 +23,8 @@ import {
checkBadSortPagination,
checkBadStartPagination
} from '../../../../shared/extra-utils/requests/check-api-params'
import { getMagnetURI, getGoodVideoUrl } from '../../../../shared/extra-utils/videos/video-imports'
import { getGoodVideoUrl, getMagnetURI } from '../../../../shared/extra-utils/videos/video-imports'
import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
describe('Test video imports API validator', function () {
const path = '/api/v1/videos/imports'
@ -201,7 +201,7 @@ describe('Test video imports API validator', function () {
it('Should fail with an incorrect thumbnail file', async function () {
const fields = baseCorrectParams
const attaches = {
thumbnailfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4')
thumbnailfile: buildAbsoluteFixturePath('video_short.mp4')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })
@ -210,7 +210,7 @@ describe('Test video imports API validator', function () {
it('Should fail with a big thumbnail file', async function () {
const fields = baseCorrectParams
const attaches = {
thumbnailfile: join(__dirname, '..', '..', 'fixtures', 'preview-big.png')
thumbnailfile: buildAbsoluteFixturePath('preview-big.png')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })
@ -219,7 +219,7 @@ describe('Test video imports API validator', function () {
it('Should fail with an incorrect preview file', async function () {
const fields = baseCorrectParams
const attaches = {
previewfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4')
previewfile: buildAbsoluteFixturePath('video_short.mp4')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })
@ -228,7 +228,7 @@ describe('Test video imports API validator', function () {
it('Should fail with a big preview file', async function () {
const fields = baseCorrectParams
const attaches = {
previewfile: join(__dirname, '..', '..', 'fixtures', 'preview-big.png')
previewfile: buildAbsoluteFixturePath('preview-big.png')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })
@ -237,7 +237,7 @@ describe('Test video imports API validator', function () {
it('Should fail with an invalid torrent file', async function () {
const fields = omit(baseCorrectParams, 'targetUrl')
const attaches = {
torrentfile: join(__dirname, '..', '..', 'fixtures', 'avatar-big.png')
torrentfile: buildAbsoluteFixturePath('avatar-big.png')
}
await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches })
@ -312,7 +312,7 @@ describe('Test video imports API validator', function () {
fields = omit(fields, 'magnetUri')
const attaches = {
torrentfile: join(__dirname, '..', '..', 'fixtures', 'video-720p.torrent')
torrentfile: buildAbsoluteFixturePath('video-720p.torrent')
}
await makeUploadRequest({

View File

@ -54,6 +54,10 @@ describe('Test contact form', function () {
})
it('Should not be able to send another contact form because of the anti spam checker', async function () {
this.timeout(10000)
await wait(1000)
await sendContactForm({
url: server.url,
fromEmail: 'toto@example.com',

View File

@ -2,11 +2,11 @@
import 'mocha'
import * as chai from 'chai'
import { join } from 'path'
import * as request from 'supertest'
import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
import {
addVideoChannel,
buildAbsoluteFixturePath,
checkTmpIsEmpty,
checkVideoFilesWereRemoved,
cleanupTests,
@ -1018,9 +1018,7 @@ describe('Test multiple servers', function () {
.field('privacy', '1')
.field('channelId', '1')
const filePath = join(__dirname, '..', '..', 'fixtures', 'video_short.webm')
await req.attach('videofile', filePath)
await req.attach('videofile', buildAbsoluteFixturePath('video_short.webm'))
.expect(HttpStatusCode.OK_200)
await waitJobs(servers)

View File

@ -326,7 +326,7 @@ describe('Test plugin filter hooks', function () {
})
it('Should blacklist on remote upload', async function () {
this.timeout(60000)
this.timeout(120000)
const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'remote please blacklist me' })
await waitJobs(servers)
@ -335,7 +335,7 @@ describe('Test plugin filter hooks', function () {
})
it('Should blacklist on remote update', async function () {
this.timeout(60000)
this.timeout(120000)
const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video' })
await waitJobs(servers)

3
server/tests/register.ts Normal file
View File

@ -0,0 +1,3 @@
import { registerTSPaths } from '../helpers/register-ts-paths'
registerTSPaths()

View File

@ -1,27 +0,0 @@
const MailDev = require('maildev')
// must run maildev as forked ChildProcess
// failed instantiation stops main process with exit code 0
process.on('message', (msg) => {
if (msg.start) {
const maildev = new MailDev({
ip: '127.0.0.1',
smtp: msg.port,
disableWeb: true,
silent: true
})
maildev.on('new', email => {
process.send({ email })
})
maildev.listen(err => {
if (err) {
// cannot send as Error object
return process.send({ err: err.message })
}
return process.send({ err: null })
})
}
})

View File

@ -1,8 +1,9 @@
import { ChildProcess, fork } from 'child_process'
import { join } from 'path'
import { ChildProcess } from 'child_process'
import { randomInt } from '../../core-utils/miscs/miscs'
import { parallelTests } from '../server/servers'
const MailDev = require('maildev')
class MockSmtpServer {
private static instance: MockSmtpServer
@ -10,38 +11,32 @@ class MockSmtpServer {
private emailChildProcess: ChildProcess
private emails: object[]
private constructor () {
this.emailChildProcess = fork(join(__dirname, 'email-child-process'), [])
this.emailChildProcess.on('message', (msg: any) => {
if (msg.email) {
return this.emails.push(msg.email)
}
})
process.on('exit', () => this.kill())
}
private constructor () { }
collectEmails (emailsCollection: object[]) {
return new Promise<number>((res, rej) => {
const port = parallelTests() ? randomInt(1000, 2000) : 1025
this.emails = emailsCollection
if (this.started) {
this.emails = emailsCollection
return res(undefined)
}
// ensure maildev isn't started until
// unexpected exit can be reported to test runner
this.emailChildProcess.send({ start: true, port })
this.emailChildProcess.on('exit', () => {
return rej(new Error('maildev exited unexpectedly, confirm port not in use'))
const maildev = new MailDev({
ip: '127.0.0.1',
smtp: port,
disableWeb: true,
silent: true
})
this.emailChildProcess.on('message', (msg: any) => {
if (msg.err) return rej(new Error(msg.err))
maildev.on('new', email => {
this.emails.push(email)
})
maildev.listen(err => {
if (err) return rej(err)
this.started = true
this.emails = emailsCollection
return res(port)
})