mirror of https://github.com/eleith/emailjs.git
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import test from 'ava';
|
|
import { SMTPServer } from 'smtp-server';
|
|
|
|
import { SMTPConnection } from '../email.js';
|
|
import type { SMTPConnectionOptions } from '../email.js';
|
|
|
|
const port = 6666;
|
|
let counter = 0;
|
|
|
|
function testConnection(options: Partial<SMTPConnectionOptions> = {}) {
|
|
const increment = counter++;
|
|
return new Promise<void>((resolve, reject) => {
|
|
const server = new SMTPServer({ secure: options.ssl as boolean });
|
|
server.on('error', (err) => reject(err));
|
|
server.listen(port + increment, () => {
|
|
const connection = new SMTPConnection(options);
|
|
connection.connect((err) => {
|
|
server.close();
|
|
connection.close(true);
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve();
|
|
}
|
|
}, port + increment);
|
|
});
|
|
});
|
|
}
|
|
|
|
test('accepts a custom logger', async (t) => {
|
|
const logger = () => {
|
|
/** ø */
|
|
};
|
|
t.is(Reflect.get(new SMTPConnection({ logger }), 'log'), logger);
|
|
});
|
|
|
|
test('can connect without encryption', async (t) => {
|
|
return await t.notThrowsAsync(testConnection());
|
|
});
|
|
|
|
test('can connect with ssl', async (t) => {
|
|
return await t.notThrowsAsync(testConnection({ ssl: true }));
|
|
});
|
|
|
|
test('can connect with tls', async (t) => {
|
|
return await t.notThrowsAsync(testConnection({ tls: true }));
|
|
});
|
|
|
|
test('can connect with tls and ssl', async (t) => {
|
|
return await t.notThrowsAsync(testConnection({ ssl: true, tls: true }));
|
|
});
|