]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/extra-utils/miscs/email.ts
Faster ci using compiled ts files
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / miscs / email.ts
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)
       })