]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/extra-utils/miscs/email.ts
Rename mock server files
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / miscs / email.ts
index b2a1093da5e07509b13b4d8d53026252a56c3642..9fc9a5ad0312e670a8cd9b5fd7c2f27846e1075a 100644 (file)
@@ -1,7 +1,9 @@
-import { ChildProcess, fork } from 'child_process'
+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
@@ -9,39 +11,33 @@ class MockSmtpServer {
   private emailChildProcess: ChildProcess
   private emails: object[]
 
-  private constructor () {
-    this.emailChildProcess = fork(`${__dirname}/email-child-process`, [])
-
-    this.emailChildProcess.on('message', (msg) => {
-      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()
+        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) => {
-        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)
       })
     })