X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fapi%2Fusers%2Fusers-verification.ts;h=e05acdd7294dc433762c2e8917b252fd225ef55c;hb=59fd824cf3434a8417b73230f1840fed327e3495;hp=514acf2e7daf2de90b9262e1caab68c04b39f04d;hpb=97567dd81f508dd6295ac4d73d849aa2ce0a6549;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/api/users/users-verification.ts b/server/tests/api/users/users-verification.ts index 514acf2e7..e05acdd72 100644 --- a/server/tests/api/users/users-verification.ts +++ b/server/tests/api/users/users-verification.ts @@ -1,20 +1,31 @@ -/* tslint:disable:no-unused-expression */ +/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ import * as chai from 'chai' import 'mocha' import { - registerUser, flushTests, getUserInformation, getMyUserInformation, killallServers, - userLogin, login, flushAndRunServer, ServerInfo, verifyEmail, updateCustomSubConfig, wait, cleanupTests + cleanupTests, + flushAndRunServer, + getMyUserInformation, + getUserInformation, + login, + registerUser, + ServerInfo, + updateCustomSubConfig, + updateMyUser, + userLogin, + verifyEmail } from '../../../../shared/extra-utils' import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login' import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email' import { waitJobs } from '../../../../shared/extra-utils/server/jobs' +import { User } from '../../../../shared/models/users' const expect = chai.expect describe('Test users account verification', function () { let server: ServerInfo let userId: number + let userAccessToken: string let verificationString: string let expectedEmailsLength = 0 const user1 = { @@ -30,11 +41,12 @@ describe('Test users account verification', function () { before(async function () { this.timeout(30000) - await MockSmtpServer.Instance.collectEmails(emails) + const port = await MockSmtpServer.Instance.collectEmails(emails) const overrideConfig = { smtp: { - hostname: 'localhost' + hostname: 'localhost', + port } } server = await flushAndRunServer(1, overrideConfig) @@ -43,7 +55,8 @@ describe('Test users account verification', function () { }) it('Should register user and send verification email if verification required', async function () { - this.timeout(5000) + this.timeout(30000) + await updateCustomSubConfig(server.url, server.accessToken, { signup: { enabled: true, @@ -82,11 +95,54 @@ describe('Test users account verification', function () { it('Should verify the user via email and allow login', async function () { await verifyEmail(server.url, userId, verificationString) - await login(server.url, server.client, user1) + + const res = await login(server.url, server.client, user1) + userAccessToken = res.body.access_token + const resUserVerified = await getUserInformation(server.url, server.accessToken, userId) expect(resUserVerified.body.emailVerified).to.be.true }) + it('Should be able to change the user email', async function () { + let updateVerificationString: string + + { + await updateMyUser({ + url: server.url, + accessToken: userAccessToken, + email: 'updated@example.com', + currentPassword: user1.password + }) + + await waitJobs(server) + expectedEmailsLength++ + expect(emails).to.have.lengthOf(expectedEmailsLength) + + const email = emails[expectedEmailsLength - 1] + + const verificationStringMatches = /verificationString=([a-z0-9]+)/.exec(email['text']) + updateVerificationString = verificationStringMatches[1] + } + + { + const res = await getMyUserInformation(server.url, userAccessToken) + const me: User = res.body + + expect(me.email).to.equal('user_1@example.com') + expect(me.pendingEmail).to.equal('updated@example.com') + } + + { + await verifyEmail(server.url, userId, updateVerificationString, true) + + const res = await getMyUserInformation(server.url, userAccessToken) + const me: User = res.body + + expect(me.email).to.equal('updated@example.com') + expect(me.pendingEmail).to.be.null + } + }) + it('Should register user not requiring email verification if setting not enabled', async function () { this.timeout(5000) await updateCustomSubConfig(server.url, server.accessToken, {