65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import { SmartProxy } from '../ts/proxies/smart-proxy/index.js';
|
|
import { expect, tap } from '@push.rocks/tapbundle';
|
|
|
|
tap.test('should create SmartProxy with certificate routes', async () => {
|
|
const proxy = new SmartProxy({
|
|
routes: [{
|
|
name: 'test-route',
|
|
match: { ports: 8443, domains: 'test.example.com' },
|
|
action: {
|
|
type: 'forward',
|
|
target: { host: 'localhost', port: 8080 },
|
|
tls: {
|
|
mode: 'terminate',
|
|
certificate: 'auto',
|
|
acme: {
|
|
email: 'test@example.com',
|
|
useProduction: false
|
|
}
|
|
}
|
|
}
|
|
}]
|
|
});
|
|
|
|
expect(proxy).toBeDefined();
|
|
expect(proxy.settings.routes.length).toEqual(1);
|
|
});
|
|
|
|
tap.test('should handle static route type', async () => {
|
|
// Create a test route with static handler
|
|
const testResponse = {
|
|
status: 200,
|
|
headers: { 'Content-Type': 'text/plain' },
|
|
body: 'Hello from static route'
|
|
};
|
|
|
|
const proxy = new SmartProxy({
|
|
routes: [{
|
|
name: 'static-test',
|
|
match: { ports: 8080, path: '/test' },
|
|
action: {
|
|
type: 'static',
|
|
handler: async () => testResponse
|
|
}
|
|
}]
|
|
});
|
|
|
|
const route = proxy.settings.routes[0];
|
|
expect(route.action.type).toEqual('static');
|
|
expect(route.action.handler).toBeDefined();
|
|
|
|
// Test the handler
|
|
const result = await route.action.handler!({
|
|
port: 8080,
|
|
path: '/test',
|
|
clientIp: '127.0.0.1',
|
|
serverIp: '127.0.0.1',
|
|
isTls: false,
|
|
timestamp: Date.now(),
|
|
connectionId: 'test-123'
|
|
});
|
|
|
|
expect(result).toEqual(testResponse);
|
|
});
|
|
|
|
tap.start(); |