]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/extra-utils/miscs/email.ts
move from trending routes to alg param
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / miscs / email.ts
index f9f1bd95b05736543b21e096cdca528b8dbd631a..15d298a73cfb194340a8c1b16b3ad26d1b03b51c 100644 (file)
@@ -1,4 +1,6 @@
-import { fork, ChildProcess } from 'child_process'
+import { ChildProcess, fork } from 'child_process'
+import { randomInt } from '../../core-utils/miscs/miscs'
+import { parallelTests } from '../server/servers'
 
 class MockSmtpServer {
 
@@ -10,7 +12,7 @@ class MockSmtpServer {
   private constructor () {
     this.emailChildProcess = fork(`${__dirname}/email-child-process`, [])
 
-    this.emailChildProcess.on('message', (msg) => {
+    this.emailChildProcess.on('message', (msg: any) => {
       if (msg.email) {
         return this.emails.push(msg.email)
       }
@@ -20,7 +22,9 @@ class MockSmtpServer {
   }
 
   collectEmails (emailsCollection: object[]) {
-    return new Promise((res, rej) => {
+    return new Promise<number>((res, rej) => {
+      const port = parallelTests() ? randomInt(1000, 2000) : 1025
+
       if (this.started) {
         this.emails = emailsCollection
         return res()
@@ -28,17 +32,17 @@ class MockSmtpServer {
 
       // ensure maildev isn't started until
       // unexpected exit can be reported to test runner
-      this.emailChildProcess.send({ start: true })
+      this.emailChildProcess.send({ start: true, port })
       this.emailChildProcess.on('exit', () => {
         return rej(new Error('maildev exited unexpectedly, confirm port not in use'))
       })
-      this.emailChildProcess.on('message', (msg) => {
-        if (msg.err) {
-          return rej(new Error(msg.err))
-        }
+      this.emailChildProcess.on('message', (msg: any) => {
+        if (msg.err) return rej(new Error(msg.err))
+
         this.started = true
         this.emails = emailsCollection
-        return res()
+
+        return res(port)
       })
     })
   }