mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 21:45:31 +09:00
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import type {APIConfig} from '@app/api/config/APIConfig';
|
|
import {createEmailProvider} from '@app/api/email/EmailProviderFactory';
|
|
import {DomainRoutedEmailProvider} from '@pkgs/email/src/DomainRoutedEmailProvider';
|
|
import {SmtpEmailProvider} from '@pkgs/email/src/SmtpEmailProvider';
|
|
import {describe, expect, it} from 'vitest';
|
|
|
|
const smtp = {host: 'smtp.example.com', port: 587, username: 'user', password: 'pass', tlsMode: null};
|
|
|
|
function emailConfig(overrides: Partial<APIConfig['email']> = {}): APIConfig['email'] {
|
|
return {
|
|
enabled: true,
|
|
provider: 'smtp',
|
|
fromEmail: '[email protected]',
|
|
fromName: 'Example',
|
|
replyToEmail: '',
|
|
appBaseUrl: 'https://example.com',
|
|
smtp,
|
|
...overrides,
|
|
};
|
|
}
|
|
|
|
describe('createEmailProvider', () => {
|
|
it('returns the plain SMTP provider without a fallback', () => {
|
|
expect(createEmailProvider(emailConfig())).toBeInstanceOf(SmtpEmailProvider);
|
|
});
|
|
|
|
it('routes by domain when a fallback is set', () => {
|
|
const provider = createEmailProvider(
|
|
emailConfig({fallback: {domains: ['gmail.com'], smtp: {...smtp, host: 'smtp.sendgrid.net'}}}),
|
|
);
|
|
expect(provider).toBeInstanceOf(DomainRoutedEmailProvider);
|
|
});
|
|
|
|
it.each([{enabled: false}, {provider: 'none' as const}, {smtp: undefined}])(
|
|
'returns no provider for %j even with a fallback',
|
|
(overrides) => {
|
|
const fallback = {domains: ['gmail.com'], smtp};
|
|
expect(createEmailProvider(emailConfig({fallback, ...overrides}))).toBeNull();
|
|
},
|
|
);
|
|
});
|