aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/extra-utils/mock-servers
diff options
context:
space:
mode:
Diffstat (limited to 'shared/extra-utils/mock-servers')
-rw-r--r--shared/extra-utils/mock-servers/index.ts4
-rw-r--r--shared/extra-utils/mock-servers/mock-email.ts64
-rw-r--r--shared/extra-utils/mock-servers/mock-joinpeertube-versions.ts (renamed from shared/extra-utils/mock-servers/joinpeertube-versions.ts)0
-rw-r--r--shared/extra-utils/mock-servers/mock-plugin-blocklist.ts37
4 files changed, 105 insertions, 0 deletions
diff --git a/shared/extra-utils/mock-servers/index.ts b/shared/extra-utils/mock-servers/index.ts
new file mode 100644
index 000000000..0ec07f685
--- /dev/null
+++ b/shared/extra-utils/mock-servers/index.ts
@@ -0,0 +1,4 @@
1export * from './mock-email'
2export * from './mock-instances-index'
3export * from './mock-joinpeertube-versions'
4export * from './mock-plugin-blocklist'
diff --git a/shared/extra-utils/mock-servers/mock-email.ts b/shared/extra-utils/mock-servers/mock-email.ts
new file mode 100644
index 000000000..ffd62e325
--- /dev/null
+++ b/shared/extra-utils/mock-servers/mock-email.ts
@@ -0,0 +1,64 @@
1import { ChildProcess } from 'child_process'
2import { randomInt } from '@shared/core-utils'
3import { parallelTests } from '../miscs'
4
5const MailDev = require('maildev')
6
7class MockSmtpServer {
8
9 private static instance: MockSmtpServer
10 private started = false
11 private emailChildProcess: ChildProcess
12 private emails: object[]
13
14 private constructor () { }
15
16 collectEmails (emailsCollection: object[]) {
17 return new Promise<number>((res, rej) => {
18 const port = parallelTests() ? randomInt(1000, 2000) : 1025
19 this.emails = emailsCollection
20
21 if (this.started) {
22 return res(undefined)
23 }
24
25 const maildev = new MailDev({
26 ip: '127.0.0.1',
27 smtp: port,
28 disableWeb: true,
29 silent: true
30 })
31
32 maildev.on('new', email => {
33 this.emails.push(email)
34 })
35
36 maildev.listen(err => {
37 if (err) return rej(err)
38
39 this.started = true
40
41 return res(port)
42 })
43 })
44 }
45
46 kill () {
47 if (!this.emailChildProcess) return
48
49 process.kill(this.emailChildProcess.pid)
50
51 this.emailChildProcess = null
52 MockSmtpServer.instance = null
53 }
54
55 static get Instance () {
56 return this.instance || (this.instance = new this())
57 }
58}
59
60// ---------------------------------------------------------------------------
61
62export {
63 MockSmtpServer
64}
diff --git a/shared/extra-utils/mock-servers/joinpeertube-versions.ts b/shared/extra-utils/mock-servers/mock-joinpeertube-versions.ts
index 5ea432ecf..5ea432ecf 100644
--- a/shared/extra-utils/mock-servers/joinpeertube-versions.ts
+++ b/shared/extra-utils/mock-servers/mock-joinpeertube-versions.ts
diff --git a/shared/extra-utils/mock-servers/mock-plugin-blocklist.ts b/shared/extra-utils/mock-servers/mock-plugin-blocklist.ts
new file mode 100644
index 000000000..d18f8224f
--- /dev/null
+++ b/shared/extra-utils/mock-servers/mock-plugin-blocklist.ts
@@ -0,0 +1,37 @@
1import * as express from 'express'
2import { Server } from 'http'
3import { randomInt } from '@shared/core-utils'
4
5type BlocklistResponse = {
6 data: {
7 value: string
8 action?: 'add' | 'remove'
9 updatedAt?: string
10 }[]
11}
12
13export class MockBlocklist {
14 private body: BlocklistResponse
15 private server: Server
16
17 initialize () {
18 return new Promise<number>(res => {
19 const app = express()
20
21 app.get('/blocklist', (req: express.Request, res: express.Response) => {
22 return res.json(this.body)
23 })
24
25 const port = 42201 + randomInt(1, 100)
26 this.server = app.listen(port, () => res(port))
27 })
28 }
29
30 replace (body: BlocklistResponse) {
31 this.body = body
32 }
33
34 terminate () {
35 if (this.server) this.server.close()
36 }
37}