update
This commit is contained in:
parent
e0f6e3237b
commit
a7438a7cd6
@ -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();
|
||||
});
|
||||
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
});
|
||||
|
||||
|
@ -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();
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
@ -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');
|
||||
});
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
@ -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');
|
||||
});
|
||||
|
||||
|
@ -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();
|
||||
});
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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 () => {
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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 () => {
|
||||
|
@ -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 () => {
|
||||
|
@ -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();
|
||||
|
@ -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 () => {
|
||||
|
@ -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);
|
||||
});
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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) => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user