AFFiNE/packages/backend/server/tests/mailer.e2e.ts

55 lines
1.6 KiB
TypeScript
Raw Normal View History

/// <reference types="../src/global.d.ts" />
2023-09-02 21:13:59 +03:00
// This test case is for testing the mailer service.
// Please use local SMTP server for testing.
// See: https://github.com/mailhog/MailHog
2023-09-13 08:11:19 +03:00
import {
getCurrentMailMessageCount,
getLatestMailMessage,
} from '@affine-test/kit/utils/cloud';
import { TestingModule } from '@nestjs/testing';
import type { TestFn } from 'ava';
import ava from 'ava';
2023-09-02 21:13:59 +03:00
import { AuthService } from '../src/core/auth/service';
import { ConfigModule } from '../src/fundamentals/config';
import { createTestingModule } from './utils';
2023-09-02 21:13:59 +03:00
const test = ava as TestFn<{
auth: AuthService;
module: TestingModule;
skip: boolean;
}>;
2023-09-02 21:13:59 +03:00
test.beforeEach(async t => {
t.context.module = await createTestingModule({
imports: [ConfigModule.forRoot({})],
});
t.context.auth = t.context.module.get(AuthService);
2023-09-02 21:13:59 +03:00
});
test.afterEach.always(async t => {
await t.context.module.close();
2023-09-02 21:13:59 +03:00
});
test('should include callbackUrl in sending email', async t => {
const { auth } = t.context;
2024-09-03 12:03:39 +03:00
await auth.signUp('test@affine.pro', '123456');
2023-09-02 21:13:59 +03:00
for (const fn of [
'sendSetPasswordEmail',
'sendChangeEmail',
'sendChangePasswordEmail',
'sendVerifyChangeEmail',
2023-09-02 21:13:59 +03:00
] as const) {
const prev = await getCurrentMailMessageCount();
2024-09-03 12:03:39 +03:00
await auth[fn]('test@affine.pro', 'https://test.com/callback');
2023-09-02 21:13:59 +03:00
const current = await getCurrentMailMessageCount();
const mail = await getLatestMailMessage();
t.regex(
mail?.Content?.Body,
2023-09-02 21:13:59 +03:00
/https:\/\/test.com\/callback/,
`should include callbackUrl when calling ${fn}`
);
t.is(current, prev + 1, `calling ${fn}`);
}
});