This commit is contained in:
Philipp Kunz 2025-05-23 19:49:25 +00:00
parent e0f6e3237b
commit a7438a7cd6
40 changed files with 189 additions and 178 deletions

View File

@ -1,19 +1,16 @@
import { tap, expect } from '@git.zone/tapbundle';
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer } from '../../helpers/server.loader.js';
import type { ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
const TEST_PORT = 30029;
const TEST_PORT = 2525;
const TEST_TIMEOUT = 30000;
let testServer: ITestServer;
let testServer: SmtpServer;
tap.test('setup - start SMTP server for abrupt disconnection tests', async () => {
testServer = await startTestServer({
port: TEST_PORT,
hostname: 'localhost'
});
expect(testServer).toBeInstanceOf(Object);
testServer = await startTestServer();
await new Promise(resolve => setTimeout(resolve, 1000));
});
tap.test('Abrupt Disconnection - should handle socket destruction without QUIT', async (tools) => {
@ -318,7 +315,7 @@ tap.test('Abrupt Disconnection - should timeout idle connections', async (tools)
});
tap.test('cleanup - stop SMTP server', async () => {
await stopTestServer(testServer);
await stopTestServer();
expect(true).toBeTrue();
});

View File

@ -1,25 +1,19 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import * as path from 'path';
import { startTestServer, stopTestServer } from '../../helpers/server.loader.js';
import type { ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
// Test configuration
const TEST_PORT = 2525;
const TEST_TIMEOUT = 5000;
let testServer: ITestServer;
let testServer: SmtpServer;
// Setup
tap.test('setup - start SMTP server', async () => {
testServer = await startTestServer({
port: TEST_PORT,
tlsEnabled: false,
hostname: 'localhost'
});
testServer = await startTestServer();
await new Promise(resolve => setTimeout(resolve, 1000));
expect(testServer).toBeTypeofObject();
expect(testServer.port).toEqual(TEST_PORT);
});
// Test: Basic connection limit enforcement
@ -374,9 +368,7 @@ tap.test('Connection Limits - should provide meaningful error when limit reached
// Teardown
tap.test('teardown - stop SMTP server', async () => {
if (testServer) {
await stopTestServer(testServer);
}
await stopTestServer();
});
// Start the test

View File

@ -1,19 +1,16 @@
import { tap, expect } from '@git.zone/tapbundle';
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer } from '../../helpers/server.loader.js';
import type { ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
const TEST_PORT = 30027;
const TEST_PORT = 2525;
const TEST_TIMEOUT = 30000;
let testServer: ITestServer;
let testServer: SmtpServer;
tap.test('setup - start SMTP server for connection rejection tests', async () => {
testServer = await startTestServer({
port: TEST_PORT,
hostname: 'localhost'
});
expect(testServer).toBeInstanceOf(Object);
testServer = await startTestServer();
await new Promise(resolve => setTimeout(resolve, 1000));
});
tap.test('Connection Rejection - should handle suspicious domains', async (tools) => {
@ -293,7 +290,7 @@ tap.test('Connection Rejection - should handle invalid commands gracefully', asy
});
tap.test('cleanup - stop SMTP server', async () => {
await stopTestServer(testServer);
await stopTestServer();
expect(true).toBeTrue();
});

View File

@ -2,15 +2,12 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import { startTestServer, stopTestServer, type ITestServer } from './helpers/server.loader.js';
import * as plugins from '../ts/plugins.js';
let testServer: ITestServer;
let testServer: SmtpServer;
tap.test('setup - start SMTP server with short timeout', async () => {
testServer = await startTestServer({
port: 2533,
hostname: 'localhost',
timeout: 5000 // 5 second timeout for testing
});
expect(testServer).toBeInstanceOf(Object);
testServer = await startTestServer();
await new Promise(resolve => setTimeout(resolve, 1000));
});
tap.test('CM-03: Connection Timeout - idle connections are closed after timeout', async (tools) => {
@ -127,7 +124,7 @@ tap.test('CM-03: Active connection should not timeout', async () => {
});
tap.test('cleanup - stop SMTP server', async () => {
await stopTestServer(testServer);
await stopTestServer();
});
tap.start();

View File

@ -1,17 +1,18 @@
import { tap, expect } from '@git.zone/tapbundle';
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer, type ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer, type ITestServer } from '../server.loader.js';
const TEST_PORT = 30033;
const TEST_PORT = 2525;
const TEST_TIMEOUT = 60000; // Longer timeout for keepalive tests
tap.test('Keepalive - should maintain TCP keepalive', async (tools) => {
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -71,7 +72,7 @@ tap.test('Keepalive - should maintain TCP keepalive', async (tools) => {
socket.end();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -80,9 +81,10 @@ tap.test('Keepalive - should maintain idle connection for extended period', asyn
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -142,7 +144,7 @@ tap.test('Keepalive - should maintain idle connection for extended period', asyn
socket.end();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -151,9 +153,10 @@ tap.test('Keepalive - should detect connection loss', async (tools) => {
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -202,7 +205,7 @@ tap.test('Keepalive - should detect connection loss', async (tools) => {
console.log('Connection established, now simulating server shutdown...');
// Shutdown server to simulate connection loss
await stopTestServer(testServer);
await stopTestServer();
// Wait for keepalive to detect connection loss
await new Promise(resolve => setTimeout(resolve, 10000));
@ -221,9 +224,10 @@ tap.test('Keepalive - should handle long-running SMTP session', async (tools) =>
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -294,7 +298,7 @@ tap.test('Keepalive - should handle long-running SMTP session', async (tools) =>
socket.end();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -303,9 +307,10 @@ tap.test('Keepalive - should handle NOOP as keepalive mechanism', async (tools)
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -362,7 +367,7 @@ tap.test('Keepalive - should handle NOOP as keepalive mechanism', async (tools)
socket.end();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});

View File

@ -1,16 +1,15 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import { startTestServer, stopTestServer, type ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer, type ITestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
import { createConcurrentConnections, performSmtpHandshake, closeSmtpConnection } from '../../helpers/test.utils.js';
let testServer: ITestServer;
let testServer: SmtpServer;
const CONCURRENT_COUNT = 10;
tap.test('setup - start SMTP server', async () => {
testServer = await startTestServer({
port: 2526,
maxConnections: 100
});
expect(testServer).toBeInstanceOf(Object);
testServer = await startTestServer();
await new Promise(resolve => setTimeout(resolve, 1000));
expect(testServer.port).toEqual(2526);
});
@ -69,12 +68,10 @@ tap.test('CM-02: Connection limit enforcement - verify max connections', async (
const maxConnections = 5;
// Start a new server with lower connection limit
const limitedServer = await startTestServer({
port: 2527,
maxConnections: maxConnections
});
const limitedServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
// Try to create more connections than allowed
const attemptCount = maxConnections + 5;
console.log(`🔄 Attempting ${attemptCount} connections (limit: ${maxConnections})...`);
@ -104,7 +101,7 @@ tap.test('CM-02: Connection limit enforcement - verify max connections', async (
});
tap.test('cleanup - stop SMTP server', async () => {
await stopTestServer(testServer);
await stopTestServer();
console.log('✅ Test server stopped');
});

View File

@ -1,17 +1,18 @@
import { tap, expect } from '@git.zone/tapbundle';
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer, type ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer, type ITestServer } from '../server.loader.js';
const TEST_PORT = 30032;
const TEST_PORT = 2525;
const TEST_TIMEOUT = 30000;
tap.test('Plain Connection - should establish basic TCP connection', async (tools) => {
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -36,7 +37,7 @@ tap.test('Plain Connection - should establish basic TCP connection', async (tool
}
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -45,9 +46,10 @@ tap.test('Plain Connection - should receive SMTP banner on plain connection', as
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -74,7 +76,7 @@ tap.test('Plain Connection - should receive SMTP banner on plain connection', as
socket.end();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -83,9 +85,10 @@ tap.test('Plain Connection - should complete full SMTP transaction on plain conn
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -176,7 +179,7 @@ tap.test('Plain Connection - should complete full SMTP transaction on plain conn
socket.end();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -185,9 +188,10 @@ tap.test('Plain Connection - should handle multiple plain connections', async (t
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const connectionCount = 3;
const connections: net.Socket[] = [];
@ -226,7 +230,7 @@ tap.test('Plain Connection - should handle multiple plain connections', async (t
}
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});

View File

@ -2,25 +2,20 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import * as tls from 'tls';
import * as path from 'path';
import { startTestServer, stopTestServer } from '../../helpers/server.loader.js';
import type { ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
// Test configuration
const TEST_PORT = 2525;
const TEST_TIMEOUT = 30000; // Increased timeout for TLS handshake
let testServer: ITestServer;
let testServer: SmtpServer;
// Setup
tap.test('setup - start SMTP server with STARTTLS support', async () => {
testServer = await startTestServer({
port: TEST_PORT,
tlsEnabled: false, // Start with plain connection, upgrade via STARTTLS
hostname: 'localhost',
allowStartTLS: true
});
testServer = await startTestServer();
expect(testServer).toBeTypeofObject();
await new Promise(resolve => setTimeout(resolve, 1000));
expect(testServer.port).toEqual(TEST_PORT);
});
@ -446,7 +441,7 @@ tap.test('STARTTLS - should use secure TLS version and ciphers', async (tools) =
// Teardown
tap.test('teardown - stop SMTP server', async () => {
if (testServer) {
await stopTestServer(testServer);
await stopTestServer();
}
});

View File

@ -1,9 +1,9 @@
import { tap, expect } from '@git.zone/tapbundle';
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import * as tls from 'tls';
import { startTestServer, stopTestServer, type ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer, type ITestServer } from '../server.loader.js';
const TEST_PORT = 30031;
const TEST_PORT = 2525;
const TEST_PORT_TLS = 30466;
const TEST_TIMEOUT = 30000;
@ -11,9 +11,10 @@ tap.test('TLS Ciphers - should advertise STARTTLS for cipher negotiation', async
const done = tools.defer();
// Start test server
const testServer = await startTestServer({ port: TEST_PORT });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const socket = net.createConnection({
host: 'localhost',
port: TEST_PORT,
@ -63,7 +64,7 @@ tap.test('TLS Ciphers - should advertise STARTTLS for cipher negotiation', async
expect(true).toBeTrue();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -72,9 +73,10 @@ tap.test('TLS Ciphers - should negotiate secure cipher suites', async (tools) =>
const done = tools.defer();
// Start test server on TLS port
const testServer = await startTestServer({ port: TEST_PORT_TLS, tlsEnabled: true });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
const tlsOptions = {
host: 'localhost',
port: TEST_PORT_TLS,
@ -118,7 +120,7 @@ tap.test('TLS Ciphers - should negotiate secure cipher suites', async (tools) =>
socket.end();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -127,9 +129,10 @@ tap.test('TLS Ciphers - should reject weak cipher suites', async (tools) => {
const done = tools.defer();
// Start test server on TLS port
const testServer = await startTestServer({ port: TEST_PORT_TLS, tlsEnabled: true });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
// Try to connect with weak ciphers only
const weakCiphers = [
'DES-CBC3-SHA',
@ -187,7 +190,7 @@ tap.test('TLS Ciphers - should reject weak cipher suites', async (tools) => {
expect(true).toBeTrue();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -196,9 +199,10 @@ tap.test('TLS Ciphers - should support forward secrecy', async (tools) => {
const done = tools.defer();
// Start test server on TLS port
const testServer = await startTestServer({ port: TEST_PORT_TLS, tlsEnabled: true });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
// Prefer ciphers with forward secrecy (ECDHE, DHE)
const forwardSecrecyCiphers = [
'ECDHE-RSA-AES128-GCM-SHA256',
@ -248,7 +252,7 @@ tap.test('TLS Ciphers - should support forward secrecy', async (tools) => {
expect(true).toBeTrue();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});
@ -257,9 +261,10 @@ tap.test('TLS Ciphers - should list all supported ciphers', async (tools) => {
const done = tools.defer();
// Start test server on TLS port
const testServer = await startTestServer({ port: TEST_PORT_TLS, tlsEnabled: true });
const testServer = await startTestServer();
try {
await new Promise(resolve => setTimeout(resolve, 1000));try {
// Get list of ciphers supported by Node.js
const supportedCiphers = tls.getCiphers();
console.log(`Node.js supports ${supportedCiphers.length} cipher suites`);
@ -303,7 +308,7 @@ tap.test('TLS Ciphers - should list all supported ciphers', async (tools) => {
expect(negotiatedCipher.name).toBeDefined();
} finally {
await stopTestServer(testServer);
await stopTestServer();
done.resolve();
}
});

View File

@ -1,16 +1,14 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import { startTestServer, stopTestServer, type ITestServer } from '../../helpers/server.loader.js';
import { startTestServer, stopTestServer, type ITestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
import { connectToSmtp, performSmtpHandshake, closeSmtpConnection } from '../../helpers/test.utils.js';
let testServer: ITestServer;
let testServer: SmtpServer;
tap.test('setup - start SMTP server with TLS support', async () => {
testServer = await startTestServer({
port: 2525,
tlsEnabled: true,
hostname: 'localhost'
});
expect(testServer).toBeInstanceOf(Object);
testServer = await startTestServer();
await new Promise(resolve => setTimeout(resolve, 1000));
expect(testServer.port).toEqual(2525);
});
@ -54,7 +52,7 @@ tap.test('CM-01: TLS Connection Test - verify TLS certificate configuration', as
});
tap.test('cleanup - stop SMTP server', async () => {
await stopTestServer(testServer);
await stopTestServer();
console.log('✅ Test server stopped');
});

View File

@ -1,29 +1,23 @@
import { tap, expect } from '@git.zone/tapbundle';
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import * as tls from 'tls';
import { startTestServer, stopTestServer } from '../../helpers/server.loader.js';
import type { ITestServer } from '../../helpers/server.loader.js';
const TEST_PORT = 30030;
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
const TEST_PORT = 2525;
const TEST_PORT_TLS = 30465;
const TEST_TIMEOUT = 30000;
let testServer: ITestServer;
let testServer: SmtpServer;
let testServerTls: ITestServer;
tap.test('setup - start SMTP servers for TLS version tests', async () => {
testServer = await startTestServer({
port: TEST_PORT,
hostname: 'localhost'
});
testServer = await startTestServer();
testServerTls = await startTestServer({
port: TEST_PORT_TLS,
hostname: 'localhost',
tlsEnabled: true
});
expect(testServer).toBeInstanceOf(Object);
await new Promise(resolve => setTimeout(resolve, 1000));testServerTls = await startTestServer();
await new Promise(resolve => setTimeout(resolve, 1000));
expect(testServerTls).toBeInstanceOf(Object);
});
@ -265,7 +259,7 @@ async function testTlsVersion(version: string, port: number): Promise<{success:
}
tap.test('cleanup - stop SMTP servers', async () => {
await stopTestServer(testServer);
await stopTestServer();
await stopTestServer(testServerTls);
expect(true).toBeTrue();
});

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -1,10 +1,11 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
const TEST_PORT = 2525;
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -1,12 +1,13 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
// Test configuration
const TEST_PORT = 2525;
const TEST_TIMEOUT = 15000;
let testServer: any;
let testServer: SmtpServer;
// Setup
tap.test('setup - start SMTP server', async () => {

View File

@ -1,10 +1,11 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
const TEST_PORT = 2525;
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -1,10 +1,11 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
const TEST_PORT = 2525;
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -1,12 +1,13 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
// Test configuration
const TEST_PORT = 2525;
const TEST_TIMEOUT = 20000;
let testServer: any;
let testServer: SmtpServer;
// Setup
tap.test('setup - start SMTP server', async () => {

View File

@ -2,12 +2,13 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import * as path from 'path';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
// Test configuration
const TEST_PORT = 2525;
const TEST_TIMEOUT = 60000; // Increased for large email handling
let testServer: any;
let testServer: SmtpServer;
// Setup
tap.test('setup - start SMTP server', async () => {

View File

@ -1,8 +1,9 @@
import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,12 +2,13 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as net from 'net';
import * as path from 'path';
import { startTestServer, stopTestServer } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
// Test configuration
const TEST_PORT = 2525;
const TEST_TIMEOUT = 15000;
let testServer: any;
let testServer: SmtpServer;
// Setup
tap.test('setup - start SMTP server', async () => {

View File

@ -18,7 +18,7 @@ tap.test('setup - start SMTP server', async () => {
hostname: 'localhost'
});
expect(testServer).toBeTypeofObject();
expect(testServer).toBeTypeOf('object');
expect(testServer.port).toEqual(TEST_PORT);
});

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -3,8 +3,9 @@ import * as plugins from '../plugins.js';
import * as net from 'net';
import * as tls from 'tls';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -2,8 +2,9 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as plugins from '../plugins.js';
import * as net from 'net';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -3,8 +3,9 @@ import * as plugins from '../plugins.js';
import * as net from 'net';
import * as tls from 'tls';
import { startTestServer, stopTestServer, TEST_PORT, sendEmailWithRawSocket } from '../server.loader.js';
import type { SmtpServer } from '../../../ts/mail/delivery/smtpserver/index.js';
let testServer: any;
let testServer: SmtpServer;
tap.test('setup - start test server', async () => {
testServer = await startTestServer();

View File

@ -27,11 +27,11 @@ async function startTestServer(port = 2525) {
try {
// Create a minimal email server for testing
const mockEmailServer = {
processEmailByMode: async (emailData) => {
processEmailByMode: async (emailData: any) => {
console.log('📧 Processed test email:', emailData.subject || 'No subject');
return emailData;
}
};
} as any; // Type assertion for test purposes
// Load test certificates if available
let key = '';
@ -56,7 +56,10 @@ async function startTestServer(port = 2525) {
socketTimeout: 30000,
connectionTimeout: 60000,
cleanupInterval: 300000,
auth: false
auth: {
required: false,
methods: [] as ('PLAIN' | 'LOGIN' | 'OAUTH2')[]
}
};
// Create and start SMTP server
@ -137,7 +140,7 @@ async function waitForServerReady(hostname, port, timeout) {
socket.on('connect', () => {
socket.end();
resolve();
resolve(undefined);
});
socket.on('error', (error) => {