Files

67 lines
2.1 KiB
TypeScript

import { expect, tap } from '@git.zone/tstest/tapbundle';
import * as smartsmtp from '../ts/index.js';
import { Qenv } from '@push.rocks/qenv';
import * as smartmail from '@push.rocks/smartmail';
const testQenv = new Qenv('./', './.nogit');
let testSmartsmtp: smartsmtp.Smartsmtp;
const requireEnv = async (envNameArg: string): Promise<string> => {
const envValue = await testQenv.getEnvVarOnDemand(envNameArg);
if (!envValue) {
throw new Error(`Missing required environment variable: ${envNameArg}`);
}
return envValue;
};
tap.test('should create a direct smartsmtp transport', async () => {
const smartsmtpInstance = await smartsmtp.Smartsmtp.createSmartsmtpSendmail();
expect(smartsmtpInstance).toBeInstanceOf(smartsmtp.Smartsmtp);
});
tap.test('should run SMTP integration flow', async () => {
if (process.env.SMARTSMTP_RUN_INTEGRATION_TESTS !== 'true') {
console.log('Skipping SMTP integration test. Set SMARTSMTP_RUN_INTEGRATION_TESTS=true to run it.');
return;
}
testSmartsmtp = await smartsmtp.Smartsmtp.createSmartsmtpWithRelay({
smtpServer: await requireEnv('SMTP_SERVER'),
smtpUser: await requireEnv('SMTP_USER'),
smtpPassword: await requireEnv('SMTP_PASSWORD'),
});
expect(testSmartsmtp).toBeInstanceOf(smartsmtp.Smartsmtp);
const result = await testSmartsmtp.sendSmartMail(
new smartmail.Smartmail({
body: '',
from: 'smartsmtp@mail.lossless.one',
subject: 'this is a test message',
}),
'sandbox@mail.git.zone'
);
console.log(result);
});
tap.test('should run sendmail integration flow', async () => {
if (process.env.SMARTSMTP_RUN_SENDMAIL_TESTS !== 'true') {
console.log('Skipping sendmail integration test. Set SMARTSMTP_RUN_SENDMAIL_TESTS=true to run it.');
return;
}
const smartsmtpInstance = await smartsmtp.Smartsmtp.createSmartsmtpSendmail();
const result = await smartsmtpInstance.sendSmartMail(
new smartmail.Smartmail({
body: 'hi there',
from: 'phil@lossless.com',
subject: 'this is a sendmail test message',
}),
'phil@kunz.io'
);
console.log(result);
});
export default tap.start();