]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Introduce contact form command
authorChocobozzz <me@florianbigard.com>
Tue, 6 Jul 2021 13:53:25 +0000 (15:53 +0200)
committerChocobozzz <me@florianbigard.com>
Tue, 20 Jul 2021 13:27:17 +0000 (15:27 +0200)
server/tests/api/check-params/contact-form.ts
server/tests/api/server/contact-form.ts
shared/extra-utils/server/contact-form-command.ts [new file with mode: 0644]
shared/extra-utils/server/contact-form.ts [deleted file]
shared/extra-utils/server/index.ts [new file with mode: 0644]
shared/extra-utils/server/servers.ts

index 274562cbb7ae4daaa23a2c3b052e5ec5b6feab95..fb30766d90bca1991f0d5ea91448164ffbc8003e 100644 (file)
@@ -1,10 +1,9 @@
 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
 
 import 'mocha'
-import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
-import { cleanupTests, flushAndRunServer, immutableAssign, killallServers, reRunServer, ServerInfo } from '../../../../shared/extra-utils'
-import { MockSmtpServer } from '../../../../shared/extra-utils/mock-servers/mock-email'
-import { sendContactForm } from '../../../../shared/extra-utils/server/contact-form'
+import { HttpStatusCode } from '@shared/core-utils'
+import { cleanupTests, flushAndRunServer, killallServers, MockSmtpServer, reRunServer, ServerInfo } from '@shared/extra-utils'
+import { ContactFormCommand } from '@shared/extra-utils/server'
 
 describe('Test contact form API validators', function () {
   let server: ServerInfo
@@ -16,6 +15,7 @@ describe('Test contact form API validators', function () {
     body: 'Hello, how are you?'
   }
   let emailPort: number
+  let command: ContactFormCommand
 
   // ---------------------------------------------------------------
 
@@ -26,10 +26,11 @@ describe('Test contact form API validators', function () {
 
     // Email is disabled
     server = await flushAndRunServer(1)
+    command = server.contactFormCommand
   })
 
   it('Should not accept a contact form if emails are disabled', async function () {
-    await sendContactForm(immutableAssign(defaultBody, { url: server.url, expectedStatus: HttpStatusCode.CONFLICT_409 }))
+    await command.send({ ...defaultBody, expectedStatus: HttpStatusCode.CONFLICT_409 })
   })
 
   it('Should not accept a contact form if it is disabled in the configuration', async function () {
@@ -39,7 +40,7 @@ describe('Test contact form API validators', function () {
 
     // Contact form is disabled
     await reRunServer(server, { smtp: { hostname: 'localhost', port: emailPort }, contact_form: { enabled: false } })
-    await sendContactForm(immutableAssign(defaultBody, { url: server.url, expectedStatus: HttpStatusCode.CONFLICT_409 }))
+    await command.send({ ...defaultBody, expectedStatus: HttpStatusCode.CONFLICT_409 })
   })
 
   it('Should not accept a contact form if from email is invalid', async function () {
@@ -50,61 +51,25 @@ describe('Test contact form API validators', function () {
     // Email & contact form enabled
     await reRunServer(server, { smtp: { hostname: 'localhost', port: emailPort } })
 
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      fromEmail: 'badEmail'
-    }))
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      fromEmail: 'badEmail@'
-    }))
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      fromEmail: undefined
-    }))
+    await command.send({ ...defaultBody, fromEmail: 'badEmail', expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
+    await command.send({ ...defaultBody, fromEmail: 'badEmail@', expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
+    await command.send({ ...defaultBody, fromEmail: undefined, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
   })
 
   it('Should not accept a contact form if from name is invalid', async function () {
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      fromName: 'name'.repeat(100)
-    }))
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      fromName: ''
-    }))
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      fromName: undefined
-    }))
+    await command.send({ ...defaultBody, fromName: 'name'.repeat(100), expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
+    await command.send({ ...defaultBody, fromName: '', expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
+    await command.send({ ...defaultBody, fromName: undefined, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
   })
 
   it('Should not accept a contact form if body is invalid', async function () {
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      body: 'body'.repeat(5000)
-    }))
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      body: 'a'
-    }))
-    await sendContactForm(immutableAssign(defaultBody, {
-      url: server.url,
-      expectedStatus: HttpStatusCode.BAD_REQUEST_400,
-      body: undefined
-    }))
+    await command.send({ ...defaultBody, body: 'body'.repeat(5000), expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
+    await command.send({ ...defaultBody, body: 'a', expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
+    await command.send({ ...defaultBody, body: undefined, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
   })
 
   it('Should accept a contact form with the correct parameters', async function () {
-    await sendContactForm(immutableAssign(defaultBody, { url: server.url }))
+    await command.send({ ...defaultBody })
   })
 
   after(async function () {
index 71205723dc718d38dac4c5e596137d96eaefccd5..79c4c674857f6b16858f3161e18ac70dcd8d4a05 100644 (file)
@@ -2,17 +2,16 @@
 
 import 'mocha'
 import * as chai from 'chai'
-import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
-import { cleanupTests, flushAndRunServer, ServerInfo, setAccessTokensToServers, wait } from '../../../../shared/extra-utils'
-import { MockSmtpServer } from '../../../../shared/extra-utils/mock-servers/mock-email'
-import { sendContactForm } from '../../../../shared/extra-utils/server/contact-form'
-import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
+import { HttpStatusCode } from '@shared/core-utils'
+import { cleanupTests, flushAndRunServer, MockSmtpServer, ServerInfo, setAccessTokensToServers, wait, waitJobs } from '@shared/extra-utils'
+import { ContactFormCommand } from '@shared/extra-utils/server'
 
 const expect = chai.expect
 
 describe('Test contact form', function () {
   let server: ServerInfo
   const emails: object[] = []
+  let command: ContactFormCommand
 
   before(async function () {
     this.timeout(30000)
@@ -27,13 +26,14 @@ describe('Test contact form', function () {
     }
     server = await flushAndRunServer(1, overrideConfig)
     await setAccessTokensToServers([ server ])
+
+    command = server.contactFormCommand
   })
 
   it('Should send a contact form', async function () {
     this.timeout(10000)
 
-    await sendContactForm({
-      url: server.url,
+    await command.send({
       fromEmail: 'toto@example.com',
       body: 'my super message',
       subject: 'my subject',
@@ -58,16 +58,14 @@ describe('Test contact form', function () {
 
     await wait(1000)
 
-    await sendContactForm({
-      url: server.url,
+    await command.send({
       fromEmail: 'toto@example.com',
       body: 'my super message',
       subject: 'my subject',
       fromName: 'Super toto'
     })
 
-    await sendContactForm({
-      url: server.url,
+    await command.send({
       fromEmail: 'toto@example.com',
       body: 'my super message',
       fromName: 'Super toto',
@@ -79,8 +77,7 @@ describe('Test contact form', function () {
   it('Should be able to send another contact form after a while', async function () {
     await wait(1000)
 
-    await sendContactForm({
-      url: server.url,
+    await command.send({
       fromEmail: 'toto@example.com',
       fromName: 'Super toto',
       subject: 'my subject',
diff --git a/shared/extra-utils/server/contact-form-command.ts b/shared/extra-utils/server/contact-form-command.ts
new file mode 100644 (file)
index 0000000..943e5cc
--- /dev/null
@@ -0,0 +1,31 @@
+import { HttpStatusCode } from '../../core-utils/miscs/http-error-codes'
+import { ContactForm } from '../../models/server'
+import { AbstractCommand, OverrideCommandOptions } from '../shared'
+
+export class ContactFormCommand extends AbstractCommand {
+
+  send (options: OverrideCommandOptions & {
+    fromEmail: string
+    fromName: string
+    subject: string
+    body: string
+  }) {
+    const path = '/api/v1/server/contact'
+
+    const body: ContactForm = {
+      fromEmail: options.fromEmail,
+      fromName: options.fromName,
+      subject: options.subject,
+      body: options.body
+    }
+
+    return this.postBodyRequest({
+      ...options,
+
+      path,
+      token: null,
+      fields: body,
+      defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
+    })
+  }
+}
diff --git a/shared/extra-utils/server/contact-form.ts b/shared/extra-utils/server/contact-form.ts
deleted file mode 100644 (file)
index 6c9232c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-import * as request from 'supertest'
-import { ContactForm } from '../../models/server'
-import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
-
-function sendContactForm (options: {
-  url: string
-  fromEmail: string
-  fromName: string
-  subject: string
-  body: string
-  expectedStatus?: number
-}) {
-  const path = '/api/v1/server/contact'
-
-  const body: ContactForm = {
-    fromEmail: options.fromEmail,
-    fromName: options.fromName,
-    subject: options.subject,
-    body: options.body
-  }
-  return request(options.url)
-    .post(path)
-    .send(body)
-    .expect(options.expectedStatus || HttpStatusCode.NO_CONTENT_204)
-}
-
-// ---------------------------------------------------------------------------
-
-export {
-  sendContactForm
-}
diff --git a/shared/extra-utils/server/index.ts b/shared/extra-utils/server/index.ts
new file mode 100644 (file)
index 0000000..4121c88
--- /dev/null
@@ -0,0 +1 @@
+export * from './contact-form-command'
index 8ccf790fca40ba1121abc010f51affa8cfc367a3..b58639ba632be27c09b3d451c717cbf4769e8540 100644 (file)
@@ -16,6 +16,7 @@ import { AbusesCommand } from '../moderation'
 import { OverviewsCommand } from '../overviews'
 import { makeGetRequest } from '../requests/requests'
 import { SearchCommand } from '../search'
+import { ContactFormCommand } from './contact-form-command'
 
 interface ServerInfo {
   app: ChildProcess
@@ -77,6 +78,7 @@ interface ServerInfo {
   abusesCommand?: AbusesCommand
   overviewsCommand?: OverviewsCommand
   searchCommand?: SearchCommand
+  contactFormCommand?: ContactFormCommand
 }
 
 function parallelTests () {
@@ -290,6 +292,7 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = []
       server.abusesCommand = new AbusesCommand(server)
       server.overviewsCommand = new OverviewsCommand(server)
       server.searchCommand = new SearchCommand(server)
+      server.contactFormCommand = new ContactFormCommand(server)
 
       res(server)
     })