61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
|
import * as smartproxy from '../ts/index.js';
|
|
|
|
tap.test('route security should be correctly configured', async () => {
|
|
// Test that we can create a proxy with route-specific security
|
|
const routes = [{
|
|
name: 'secure-route',
|
|
match: {
|
|
ports: 8990
|
|
},
|
|
action: {
|
|
type: 'forward' as const,
|
|
target: {
|
|
host: '127.0.0.1',
|
|
port: 8991
|
|
},
|
|
security: {
|
|
ipAllowList: ['192.168.1.1'],
|
|
ipBlockList: ['10.0.0.1']
|
|
}
|
|
}
|
|
}];
|
|
|
|
// This should not throw an error
|
|
const proxy = new smartproxy.SmartProxy({
|
|
enableDetailedLogging: false,
|
|
routes: routes
|
|
});
|
|
|
|
// The proxy should be created successfully
|
|
expect(proxy).toBeInstanceOf(smartproxy.SmartProxy);
|
|
|
|
// Test that security manager exists and has the isIPAuthorized method
|
|
const securityManager = (proxy as any).securityManager;
|
|
expect(securityManager).toBeDefined();
|
|
expect(typeof securityManager.isIPAuthorized).toEqual('function');
|
|
|
|
// Test IP authorization logic directly
|
|
const isLocalhostAllowed = securityManager.isIPAuthorized(
|
|
'127.0.0.1',
|
|
['192.168.1.1'], // Allow list
|
|
[] // Block list
|
|
);
|
|
expect(isLocalhostAllowed).toBeFalse();
|
|
|
|
const isAllowedIPAllowed = securityManager.isIPAuthorized(
|
|
'192.168.1.1',
|
|
['192.168.1.1'], // Allow list
|
|
[] // Block list
|
|
);
|
|
expect(isAllowedIPAllowed).toBeTrue();
|
|
|
|
const isBlockedIPAllowed = securityManager.isIPAuthorized(
|
|
'10.0.0.1',
|
|
['0.0.0.0/0'], // Allow all
|
|
['10.0.0.1'] // But block this specific IP
|
|
);
|
|
expect(isBlockedIPAllowed).toBeFalse();
|
|
});
|
|
|
|
tap.start(); |