update
This commit is contained in:
@ -1,98 +0,0 @@
|
||||
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
||||
import { SmartProxy } from '../ts/proxies/smart-proxy/index.js';
|
||||
import { createHttpToHttpsRedirect } from '../ts/proxies/smart-proxy/utils/route-helpers.js';
|
||||
import type { IRouteConfig } from '../ts/proxies/smart-proxy/models/route-types.js';
|
||||
|
||||
// Test that HTTP to HTTPS redirects work correctly
|
||||
tap.test('should handle HTTP to HTTPS redirects', async (tools) => {
|
||||
// Create a simple HTTP to HTTPS redirect route
|
||||
const redirectRoute = createHttpToHttpsRedirect(
|
||||
'example.com',
|
||||
443,
|
||||
{
|
||||
name: 'HTTP to HTTPS Redirect Test'
|
||||
}
|
||||
);
|
||||
|
||||
// Verify the route is configured correctly
|
||||
expect(redirectRoute.action.type).toEqual('redirect');
|
||||
expect(redirectRoute.action.redirect).toBeTruthy();
|
||||
expect(redirectRoute.action.redirect?.to).toEqual('https://{domain}:443{path}');
|
||||
expect(redirectRoute.action.redirect?.status).toEqual(301);
|
||||
expect(redirectRoute.match.ports).toEqual(80);
|
||||
expect(redirectRoute.match.domains).toEqual('example.com');
|
||||
});
|
||||
|
||||
tap.test('should handle custom redirect configurations', async (tools) => {
|
||||
// Create a custom redirect route
|
||||
const customRedirect: IRouteConfig = {
|
||||
name: 'custom-redirect',
|
||||
match: {
|
||||
ports: [8080],
|
||||
domains: ['old.example.com']
|
||||
},
|
||||
action: {
|
||||
type: 'redirect',
|
||||
redirect: {
|
||||
to: 'https://new.example.com{path}',
|
||||
status: 302
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Verify the route structure
|
||||
expect(customRedirect.action.redirect?.to).toEqual('https://new.example.com{path}');
|
||||
expect(customRedirect.action.redirect?.status).toEqual(302);
|
||||
});
|
||||
|
||||
tap.test('should support multiple redirect scenarios', async (tools) => {
|
||||
const routes: IRouteConfig[] = [
|
||||
// HTTP to HTTPS redirect
|
||||
createHttpToHttpsRedirect(['example.com', 'www.example.com']),
|
||||
|
||||
// Custom redirect with different port
|
||||
{
|
||||
name: 'custom-port-redirect',
|
||||
match: {
|
||||
ports: 8080,
|
||||
domains: 'api.example.com'
|
||||
},
|
||||
action: {
|
||||
type: 'redirect',
|
||||
redirect: {
|
||||
to: 'https://{domain}:8443{path}',
|
||||
status: 308
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// Redirect to different domain entirely
|
||||
{
|
||||
name: 'domain-redirect',
|
||||
match: {
|
||||
ports: 80,
|
||||
domains: 'old-domain.com'
|
||||
},
|
||||
action: {
|
||||
type: 'redirect',
|
||||
redirect: {
|
||||
to: 'https://new-domain.com{path}',
|
||||
status: 301
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
// Create SmartProxy with redirect routes
|
||||
const proxy = new SmartProxy({
|
||||
routes
|
||||
});
|
||||
|
||||
// Verify all routes are redirect type
|
||||
routes.forEach(route => {
|
||||
expect(route.action.type).toEqual('redirect');
|
||||
expect(route.action.redirect).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
export default tap.start();
|
@ -9,7 +9,7 @@ tap.test('should handle async handler that sets up listeners after delay', async
|
||||
match: { ports: 7777 },
|
||||
action: {
|
||||
type: 'socket-handler',
|
||||
socketHandler: async (socket) => {
|
||||
socketHandler: async (socket, context) => {
|
||||
// Simulate async work BEFORE setting up listeners
|
||||
await new Promise(resolve => setTimeout(resolve, 50));
|
||||
|
||||
|
@ -12,7 +12,7 @@ tap.test('simple socket handler test', async () => {
|
||||
},
|
||||
action: {
|
||||
type: 'socket-handler',
|
||||
socketHandler: (socket) => {
|
||||
socketHandler: (socket, context) => {
|
||||
console.log('Handler called!');
|
||||
socket.write('HELLO\n');
|
||||
socket.end();
|
||||
|
@ -15,7 +15,7 @@ tap.test('setup socket handler test', async () => {
|
||||
},
|
||||
action: {
|
||||
type: 'socket-handler',
|
||||
socketHandler: (socket) => {
|
||||
socketHandler: (socket, context) => {
|
||||
console.log('Socket handler called');
|
||||
// Simple echo server
|
||||
socket.write('ECHO SERVER\n');
|
||||
@ -81,7 +81,7 @@ tap.test('should handle async socket handler', async () => {
|
||||
match: { ports: 9999 },
|
||||
action: {
|
||||
type: 'socket-handler',
|
||||
socketHandler: async (socket) => {
|
||||
socketHandler: async (socket, context) => {
|
||||
// Set up data handler first
|
||||
socket.on('data', async (data) => {
|
||||
console.log('Async handler received:', data.toString());
|
||||
@ -134,7 +134,7 @@ tap.test('should handle errors in socket handler', async () => {
|
||||
match: { ports: 9999 },
|
||||
action: {
|
||||
type: 'socket-handler',
|
||||
socketHandler: (socket) => {
|
||||
socketHandler: (socket, context) => {
|
||||
throw new Error('Handler error');
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user