diff options
24 files changed, 104 insertions, 128 deletions
diff --git a/scripts/ci.sh b/scripts/ci.sh index f4a200a00..7360a03ce 100755 --- a/scripts/ci.sh +++ b/scripts/ci.sh | |||
@@ -25,7 +25,7 @@ runTest () { | |||
25 | joblog="$jobname-ci.log" | 25 | joblog="$jobname-ci.log" |
26 | 26 | ||
27 | parallel -j $jobs --retries $retries \ | 27 | parallel -j $jobs --retries $retries \ |
28 | "echo Trying {} >> $joblog; npm run mocha -- -c --timeout 30000 --exit --require ts-node/register --require tsconfig-paths/register --bail {}" \ | 28 | "echo Trying {} >> $joblog; npm run mocha -- -c --timeout 30000 --exit --require ./dist/server/tests/register.js --bail {}" \ |
29 | ::: $files | 29 | ::: $files |
30 | 30 | ||
31 | cat "$joblog" | uniq -c | 31 | cat "$joblog" | uniq -c |
@@ -33,63 +33,63 @@ runTest () { | |||
33 | } | 33 | } |
34 | 34 | ||
35 | findTestFiles () { | 35 | findTestFiles () { |
36 | find $1 -type f -name "*.ts" | grep -v "/index.ts" | xargs echo | 36 | find $1 -type f -name "*.js" | grep -v "/index.js" | xargs echo |
37 | } | 37 | } |
38 | 38 | ||
39 | if [ "$1" = "misc" ]; then | 39 | if [ "$1" = "misc" ]; then |
40 | npm run build | 40 | npm run build |
41 | 41 | ||
42 | feedsFiles=$(findTestFiles server/tests/feeds) | 42 | feedsFiles=$(findTestFiles ./dist/server/tests/feeds) |
43 | helperFiles=$(findTestFiles server/tests/helpers) | 43 | helperFiles=$(findTestFiles ./dist/server/tests/helpers) |
44 | pluginsFiles=$(findTestFiles server/tests/plugins) | 44 | pluginsFiles=$(findTestFiles ./dist/server/tests/plugins) |
45 | miscFiles="server/tests/client.ts server/tests/misc-endpoints.ts" | 45 | miscFiles="./dist/server/tests/client.js ./dist/server/tests/misc-endpoints.js" |
46 | 46 | ||
47 | MOCHA_PARALLEL=true TS_NODE_FILES=true runTest "$1" 2 $feedsFiles $helperFiles $pluginsFiles $miscFiles | 47 | MOCHA_PARALLEL=true runTest "$1" 2 $feedsFiles $helperFiles $pluginsFiles $miscFiles |
48 | elif [ "$1" = "cli" ]; then | 48 | elif [ "$1" = "cli" ]; then |
49 | npm run build:server | 49 | npm run build:server |
50 | npm run setup:cli | 50 | npm run setup:cli |
51 | 51 | ||
52 | cliFiles=$(findTestFiles server/tests/cli) | 52 | cliFiles=$(findTestFiles ./dist/server/tests/cli) |
53 | 53 | ||
54 | runTest "$1" 1 $cliFiles | 54 | runTest "$1" 1 $cliFiles |
55 | elif [ "$1" = "api-1" ]; then | 55 | elif [ "$1" = "api-1" ]; then |
56 | npm run build:server | 56 | npm run build:server |
57 | 57 | ||
58 | checkParamFiles=$(findTestFiles server/tests/api/check-params) | 58 | checkParamFiles=$(findTestFiles ./dist/server/tests/api/check-params) |
59 | notificationsFiles=$(findTestFiles server/tests/api/notifications) | 59 | notificationsFiles=$(findTestFiles ./dist/server/tests/api/notifications) |
60 | searchFiles=$(findTestFiles server/tests/api/search) | 60 | searchFiles=$(findTestFiles ./dist/server/tests/api/search) |
61 | 61 | ||
62 | MOCHA_PARALLEL=true runTest "$1" 3 $notificationsFiles $searchFiles $checkParamFiles | 62 | MOCHA_PARALLEL=true runTest "$1" 3 $notificationsFiles $searchFiles $checkParamFiles |
63 | elif [ "$1" = "api-2" ]; then | 63 | elif [ "$1" = "api-2" ]; then |
64 | npm run build:server | 64 | npm run build:server |
65 | 65 | ||
66 | serverFiles=$(findTestFiles server/tests/api/server) | 66 | serverFiles=$(findTestFiles ./dist/server/tests/api/server) |
67 | usersFiles=$(findTestFiles server/tests/api/users) | 67 | usersFiles=$(findTestFiles ./dist/server/tests/api/users) |
68 | liveFiles=$(findTestFiles server/tests/api/live) | 68 | liveFiles=$(findTestFiles ./dist/server/tests/api/live) |
69 | 69 | ||
70 | MOCHA_PARALLEL=true runTest "$1" 3 $serverFiles $usersFiles $liveFiles | 70 | MOCHA_PARALLEL=true runTest "$1" 3 $serverFiles $usersFiles $liveFiles |
71 | elif [ "$1" = "api-3" ]; then | 71 | elif [ "$1" = "api-3" ]; then |
72 | npm run build:server | 72 | npm run build:server |
73 | 73 | ||
74 | videosFiles=$(findTestFiles server/tests/api/videos) | 74 | videosFiles=$(findTestFiles ./dist/server/tests/api/videos) |
75 | 75 | ||
76 | MOCHA_PARALLEL=true runTest "$1" 3 $videosFiles | 76 | MOCHA_PARALLEL=true runTest "$1" 3 $videosFiles |
77 | elif [ "$1" = "api-4" ]; then | 77 | elif [ "$1" = "api-4" ]; then |
78 | npm run build:server | 78 | npm run build:server |
79 | 79 | ||
80 | moderationFiles=$(findTestFiles server/tests/api/moderation) | 80 | moderationFiles=$(findTestFiles ./dist/server/tests/api/moderation) |
81 | redundancyFiles=$(findTestFiles server/tests/api/redundancy) | 81 | redundancyFiles=$(findTestFiles ./dist/server/tests/api/redundancy) |
82 | activitypubFiles=$(findTestFiles server/tests/api/activitypub) | 82 | activitypubFiles=$(findTestFiles ./dist/server/tests/api/activitypub) |
83 | 83 | ||
84 | MOCHA_PARALLEL=true TS_NODE_FILES=true runTest "$1" 2 $moderationFiles $redundancyFiles $activitypubFiles | 84 | MOCHA_PARALLEL=true TS_NODE_FILES=true runTest "$1" 2 $moderationFiles $redundancyFiles $activitypubFiles |
85 | elif [ "$1" = "external-plugins" ]; then | 85 | elif [ "$1" = "external-plugins" ]; then |
86 | npm run build:server | 86 | npm run build:server |
87 | 87 | ||
88 | externalPluginsFiles=$(findTestFiles server/tests/external-plugins) | 88 | externalPluginsFiles=$(findTestFiles ./dist/server/tests/external-plugins) |
89 | 89 | ||
90 | runTest "$1" 1 $externalPluginsFiles | 90 | runTest "$1" 1 $externalPluginsFiles |
91 | elif [ "$1" = "lint" ]; then | 91 | elif [ "$1" = "lint" ]; then |
92 | npm run eslint -- --ext .ts "server/**/*.ts" "shared/**/*.ts" "scripts/**/*.ts" | 92 | npm run eslint -- --ext .ts "./server/**/*.ts" "shared/**/*.ts" "scripts/**/*.ts" |
93 | npm run swagger-cli -- validate support/doc/api/openapi.yaml | 93 | npm run swagger-cli -- validate support/doc/api/openapi.yaml |
94 | 94 | ||
95 | ( cd client | 95 | ( cd client |
diff --git a/server/tests/api/activitypub/helpers.ts b/server/tests/api/activitypub/helpers.ts index 60d95b823..66d7631b7 100644 --- a/server/tests/api/activitypub/helpers.ts +++ b/server/tests/api/activitypub/helpers.ts | |||
@@ -6,13 +6,14 @@ import { buildRequestStub } from '../../../../shared/extra-utils/miscs/stubs' | |||
6 | import { isHTTPSignatureVerified, isJsonLDSignatureVerified, parseHTTPSignature } from '../../../helpers/peertube-crypto' | 6 | import { isHTTPSignatureVerified, isJsonLDSignatureVerified, parseHTTPSignature } from '../../../helpers/peertube-crypto' |
7 | import { cloneDeep } from 'lodash' | 7 | import { cloneDeep } from 'lodash' |
8 | import { buildSignedActivity } from '../../../helpers/activitypub' | 8 | import { buildSignedActivity } from '../../../helpers/activitypub' |
9 | import { buildAbsoluteFixturePath } from '@shared/extra-utils' | ||
9 | 10 | ||
10 | describe('Test activity pub helpers', function () { | 11 | describe('Test activity pub helpers', function () { |
11 | describe('When checking the Linked Signature', function () { | 12 | describe('When checking the Linked Signature', function () { |
12 | 13 | ||
13 | it('Should fail with an invalid Mastodon signature', async function () { | 14 | it('Should fail with an invalid Mastodon signature', async function () { |
14 | const body = require('./json/mastodon/create-bad-signature.json') | 15 | const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create-bad-signature.json')) |
15 | const publicKey = require('./json/mastodon/public-key.json').publicKey | 16 | const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey |
16 | const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } | 17 | const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } |
17 | 18 | ||
18 | const result = await isJsonLDSignatureVerified(fromActor as any, body) | 19 | const result = await isJsonLDSignatureVerified(fromActor as any, body) |
@@ -21,8 +22,8 @@ describe('Test activity pub helpers', function () { | |||
21 | }) | 22 | }) |
22 | 23 | ||
23 | it('Should fail with an invalid public key', async function () { | 24 | it('Should fail with an invalid public key', async function () { |
24 | const body = require('./json/mastodon/create.json') | 25 | const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create.json')) |
25 | const publicKey = require('./json/mastodon/bad-public-key.json').publicKey | 26 | const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-public-key.json')).publicKey |
26 | const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } | 27 | const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } |
27 | 28 | ||
28 | const result = await isJsonLDSignatureVerified(fromActor as any, body) | 29 | const result = await isJsonLDSignatureVerified(fromActor as any, body) |
@@ -31,8 +32,8 @@ describe('Test activity pub helpers', function () { | |||
31 | }) | 32 | }) |
32 | 33 | ||
33 | it('Should succeed with a valid Mastodon signature', async function () { | 34 | it('Should succeed with a valid Mastodon signature', async function () { |
34 | const body = require('./json/mastodon/create.json') | 35 | const body = require(buildAbsoluteFixturePath('./ap-json/mastodon/create.json')) |
35 | const publicKey = require('./json/mastodon/public-key.json').publicKey | 36 | const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey |
36 | const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } | 37 | const fromActor = { publicKey, url: 'http://localhost:9002/accounts/peertube' } |
37 | 38 | ||
38 | const result = await isJsonLDSignatureVerified(fromActor as any, body) | 39 | const result = await isJsonLDSignatureVerified(fromActor as any, body) |
@@ -41,8 +42,8 @@ describe('Test activity pub helpers', function () { | |||
41 | }) | 42 | }) |
42 | 43 | ||
43 | it('Should fail with an invalid PeerTube signature', async function () { | 44 | it('Should fail with an invalid PeerTube signature', async function () { |
44 | const keys = require('./json/peertube/invalid-keys.json') | 45 | const keys = require(buildAbsoluteFixturePath('./ap-json/peertube/invalid-keys.json')) |
45 | const body = require('./json/peertube/announce-without-context.json') | 46 | const body = require(buildAbsoluteFixturePath('./ap-json/peertube/announce-without-context.json')) |
46 | 47 | ||
47 | const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey } | 48 | const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey } |
48 | const signedBody = await buildSignedActivity(actorSignature as any, body) | 49 | const signedBody = await buildSignedActivity(actorSignature as any, body) |
@@ -54,8 +55,8 @@ describe('Test activity pub helpers', function () { | |||
54 | }) | 55 | }) |
55 | 56 | ||
56 | it('Should succeed with a valid PeerTube signature', async function () { | 57 | it('Should succeed with a valid PeerTube signature', async function () { |
57 | const keys = require('./json/peertube/keys.json') | 58 | const keys = require(buildAbsoluteFixturePath('./ap-json/peertube/keys.json')) |
58 | const body = require('./json/peertube/announce-without-context.json') | 59 | const body = require(buildAbsoluteFixturePath('./ap-json/peertube/announce-without-context.json')) |
59 | 60 | ||
60 | const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey } | 61 | const actorSignature = { url: 'http://localhost:9002/accounts/peertube', privateKey: keys.privateKey } |
61 | const signedBody = await buildSignedActivity(actorSignature as any, body) | 62 | const signedBody = await buildSignedActivity(actorSignature as any, body) |
@@ -73,12 +74,12 @@ describe('Test activity pub helpers', function () { | |||
73 | req.method = 'POST' | 74 | req.method = 'POST' |
74 | req.url = '/accounts/ronan/inbox' | 75 | req.url = '/accounts/ronan/inbox' |
75 | 76 | ||
76 | const mastodonObject = cloneDeep(require('./json/mastodon/bad-http-signature.json')) | 77 | const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-http-signature.json'))) |
77 | req.body = mastodonObject.body | 78 | req.body = mastodonObject.body |
78 | req.headers = mastodonObject.headers | 79 | req.headers = mastodonObject.headers |
79 | 80 | ||
80 | const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) | 81 | const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) |
81 | const publicKey = require('./json/mastodon/public-key.json').publicKey | 82 | const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey |
82 | 83 | ||
83 | const actor = { publicKey } | 84 | const actor = { publicKey } |
84 | const verified = isHTTPSignatureVerified(parsed, actor as any) | 85 | const verified = isHTTPSignatureVerified(parsed, actor as any) |
@@ -91,12 +92,12 @@ describe('Test activity pub helpers', function () { | |||
91 | req.method = 'POST' | 92 | req.method = 'POST' |
92 | req.url = '/accounts/ronan/inbox' | 93 | req.url = '/accounts/ronan/inbox' |
93 | 94 | ||
94 | const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json')) | 95 | const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json'))) |
95 | req.body = mastodonObject.body | 96 | req.body = mastodonObject.body |
96 | req.headers = mastodonObject.headers | 97 | req.headers = mastodonObject.headers |
97 | 98 | ||
98 | const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) | 99 | const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) |
99 | const publicKey = require('./json/mastodon/bad-public-key.json').publicKey | 100 | const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/bad-public-key.json')).publicKey |
100 | 101 | ||
101 | const actor = { publicKey } | 102 | const actor = { publicKey } |
102 | const verified = isHTTPSignatureVerified(parsed, actor as any) | 103 | const verified = isHTTPSignatureVerified(parsed, actor as any) |
@@ -109,7 +110,7 @@ describe('Test activity pub helpers', function () { | |||
109 | req.method = 'POST' | 110 | req.method = 'POST' |
110 | req.url = '/accounts/ronan/inbox' | 111 | req.url = '/accounts/ronan/inbox' |
111 | 112 | ||
112 | const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json')) | 113 | const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json'))) |
113 | req.body = mastodonObject.body | 114 | req.body = mastodonObject.body |
114 | req.headers = mastodonObject.headers | 115 | req.headers = mastodonObject.headers |
115 | 116 | ||
@@ -128,7 +129,7 @@ describe('Test activity pub helpers', function () { | |||
128 | req.method = 'POST' | 129 | req.method = 'POST' |
129 | req.url = '/accounts/ronan/inbox' | 130 | req.url = '/accounts/ronan/inbox' |
130 | 131 | ||
131 | const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json')) | 132 | const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json'))) |
132 | req.body = mastodonObject.body | 133 | req.body = mastodonObject.body |
133 | req.headers = mastodonObject.headers | 134 | req.headers = mastodonObject.headers |
134 | req.headers = 'Signature ' + mastodonObject.headers | 135 | req.headers = 'Signature ' + mastodonObject.headers |
@@ -148,12 +149,12 @@ describe('Test activity pub helpers', function () { | |||
148 | req.method = 'POST' | 149 | req.method = 'POST' |
149 | req.url = '/accounts/ronan/inbox' | 150 | req.url = '/accounts/ronan/inbox' |
150 | 151 | ||
151 | const mastodonObject = cloneDeep(require('./json/mastodon/http-signature.json')) | 152 | const mastodonObject = cloneDeep(require(buildAbsoluteFixturePath('./ap-json/mastodon/http-signature.json'))) |
152 | req.body = mastodonObject.body | 153 | req.body = mastodonObject.body |
153 | req.headers = mastodonObject.headers | 154 | req.headers = mastodonObject.headers |
154 | 155 | ||
155 | const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) | 156 | const parsed = parseHTTPSignature(req, 3600 * 1000 * 365 * 10) |
156 | const publicKey = require('./json/mastodon/public-key.json').publicKey | 157 | const publicKey = require(buildAbsoluteFixturePath('./ap-json/mastodon/public-key.json')).publicKey |
157 | 158 | ||
158 | const actor = { publicKey } | 159 | const actor = { publicKey } |
159 | const verified = isHTTPSignatureVerified(parsed, actor as any) | 160 | const verified = isHTTPSignatureVerified(parsed, actor as any) |
diff --git a/server/tests/api/activitypub/security.ts b/server/tests/api/activitypub/security.ts index 364b53e0f..61db272f6 100644 --- a/server/tests/api/activitypub/security.ts +++ b/server/tests/api/activitypub/security.ts | |||
@@ -5,6 +5,7 @@ import * as chai from 'chai' | |||
5 | import { buildDigest } from '@server/helpers/peertube-crypto' | 5 | import { buildDigest } from '@server/helpers/peertube-crypto' |
6 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | 6 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' |
7 | import { | 7 | import { |
8 | buildAbsoluteFixturePath, | ||
8 | cleanupTests, | 9 | cleanupTests, |
9 | closeAllSequelize, | 10 | closeAllSequelize, |
10 | flushAndRunMultipleServers, | 11 | flushAndRunMultipleServers, |
@@ -40,7 +41,7 @@ function setUpdatedAtOfServer (onServer: ServerInfo, ofServer: ServerInfo, updat | |||
40 | } | 41 | } |
41 | 42 | ||
42 | function getAnnounceWithoutContext (server: ServerInfo) { | 43 | function getAnnounceWithoutContext (server: ServerInfo) { |
43 | const json = require('./json/peertube/announce-without-context.json') | 44 | const json = require(buildAbsoluteFixturePath('./ap-json/peertube/announce-without-context.json')) |
44 | const result: typeof json = {} | 45 | const result: typeof json = {} |
45 | 46 | ||
46 | for (const key of Object.keys(json)) { | 47 | for (const key of Object.keys(json)) { |
@@ -58,8 +59,8 @@ describe('Test ActivityPub security', function () { | |||
58 | let servers: ServerInfo[] | 59 | let servers: ServerInfo[] |
59 | let url: string | 60 | let url: string |
60 | 61 | ||
61 | const keys = require('./json/peertube/keys.json') | 62 | const keys = require(buildAbsoluteFixturePath('./ap-json/peertube/keys.json')) |
62 | const invalidKeys = require('./json/peertube/invalid-keys.json') | 63 | const invalidKeys = require(buildAbsoluteFixturePath('./ap-json/peertube/invalid-keys.json')) |
63 | const baseHttpSignature = () => ({ | 64 | const baseHttpSignature = () => ({ |
64 | algorithm: HTTP_SIGNATURE.ALGORITHM, | 65 | algorithm: HTTP_SIGNATURE.ALGORITHM, |
65 | authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME, | 66 | authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME, |
diff --git a/server/tests/api/check-params/live.ts b/server/tests/api/check-params/live.ts index c171b1f81..32233c9da 100644 --- a/server/tests/api/check-params/live.ts +++ b/server/tests/api/check-params/live.ts | |||
@@ -2,9 +2,10 @@ | |||
2 | 2 | ||
3 | import 'mocha' | 3 | import 'mocha' |
4 | import { omit } from 'lodash' | 4 | import { omit } from 'lodash' |
5 | import { join } from 'path' | ||
6 | import { LiveVideo, VideoPrivacy } from '@shared/models' | 5 | import { LiveVideo, VideoPrivacy } from '@shared/models' |
6 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | ||
7 | import { | 7 | import { |
8 | buildAbsoluteFixturePath, | ||
8 | cleanupTests, | 9 | cleanupTests, |
9 | createUser, | 10 | createUser, |
10 | flushAndRunServer, | 11 | flushAndRunServer, |
@@ -24,7 +25,6 @@ import { | |||
24 | userLogin, | 25 | userLogin, |
25 | waitUntilLivePublished | 26 | waitUntilLivePublished |
26 | } from '../../../../shared/extra-utils' | 27 | } from '../../../../shared/extra-utils' |
27 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | ||
28 | 28 | ||
29 | describe('Test video lives API validator', function () { | 29 | describe('Test video lives API validator', function () { |
30 | const path = '/api/v1/videos/live' | 30 | const path = '/api/v1/videos/live' |
@@ -180,7 +180,7 @@ describe('Test video lives API validator', function () { | |||
180 | it('Should fail with an incorrect thumbnail file', async function () { | 180 | it('Should fail with an incorrect thumbnail file', async function () { |
181 | const fields = baseCorrectParams | 181 | const fields = baseCorrectParams |
182 | const attaches = { | 182 | const attaches = { |
183 | thumbnailfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') | 183 | thumbnailfile: buildAbsoluteFixturePath('video_short.mp4') |
184 | } | 184 | } |
185 | 185 | ||
186 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 186 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
@@ -189,7 +189,7 @@ describe('Test video lives API validator', function () { | |||
189 | it('Should fail with a big thumbnail file', async function () { | 189 | it('Should fail with a big thumbnail file', async function () { |
190 | const fields = baseCorrectParams | 190 | const fields = baseCorrectParams |
191 | const attaches = { | 191 | const attaches = { |
192 | thumbnailfile: join(__dirname, '..', '..', 'fixtures', 'preview-big.png') | 192 | thumbnailfile: buildAbsoluteFixturePath('preview-big.png') |
193 | } | 193 | } |
194 | 194 | ||
195 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 195 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
@@ -198,7 +198,7 @@ describe('Test video lives API validator', function () { | |||
198 | it('Should fail with an incorrect preview file', async function () { | 198 | it('Should fail with an incorrect preview file', async function () { |
199 | const fields = baseCorrectParams | 199 | const fields = baseCorrectParams |
200 | const attaches = { | 200 | const attaches = { |
201 | previewfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') | 201 | previewfile: buildAbsoluteFixturePath('video_short.mp4') |
202 | } | 202 | } |
203 | 203 | ||
204 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 204 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
@@ -207,7 +207,7 @@ describe('Test video lives API validator', function () { | |||
207 | it('Should fail with a big preview file', async function () { | 207 | it('Should fail with a big preview file', async function () { |
208 | const fields = baseCorrectParams | 208 | const fields = baseCorrectParams |
209 | const attaches = { | 209 | const attaches = { |
210 | previewfile: join(__dirname, '..', '..', 'fixtures', 'preview-big.png') | 210 | previewfile: buildAbsoluteFixturePath('preview-big.png') |
211 | } | 211 | } |
212 | 212 | ||
213 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 213 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
diff --git a/server/tests/api/check-params/users.ts b/server/tests/api/check-params/users.ts index dcff0d52b..36482ee17 100644 --- a/server/tests/api/check-params/users.ts +++ b/server/tests/api/check-params/users.ts | |||
@@ -2,12 +2,12 @@ | |||
2 | 2 | ||
3 | import 'mocha' | 3 | import 'mocha' |
4 | import { omit } from 'lodash' | 4 | import { omit } from 'lodash' |
5 | import { join } from 'path' | ||
6 | import { User, UserRole } from '../../../../shared' | 5 | import { User, UserRole } from '../../../../shared' |
7 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | 6 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' |
8 | import { | 7 | import { |
9 | addVideoChannel, | 8 | addVideoChannel, |
10 | blockUser, | 9 | blockUser, |
10 | buildAbsoluteFixturePath, | ||
11 | cleanupTests, | 11 | cleanupTests, |
12 | createUser, | 12 | createUser, |
13 | deleteMe, | 13 | deleteMe, |
@@ -600,7 +600,7 @@ describe('Test users API validators', function () { | |||
600 | it('Should fail without an incorrect input file', async function () { | 600 | it('Should fail without an incorrect input file', async function () { |
601 | const fields = {} | 601 | const fields = {} |
602 | const attaches = { | 602 | const attaches = { |
603 | avatarfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') | 603 | avatarfile: buildAbsoluteFixturePath('video_short.mp4') |
604 | } | 604 | } |
605 | await makeUploadRequest({ url: server.url, path: path + '/me/avatar/pick', token: server.accessToken, fields, attaches }) | 605 | await makeUploadRequest({ url: server.url, path: path + '/me/avatar/pick', token: server.accessToken, fields, attaches }) |
606 | }) | 606 | }) |
@@ -608,7 +608,7 @@ describe('Test users API validators', function () { | |||
608 | it('Should fail with a big file', async function () { | 608 | it('Should fail with a big file', async function () { |
609 | const fields = {} | 609 | const fields = {} |
610 | const attaches = { | 610 | const attaches = { |
611 | avatarfile: join(__dirname, '..', '..', 'fixtures', 'avatar-big.png') | 611 | avatarfile: buildAbsoluteFixturePath('avatar-big.png') |
612 | } | 612 | } |
613 | await makeUploadRequest({ url: server.url, path: path + '/me/avatar/pick', token: server.accessToken, fields, attaches }) | 613 | await makeUploadRequest({ url: server.url, path: path + '/me/avatar/pick', token: server.accessToken, fields, attaches }) |
614 | }) | 614 | }) |
@@ -616,7 +616,7 @@ describe('Test users API validators', function () { | |||
616 | it('Should fail with an unauthenticated user', async function () { | 616 | it('Should fail with an unauthenticated user', async function () { |
617 | const fields = {} | 617 | const fields = {} |
618 | const attaches = { | 618 | const attaches = { |
619 | avatarfile: join(__dirname, '..', '..', 'fixtures', 'avatar.png') | 619 | avatarfile: buildAbsoluteFixturePath('avatar.png') |
620 | } | 620 | } |
621 | await makeUploadRequest({ | 621 | await makeUploadRequest({ |
622 | url: server.url, | 622 | url: server.url, |
@@ -630,7 +630,7 @@ describe('Test users API validators', function () { | |||
630 | it('Should succeed with the correct params', async function () { | 630 | it('Should succeed with the correct params', async function () { |
631 | const fields = {} | 631 | const fields = {} |
632 | const attaches = { | 632 | const attaches = { |
633 | avatarfile: join(__dirname, '..', '..', 'fixtures', 'avatar.png') | 633 | avatarfile: buildAbsoluteFixturePath('avatar.png') |
634 | } | 634 | } |
635 | await makeUploadRequest({ | 635 | await makeUploadRequest({ |
636 | url: server.url, | 636 | url: server.url, |
diff --git a/server/tests/api/check-params/video-captions.ts b/server/tests/api/check-params/video-captions.ts index 2f049c03d..1ce2202d2 100644 --- a/server/tests/api/check-params/video-captions.ts +++ b/server/tests/api/check-params/video-captions.ts | |||
@@ -1,7 +1,10 @@ | |||
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ | 1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ |
2 | 2 | ||
3 | import 'mocha' | 3 | import 'mocha' |
4 | |||
5 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | ||
4 | import { | 6 | import { |
7 | buildAbsoluteFixturePath, | ||
5 | cleanupTests, | 8 | cleanupTests, |
6 | createUser, | 9 | createUser, |
7 | flushAndRunServer, | 10 | flushAndRunServer, |
@@ -13,9 +16,7 @@ import { | |||
13 | uploadVideo, | 16 | uploadVideo, |
14 | userLogin | 17 | userLogin |
15 | } from '../../../../shared/extra-utils' | 18 | } from '../../../../shared/extra-utils' |
16 | import { join } from 'path' | ||
17 | import { createVideoCaption } from '../../../../shared/extra-utils/videos/video-captions' | 19 | import { createVideoCaption } from '../../../../shared/extra-utils/videos/video-captions' |
18 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | ||
19 | 20 | ||
20 | describe('Test video captions API validator', function () { | 21 | describe('Test video captions API validator', function () { |
21 | const path = '/api/v1/videos/' | 22 | const path = '/api/v1/videos/' |
@@ -51,7 +52,7 @@ describe('Test video captions API validator', function () { | |||
51 | describe('When adding video caption', function () { | 52 | describe('When adding video caption', function () { |
52 | const fields = { } | 53 | const fields = { } |
53 | const attaches = { | 54 | const attaches = { |
54 | captionfile: join(__dirname, '..', '..', 'fixtures', 'subtitle-good1.vtt') | 55 | captionfile: buildAbsoluteFixturePath('subtitle-good1.vtt') |
55 | } | 56 | } |
56 | 57 | ||
57 | it('Should fail without a valid uuid', async function () { | 58 | it('Should fail without a valid uuid', async function () { |
@@ -129,7 +130,7 @@ describe('Test video captions API validator', function () { | |||
129 | // We accept any file now | 130 | // We accept any file now |
130 | // it('Should fail with an invalid captionfile extension', async function () { | 131 | // it('Should fail with an invalid captionfile extension', async function () { |
131 | // const attaches = { | 132 | // const attaches = { |
132 | // 'captionfile': join(__dirname, '..', '..', 'fixtures', 'subtitle-bad.txt') | 133 | // 'captionfile': buildAbsoluteFixturePath('subtitle-bad.txt') |
133 | // } | 134 | // } |
134 | // | 135 | // |
135 | // const captionPath = path + videoUUID + '/captions/fr' | 136 | // const captionPath = path + videoUUID + '/captions/fr' |
@@ -171,7 +172,7 @@ describe('Test video captions API validator', function () { | |||
171 | // We don't check the file validity yet | 172 | // We don't check the file validity yet |
172 | // it('Should fail with an invalid captionfile srt', async function () { | 173 | // it('Should fail with an invalid captionfile srt', async function () { |
173 | // const attaches = { | 174 | // const attaches = { |
174 | // 'captionfile': join(__dirname, '..', '..', 'fixtures', 'subtitle-bad.srt') | 175 | // 'captionfile': buildAbsoluteFixturePath('subtitle-bad.srt') |
175 | // } | 176 | // } |
176 | // | 177 | // |
177 | // const captionPath = path + videoUUID + '/captions/fr' | 178 | // const captionPath = path + videoUUID + '/captions/fr' |
diff --git a/server/tests/api/check-params/video-channels.ts b/server/tests/api/check-params/video-channels.ts index bc2e6192e..5c02afd31 100644 --- a/server/tests/api/check-params/video-channels.ts +++ b/server/tests/api/check-params/video-channels.ts | |||
@@ -1,9 +1,11 @@ | |||
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ | 1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ |
2 | 2 | ||
3 | import 'mocha' | ||
3 | import * as chai from 'chai' | 4 | import * as chai from 'chai' |
4 | import { omit } from 'lodash' | 5 | import { omit } from 'lodash' |
5 | import 'mocha' | 6 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' |
6 | import { | 7 | import { |
8 | buildAbsoluteFixturePath, | ||
7 | cleanupTests, | 9 | cleanupTests, |
8 | createUser, | 10 | createUser, |
9 | deleteVideoChannel, | 11 | deleteVideoChannel, |
@@ -23,9 +25,7 @@ import { | |||
23 | checkBadSortPagination, | 25 | checkBadSortPagination, |
24 | checkBadStartPagination | 26 | checkBadStartPagination |
25 | } from '../../../../shared/extra-utils/requests/check-api-params' | 27 | } from '../../../../shared/extra-utils/requests/check-api-params' |
26 | import { join } from 'path' | ||
27 | import { VideoChannelUpdate } from '../../../../shared/models/videos' | 28 | import { VideoChannelUpdate } from '../../../../shared/models/videos' |
28 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | ||
29 | 29 | ||
30 | const expect = chai.expect | 30 | const expect = chai.expect |
31 | 31 | ||
@@ -246,7 +246,7 @@ describe('Test video channels API validator', function () { | |||
246 | for (const type of types) { | 246 | for (const type of types) { |
247 | const fields = {} | 247 | const fields = {} |
248 | const attaches = { | 248 | const attaches = { |
249 | [type + 'file']: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') | 249 | [type + 'file']: buildAbsoluteFixturePath('video_short.mp4') |
250 | } | 250 | } |
251 | 251 | ||
252 | await makeUploadRequest({ url: server.url, path: `${path}/${type}/pick`, token: server.accessToken, fields, attaches }) | 252 | 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 () { | |||
257 | for (const type of types) { | 257 | for (const type of types) { |
258 | const fields = {} | 258 | const fields = {} |
259 | const attaches = { | 259 | const attaches = { |
260 | [type + 'file']: join(__dirname, '..', '..', 'fixtures', 'avatar-big.png') | 260 | [type + 'file']: buildAbsoluteFixturePath('avatar-big.png') |
261 | } | 261 | } |
262 | await makeUploadRequest({ url: server.url, path: `${path}/${type}/pick`, token: server.accessToken, fields, attaches }) | 262 | await makeUploadRequest({ url: server.url, path: `${path}/${type}/pick`, token: server.accessToken, fields, attaches }) |
263 | } | 263 | } |
@@ -267,7 +267,7 @@ describe('Test video channels API validator', function () { | |||
267 | for (const type of types) { | 267 | for (const type of types) { |
268 | const fields = {} | 268 | const fields = {} |
269 | const attaches = { | 269 | const attaches = { |
270 | [type + 'file']: join(__dirname, '..', '..', 'fixtures', 'avatar.png') | 270 | [type + 'file']: buildAbsoluteFixturePath('avatar.png') |
271 | } | 271 | } |
272 | await makeUploadRequest({ | 272 | await makeUploadRequest({ |
273 | url: server.url, | 273 | url: server.url, |
@@ -283,7 +283,7 @@ describe('Test video channels API validator', function () { | |||
283 | for (const type of types) { | 283 | for (const type of types) { |
284 | const fields = {} | 284 | const fields = {} |
285 | const attaches = { | 285 | const attaches = { |
286 | [type + 'file']: join(__dirname, '..', '..', 'fixtures', 'avatar.png') | 286 | [type + 'file']: buildAbsoluteFixturePath('avatar.png') |
287 | } | 287 | } |
288 | await makeUploadRequest({ | 288 | await makeUploadRequest({ |
289 | url: server.url, | 289 | url: server.url, |
diff --git a/server/tests/api/check-params/video-imports.ts b/server/tests/api/check-params/video-imports.ts index 6de6b40c8..a27b624d0 100644 --- a/server/tests/api/check-params/video-imports.ts +++ b/server/tests/api/check-params/video-imports.ts | |||
@@ -2,8 +2,9 @@ | |||
2 | 2 | ||
3 | import 'mocha' | 3 | import 'mocha' |
4 | import { omit } from 'lodash' | 4 | import { omit } from 'lodash' |
5 | import { join } from 'path' | 5 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' |
6 | import { | 6 | import { |
7 | buildAbsoluteFixturePath, | ||
7 | cleanupTests, | 8 | cleanupTests, |
8 | createUser, | 9 | createUser, |
9 | flushAndRunServer, | 10 | flushAndRunServer, |
@@ -22,9 +23,8 @@ import { | |||
22 | checkBadSortPagination, | 23 | checkBadSortPagination, |
23 | checkBadStartPagination | 24 | checkBadStartPagination |
24 | } from '../../../../shared/extra-utils/requests/check-api-params' | 25 | } from '../../../../shared/extra-utils/requests/check-api-params' |
25 | import { getMagnetURI, getGoodVideoUrl } from '../../../../shared/extra-utils/videos/video-imports' | 26 | import { getGoodVideoUrl, getMagnetURI } from '../../../../shared/extra-utils/videos/video-imports' |
26 | import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum' | 27 | import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum' |
27 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | ||
28 | 28 | ||
29 | describe('Test video imports API validator', function () { | 29 | describe('Test video imports API validator', function () { |
30 | const path = '/api/v1/videos/imports' | 30 | const path = '/api/v1/videos/imports' |
@@ -201,7 +201,7 @@ describe('Test video imports API validator', function () { | |||
201 | it('Should fail with an incorrect thumbnail file', async function () { | 201 | it('Should fail with an incorrect thumbnail file', async function () { |
202 | const fields = baseCorrectParams | 202 | const fields = baseCorrectParams |
203 | const attaches = { | 203 | const attaches = { |
204 | thumbnailfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') | 204 | thumbnailfile: buildAbsoluteFixturePath('video_short.mp4') |
205 | } | 205 | } |
206 | 206 | ||
207 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 207 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
@@ -210,7 +210,7 @@ describe('Test video imports API validator', function () { | |||
210 | it('Should fail with a big thumbnail file', async function () { | 210 | it('Should fail with a big thumbnail file', async function () { |
211 | const fields = baseCorrectParams | 211 | const fields = baseCorrectParams |
212 | const attaches = { | 212 | const attaches = { |
213 | thumbnailfile: join(__dirname, '..', '..', 'fixtures', 'preview-big.png') | 213 | thumbnailfile: buildAbsoluteFixturePath('preview-big.png') |
214 | } | 214 | } |
215 | 215 | ||
216 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 216 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
@@ -219,7 +219,7 @@ describe('Test video imports API validator', function () { | |||
219 | it('Should fail with an incorrect preview file', async function () { | 219 | it('Should fail with an incorrect preview file', async function () { |
220 | const fields = baseCorrectParams | 220 | const fields = baseCorrectParams |
221 | const attaches = { | 221 | const attaches = { |
222 | previewfile: join(__dirname, '..', '..', 'fixtures', 'video_short.mp4') | 222 | previewfile: buildAbsoluteFixturePath('video_short.mp4') |
223 | } | 223 | } |
224 | 224 | ||
225 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 225 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
@@ -228,7 +228,7 @@ describe('Test video imports API validator', function () { | |||
228 | it('Should fail with a big preview file', async function () { | 228 | it('Should fail with a big preview file', async function () { |
229 | const fields = baseCorrectParams | 229 | const fields = baseCorrectParams |
230 | const attaches = { | 230 | const attaches = { |
231 | previewfile: join(__dirname, '..', '..', 'fixtures', 'preview-big.png') | 231 | previewfile: buildAbsoluteFixturePath('preview-big.png') |
232 | } | 232 | } |
233 | 233 | ||
234 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 234 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
@@ -237,7 +237,7 @@ describe('Test video imports API validator', function () { | |||
237 | it('Should fail with an invalid torrent file', async function () { | 237 | it('Should fail with an invalid torrent file', async function () { |
238 | const fields = omit(baseCorrectParams, 'targetUrl') | 238 | const fields = omit(baseCorrectParams, 'targetUrl') |
239 | const attaches = { | 239 | const attaches = { |
240 | torrentfile: join(__dirname, '..', '..', 'fixtures', 'avatar-big.png') | 240 | torrentfile: buildAbsoluteFixturePath('avatar-big.png') |
241 | } | 241 | } |
242 | 242 | ||
243 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) | 243 | await makeUploadRequest({ url: server.url, path, token: server.accessToken, fields, attaches }) |
@@ -312,7 +312,7 @@ describe('Test video imports API validator', function () { | |||
312 | 312 | ||
313 | fields = omit(fields, 'magnetUri') | 313 | fields = omit(fields, 'magnetUri') |
314 | const attaches = { | 314 | const attaches = { |
315 | torrentfile: join(__dirname, '..', '..', 'fixtures', 'video-720p.torrent') | 315 | torrentfile: buildAbsoluteFixturePath('video-720p.torrent') |
316 | } | 316 | } |
317 | 317 | ||
318 | await makeUploadRequest({ | 318 | await makeUploadRequest({ |
diff --git a/server/tests/api/server/contact-form.ts b/server/tests/api/server/contact-form.ts index 9b4af1915..8851ad55e 100644 --- a/server/tests/api/server/contact-form.ts +++ b/server/tests/api/server/contact-form.ts | |||
@@ -54,6 +54,10 @@ describe('Test contact form', function () { | |||
54 | }) | 54 | }) |
55 | 55 | ||
56 | it('Should not be able to send another contact form because of the anti spam checker', async function () { | 56 | it('Should not be able to send another contact form because of the anti spam checker', async function () { |
57 | this.timeout(10000) | ||
58 | |||
59 | await wait(1000) | ||
60 | |||
57 | await sendContactForm({ | 61 | await sendContactForm({ |
58 | url: server.url, | 62 | url: server.url, |
59 | fromEmail: 'toto@example.com', | 63 | fromEmail: 'toto@example.com', |
diff --git a/server/tests/api/videos/multiple-servers.ts b/server/tests/api/videos/multiple-servers.ts index e80d69cf3..a8c8a889b 100644 --- a/server/tests/api/videos/multiple-servers.ts +++ b/server/tests/api/videos/multiple-servers.ts | |||
@@ -2,11 +2,11 @@ | |||
2 | 2 | ||
3 | import 'mocha' | 3 | import 'mocha' |
4 | import * as chai from 'chai' | 4 | import * as chai from 'chai' |
5 | import { join } from 'path' | ||
6 | import * as request from 'supertest' | 5 | import * as request from 'supertest' |
7 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' | 6 | import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes' |
8 | import { | 7 | import { |
9 | addVideoChannel, | 8 | addVideoChannel, |
9 | buildAbsoluteFixturePath, | ||
10 | checkTmpIsEmpty, | 10 | checkTmpIsEmpty, |
11 | checkVideoFilesWereRemoved, | 11 | checkVideoFilesWereRemoved, |
12 | cleanupTests, | 12 | cleanupTests, |
@@ -1018,9 +1018,7 @@ describe('Test multiple servers', function () { | |||
1018 | .field('privacy', '1') | 1018 | .field('privacy', '1') |
1019 | .field('channelId', '1') | 1019 | .field('channelId', '1') |
1020 | 1020 | ||
1021 | const filePath = join(__dirname, '..', '..', 'fixtures', 'video_short.webm') | 1021 | await req.attach('videofile', buildAbsoluteFixturePath('video_short.webm')) |
1022 | |||
1023 | await req.attach('videofile', filePath) | ||
1024 | .expect(HttpStatusCode.OK_200) | 1022 | .expect(HttpStatusCode.OK_200) |
1025 | 1023 | ||
1026 | await waitJobs(servers) | 1024 | await waitJobs(servers) |
diff --git a/server/tests/api/activitypub/json/mastodon/bad-body-http-signature.json b/server/tests/fixtures/ap-json/mastodon/bad-body-http-signature.json index 4e7bc3af5..4e7bc3af5 100644 --- a/server/tests/api/activitypub/json/mastodon/bad-body-http-signature.json +++ b/server/tests/fixtures/ap-json/mastodon/bad-body-http-signature.json | |||
diff --git a/server/tests/api/activitypub/json/mastodon/bad-http-signature.json b/server/tests/fixtures/ap-json/mastodon/bad-http-signature.json index 098597db0..098597db0 100644 --- a/server/tests/api/activitypub/json/mastodon/bad-http-signature.json +++ b/server/tests/fixtures/ap-json/mastodon/bad-http-signature.json | |||
diff --git a/server/tests/api/activitypub/json/mastodon/bad-public-key.json b/server/tests/fixtures/ap-json/mastodon/bad-public-key.json index 73d18b3ad..73d18b3ad 100644 --- a/server/tests/api/activitypub/json/mastodon/bad-public-key.json +++ b/server/tests/fixtures/ap-json/mastodon/bad-public-key.json | |||
diff --git a/server/tests/api/activitypub/json/mastodon/create-bad-signature.json b/server/tests/fixtures/ap-json/mastodon/create-bad-signature.json index 2cd037241..2cd037241 100644 --- a/server/tests/api/activitypub/json/mastodon/create-bad-signature.json +++ b/server/tests/fixtures/ap-json/mastodon/create-bad-signature.json | |||
diff --git a/server/tests/api/activitypub/json/mastodon/create.json b/server/tests/fixtures/ap-json/mastodon/create.json index 0be271bb8..0be271bb8 100644 --- a/server/tests/api/activitypub/json/mastodon/create.json +++ b/server/tests/fixtures/ap-json/mastodon/create.json | |||
diff --git a/server/tests/api/activitypub/json/mastodon/http-signature.json b/server/tests/fixtures/ap-json/mastodon/http-signature.json index 4e7bc3af5..4e7bc3af5 100644 --- a/server/tests/api/activitypub/json/mastodon/http-signature.json +++ b/server/tests/fixtures/ap-json/mastodon/http-signature.json | |||
diff --git a/server/tests/api/activitypub/json/mastodon/public-key.json b/server/tests/fixtures/ap-json/mastodon/public-key.json index b7b9b8308..b7b9b8308 100644 --- a/server/tests/api/activitypub/json/mastodon/public-key.json +++ b/server/tests/fixtures/ap-json/mastodon/public-key.json | |||
diff --git a/server/tests/api/activitypub/json/peertube/announce-without-context.json b/server/tests/fixtures/ap-json/peertube/announce-without-context.json index 5f2af0cde..5f2af0cde 100644 --- a/server/tests/api/activitypub/json/peertube/announce-without-context.json +++ b/server/tests/fixtures/ap-json/peertube/announce-without-context.json | |||
diff --git a/server/tests/api/activitypub/json/peertube/invalid-keys.json b/server/tests/fixtures/ap-json/peertube/invalid-keys.json index 0544e96b9..0544e96b9 100644 --- a/server/tests/api/activitypub/json/peertube/invalid-keys.json +++ b/server/tests/fixtures/ap-json/peertube/invalid-keys.json | |||
diff --git a/server/tests/api/activitypub/json/peertube/keys.json b/server/tests/fixtures/ap-json/peertube/keys.json index 1a7700865..1a7700865 100644 --- a/server/tests/api/activitypub/json/peertube/keys.json +++ b/server/tests/fixtures/ap-json/peertube/keys.json | |||
diff --git a/server/tests/plugins/filter-hooks.ts b/server/tests/plugins/filter-hooks.ts index 1d6bb6cf4..e78246d2d 100644 --- a/server/tests/plugins/filter-hooks.ts +++ b/server/tests/plugins/filter-hooks.ts | |||
@@ -326,7 +326,7 @@ describe('Test plugin filter hooks', function () { | |||
326 | }) | 326 | }) |
327 | 327 | ||
328 | it('Should blacklist on remote upload', async function () { | 328 | it('Should blacklist on remote upload', async function () { |
329 | this.timeout(60000) | 329 | this.timeout(120000) |
330 | 330 | ||
331 | const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'remote please blacklist me' }) | 331 | const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'remote please blacklist me' }) |
332 | await waitJobs(servers) | 332 | await waitJobs(servers) |
@@ -335,7 +335,7 @@ describe('Test plugin filter hooks', function () { | |||
335 | }) | 335 | }) |
336 | 336 | ||
337 | it('Should blacklist on remote update', async function () { | 337 | it('Should blacklist on remote update', async function () { |
338 | this.timeout(60000) | 338 | this.timeout(120000) |
339 | 339 | ||
340 | const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video' }) | 340 | const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video' }) |
341 | await waitJobs(servers) | 341 | await waitJobs(servers) |
diff --git a/server/tests/register.ts b/server/tests/register.ts new file mode 100644 index 000000000..af6c8c644 --- /dev/null +++ b/server/tests/register.ts | |||
@@ -0,0 +1,3 @@ | |||
1 | import { registerTSPaths } from '../helpers/register-ts-paths' | ||
2 | |||
3 | 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 index 088a5a08c..000000000 --- a/shared/extra-utils/miscs/email-child-process.js +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | const MailDev = require('maildev') | ||
2 | |||
3 | // must run maildev as forked ChildProcess | ||
4 | // failed instantiation stops main process with exit code 0 | ||
5 | process.on('message', (msg) => { | ||
6 | if (msg.start) { | ||
7 | const maildev = new MailDev({ | ||
8 | ip: '127.0.0.1', | ||
9 | smtp: msg.port, | ||
10 | disableWeb: true, | ||
11 | silent: true | ||
12 | }) | ||
13 | |||
14 | maildev.on('new', email => { | ||
15 | process.send({ email }) | ||
16 | }) | ||
17 | |||
18 | maildev.listen(err => { | ||
19 | if (err) { | ||
20 | // cannot send as Error object | ||
21 | return process.send({ err: err.message }) | ||
22 | } | ||
23 | |||
24 | return process.send({ err: null }) | ||
25 | }) | ||
26 | } | ||
27 | }) | ||
diff --git a/shared/extra-utils/miscs/email.ts b/shared/extra-utils/miscs/email.ts index 758b15b58..9fc9a5ad0 100644 --- a/shared/extra-utils/miscs/email.ts +++ b/shared/extra-utils/miscs/email.ts | |||
@@ -1,8 +1,9 @@ | |||
1 | import { ChildProcess, fork } from 'child_process' | 1 | import { ChildProcess } from 'child_process' |
2 | import { join } from 'path' | ||
3 | import { randomInt } from '../../core-utils/miscs/miscs' | 2 | import { randomInt } from '../../core-utils/miscs/miscs' |
4 | import { parallelTests } from '../server/servers' | 3 | import { parallelTests } from '../server/servers' |
5 | 4 | ||
5 | const MailDev = require('maildev') | ||
6 | |||
6 | class MockSmtpServer { | 7 | class MockSmtpServer { |
7 | 8 | ||
8 | private static instance: MockSmtpServer | 9 | private static instance: MockSmtpServer |
@@ -10,38 +11,32 @@ class MockSmtpServer { | |||
10 | private emailChildProcess: ChildProcess | 11 | private emailChildProcess: ChildProcess |
11 | private emails: object[] | 12 | private emails: object[] |
12 | 13 | ||
13 | private constructor () { | 14 | private constructor () { } |
14 | this.emailChildProcess = fork(join(__dirname, 'email-child-process'), []) | ||
15 | |||
16 | this.emailChildProcess.on('message', (msg: any) => { | ||
17 | if (msg.email) { | ||
18 | return this.emails.push(msg.email) | ||
19 | } | ||
20 | }) | ||
21 | |||
22 | process.on('exit', () => this.kill()) | ||
23 | } | ||
24 | 15 | ||
25 | collectEmails (emailsCollection: object[]) { | 16 | collectEmails (emailsCollection: object[]) { |
26 | return new Promise<number>((res, rej) => { | 17 | return new Promise<number>((res, rej) => { |
27 | const port = parallelTests() ? randomInt(1000, 2000) : 1025 | 18 | const port = parallelTests() ? randomInt(1000, 2000) : 1025 |
19 | this.emails = emailsCollection | ||
28 | 20 | ||
29 | if (this.started) { | 21 | if (this.started) { |
30 | this.emails = emailsCollection | ||
31 | return res(undefined) | 22 | return res(undefined) |
32 | } | 23 | } |
33 | 24 | ||
34 | // ensure maildev isn't started until | 25 | const maildev = new MailDev({ |
35 | // unexpected exit can be reported to test runner | 26 | ip: '127.0.0.1', |
36 | this.emailChildProcess.send({ start: true, port }) | 27 | smtp: port, |
37 | this.emailChildProcess.on('exit', () => { | 28 | disableWeb: true, |
38 | return rej(new Error('maildev exited unexpectedly, confirm port not in use')) | 29 | silent: true |
30 | }) | ||
31 | |||
32 | maildev.on('new', email => { | ||
33 | this.emails.push(email) | ||
39 | }) | 34 | }) |
40 | this.emailChildProcess.on('message', (msg: any) => { | 35 | |
41 | if (msg.err) return rej(new Error(msg.err)) | 36 | maildev.listen(err => { |
37 | if (err) return rej(err) | ||
42 | 38 | ||
43 | this.started = true | 39 | this.started = true |
44 | this.emails = emailsCollection | ||
45 | 40 | ||
46 | return res(port) | 41 | return res(port) |
47 | }) | 42 | }) |