import { describe, it, expect } from 'bun:test'; import { validateNavigationUrl } from '../src/url-validation'; describe('validateNavigationUrl', () => { it('allows http URLs', () => { expect(() => validateNavigationUrl('http://example.com')).not.toThrow(); }); it('allows https URLs', () => { expect(() => validateNavigationUrl('https://example.com/path?q=1')).not.toThrow(); }); it('allows localhost', () => { expect(() => validateNavigationUrl('http://localhost:3000')).not.toThrow(); }); it('allows 127.0.0.1', () => { expect(() => validateNavigationUrl('http://127.0.0.1:8080')).not.toThrow(); }); it('allows private IPs', () => { expect(() => validateNavigationUrl('http://192.168.1.1')).not.toThrow(); }); it('blocks file:// scheme', () => { expect(() => validateNavigationUrl('file:///etc/passwd')).toThrow(/scheme.*not allowed/i); }); it('blocks javascript: scheme', () => { expect(() => validateNavigationUrl('javascript:alert(1)')).toThrow(/scheme.*not allowed/i); }); it('blocks data: scheme', () => { expect(() => validateNavigationUrl('data:text/html,