]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Faster ci using compiled ts files
authorChocobozzz <me@florianbigard.com>
Mon, 14 Jun 2021 14:52:22 +0000 (16:52 +0200)
committerChocobozzz <chocobozzz@cpy.re>
Tue, 15 Jun 2021 06:21:12 +0000 (08:21 +0200)
24 files changed:
scripts/ci.sh
server/tests/api/activitypub/helpers.ts
server/tests/api/activitypub/security.ts
server/tests/api/check-params/live.ts
server/tests/api/check-params/users.ts
server/tests/api/check-params/video-captions.ts
server/tests/api/check-params/video-channels.ts
server/tests/api/check-params/video-imports.ts
server/tests/api/server/contact-form.ts
server/tests/api/videos/multiple-servers.ts
server/tests/fixtures/ap-json/mastodon/bad-body-http-signature.json [moved from server/tests/api/activitypub/json/mastodon/bad-body-http-signature.json with 100% similarity]
server/tests/fixtures/ap-json/mastodon/bad-http-signature.json [moved from server/tests/api/activitypub/json/mastodon/bad-http-signature.json with 100% similarity]
server/tests/fixtures/ap-json/mastodon/bad-public-key.json [moved from server/tests/api/activitypub/json/mastodon/bad-public-key.json with 100% similarity]
server/tests/fixtures/ap-json/mastodon/create-bad-signature.json [moved from server/tests/api/activitypub/json/mastodon/create-bad-signature.json with 100% similarity]
server/tests/fixtures/ap-json/mastodon/create.json [moved from server/tests/api/activitypub/json/mastodon/create.json with 100% similarity]
server/tests/fixtures/ap-json/mastodon/http-signature.json [moved from server/tests/api/activitypub/json/mastodon/http-signature.json with 100% similarity]
server/tests/fixtures/ap-json/mastodon/public-key.json [moved from server/tests/api/activitypub/json/mastodon/public-key.json with 100% similarity]
server/tests/fixtures/ap-json/peertube/announce-without-context.json [moved from server/tests/api/activitypub/json/peertube/announce-without-context.json with 100% similarity]
server/tests/fixtures/ap-json/peertube/invalid-keys.json [moved from server/tests/api/activitypub/json/peertube/invalid-keys.json with 100% similarity]
server/tests/fixtures/ap-json/peertube/keys.json [moved from server/tests/api/activitypub/json/peertube/keys.json with 100% similarity]
server/tests/plugins/filter-hooks.ts
server/tests/register.ts [new file with mode: 0644]
shared/extra-utils/miscs/email-child-process.js [deleted file]
shared/extra-utils/miscs/email.ts

index f4a200a002bd62f043a4d001a7f067ec106ea4d9..7360a03ce8853286e82f2b05acf0bffc1683cdb6 100755 (executable)
@@ -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
index 60d95b823f2f916257b82f2d38676b2340a0da67..66d7631b7213b0c9454525da54996bf562c9fb47 100644 (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)
index 364b53e0f7602f4423dc0cbf24b3797ace241832..61db272f634ff36981439558336c9e32425efb43 100644 (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,
index c171b1f811918a2629492b195dc757b6d5af57a7..32233c9da79357980a91bb79054a95f1dd663092 100644 (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 })
index dcff0d52bec3980e62281707f1b89cad3ad45e1d..36482ee17a80232d9c5eb00bab278e6d10e9c783 100644 (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,
index 2f049c03d20022cb12de594d694fca71e7a71d0f..1ce2202d2a63c2c1d381a24af6cc9c48ab8d4de3 100644 (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'
index bc2e6192eb6fefb836c8f90966e9bea30bbab7b3..5c02afd31d9fda8410ef4bad99bed4c1f8c9a708 100644 (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,
index 6de6b40c808b19ad6b7f1da351d7d36d609b1c94..a27b624d0fde8ec09137d66758f2986658b39e1f 100644 (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({
index 9b4af19153e7f2d1d4f6b00cf3214f66540e4189..8851ad55ed14357d4f4042d996dc726f62708cf0 100644 (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',
index e80d69cf3f3b62ae791e18ffb11265f54f2ce00a..a8c8a889b11e8774f3be5322018fafe69c6ec557 100644 (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)
index 1d6bb6cf43fe942e010d81f34200aece8dd8033c..e78246d2d95cccf8b5b9c71ebca8b4b2d1400c35 100644 (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)
diff --git a/server/tests/register.ts b/server/tests/register.ts
new file mode 100644 (file)
index 0000000..af6c8c6
--- /dev/null
@@ -0,0 +1,3 @@
+import { registerTSPaths } from '../helpers/register-ts-paths'
+
+registerTSPaths()
diff --git a/shared/extra-utils/miscs/email-child-process.js b/shared/extra-utils/miscs/email-child-process.js
deleted file mode 100644 (file)
index 088a5a0..0000000
+++ /dev/null
@@ -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 })
-    })
-  }
-})
index 758b15b58aff88bd81e6751b2766e9e3c33409b4..9fc9a5ad0312e670a8cd9b5fd7c2f27846e1075a 100644 (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
+      })
+
+      maildev.on('new', email => {
+        this.emails.push(email)
       })
-      this.emailChildProcess.on('message', (msg: any) => {
-        if (msg.err) return rej(new Error(msg.err))
+
+      maildev.listen(err => {
+        if (err) return rej(err)
 
         this.started = true
-        this.emails = emailsCollection
 
         return res(port)
       })