update
This commit is contained in:
61
test/test.route-security-unit.ts
Normal file
61
test/test.route-security-unit.ts
Normal file
@ -0,0 +1,61 @@
|
||||
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();
|
Reference in New Issue
Block a user