kimi-code / packages /kap-server /test /bindClassify.test.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
4e23b01 verified
Raw
History Blame Contribute Delete
2.02 kB
import { describe, expect, it } from 'vitest';
import { classify } from '../src/security/bindClassify';
describe('classify', () => {
describe('loopback', () => {
it.each([['127.0.0.1'], ['127.255.255.255'], ['::1'], ['localhost']])(
'%s β†’ loopback',
(host) => {
expect(classify(host)).toBe('loopback');
},
);
});
describe('lan', () => {
it.each([
['192.168.1.5'],
['10.0.0.1'],
['172.16.0.1'],
['172.31.255.255'],
['169.254.1.1'],
['fe80::1'],
['fe80:0000:0000:0000:0000:0000:0000:0001'],
['febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff'],
])('%s β†’ lan', (host) => {
expect(classify(host)).toBe('lan');
});
});
describe('public', () => {
it.each([
['8.8.8.8'],
['172.32.0.1'],
['203.0.113.5'],
['2001:4860:4860::8888'],
['fec0::1'],
['example.com'],
])('%s β†’ public', (host) => {
expect(classify(host)).toBe('public');
});
});
describe('wildcard binds default to public unless relaxed', () => {
it('0.0.0.0 β†’ public by default', () => {
expect(classify('0.0.0.0')).toBe('public');
});
it('0.0.0.0 β†’ lan when bindClass=lan', () => {
expect(classify('0.0.0.0', { bindClass: 'lan' })).toBe('lan');
});
it('0.0.0.0 β†’ public when bindClass=public', () => {
expect(classify('0.0.0.0', { bindClass: 'public' })).toBe('public');
});
it(':: β†’ public by default', () => {
expect(classify('::')).toBe('public');
});
it(':: β†’ lan when bindClass=lan', () => {
expect(classify('::', { bindClass: 'lan' })).toBe('lan');
});
it('empty string β†’ public by default', () => {
expect(classify('')).toBe('public');
});
});
it('bindClass override does not reclassify a concrete loopback/lan host', () => {
expect(classify('127.0.0.1', { bindClass: 'public' })).toBe('loopback');
expect(classify('192.168.1.5', { bindClass: 'public' })).toBe('lan');
});
});