]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Test akismet plugin signup
authorChocobozzz <me@florianbigard.com>
Fri, 23 Sep 2022 14:23:06 +0000 (16:23 +0200)
committerChocobozzz <me@florianbigard.com>
Mon, 26 Sep 2022 14:27:06 +0000 (16:27 +0200)
server/tests/external-plugins/akismet.ts
shared/server-commands/users/users-command.ts

index 557fc3daffd34e573a0000cd2fd5ae2ea7cb48ae..974bf0011f7861c419fd51fbb6a09a6f9111b971 100644 (file)
@@ -21,7 +21,9 @@ describe('Official plugin Akismet', function () {
     servers = await createMultipleServers(2)
     await setAccessTokensToServers(servers)
 
-    await servers[0].plugins.install({ npmName: 'peertube-plugin-akismet' })
+    await servers[0].plugins.install({
+      npmName: 'peertube-plugin-akismet'
+    })
 
     if (!process.env.AKISMET_KEY) throw new Error('Missing AKISMET_KEY from env')
 
@@ -71,6 +73,8 @@ describe('Official plugin Akismet', function () {
 
       const { uuid } = await servers[0].videos.quickUpload({ name: 'video 1' })
       videoUUID = uuid
+
+      await waitJobs(servers)
     })
 
     it('Should not detect a thread as spam', async function () {
@@ -109,19 +113,44 @@ describe('Official plugin Akismet', function () {
     it('Should detect a thread as spam', async function () {
       this.timeout(30000)
 
-      await servers[1].comments.createThread({ videoId: videoUUID, text: 'remote comment 2' })
       await servers[1].comments.addReplyToLastThread({ text: 'akismet-guaranteed-spam' })
       await waitJobs(servers)
 
       const { data } = await servers[0].comments.listThreads({ videoId: videoUUID })
-      expect(data).to.have.lengthOf(2)
+      expect(data).to.have.lengthOf(1)
 
-      for (const thread of data) {
-        const tree = await servers[0].comments.getThread({ videoId: videoUUID, threadId: thread.id })
-        if (tree.comment.text === 'remote comment 1') continue
+      const thread = data[0]
+      const tree = await servers[0].comments.getThread({ videoId: videoUUID, threadId: thread.id })
+      expect(tree.children).to.have.lengthOf(1)
+    })
+  })
 
-        expect(tree.children).to.have.lengthOf(0)
-      }
+  describe('Signup', function () {
+
+    before(async function () {
+      await servers[0].config.updateExistingSubConfig({
+        newConfig: {
+          signup: {
+            enabled: true
+          }
+        }
+      })
+    })
+
+    it('Should allow signup', async function () {
+      await servers[0].users.register({
+        username: 'user1',
+        displayName: 'user 1'
+      })
+    })
+
+    it('Should detect a signup as SPAM', async function () {
+      await servers[0].users.register({
+        username: 'user2',
+        displayName: 'user 2',
+        email: 'akismet-guaranteed-spam@example.com',
+        expectedStatus: HttpStatusCode.FORBIDDEN_403
+      })
     })
   })
 
index d8303848d6c678789b8bd60b66f2309ffba295c9..e7d0210595bd937ce4de9b530006ac6b913887fc 100644 (file)
@@ -217,12 +217,13 @@ export class UsersCommand extends AbstractCommand {
     username: string
     password?: string
     displayName?: string
+    email?: string
     channel?: {
       name: string
       displayName: string
     }
   }) {
-    const { username, password = 'password', displayName, channel } = options
+    const { username, password = 'password', displayName, channel, email = username + '@example.com' } = options
     const path = '/api/v1/users/register'
 
     return this.postBodyRequest({
@@ -232,7 +233,7 @@ export class UsersCommand extends AbstractCommand {
       fields: {
         username,
         password,
-        email: username + '@example.com',
+        email,
         displayName,
         channel
       },