/// import { describe, expect, it } from 'vitest'; import { NetworkSettingsSchema } from '@/schemas/protocols'; const streamFixtures = import.meta.glob( './golden/fixtures/stream/*.json', { eager: true, import: 'default' }, ); function fixtureName(path: string): string { const file = path.split('/').pop() ?? path; return file.replace(/\.json$/, ''); } describe('NetworkSettingsSchema fixtures', () => { const entries = Object.entries(streamFixtures).sort(([a], [b]) => a.localeCompare(b)); expect(entries.length, 'expected at least one fixture under golden/fixtures/stream').toBeGreaterThan(0); for (const [path, raw] of entries) { it(`parses ${fixtureName(path)} byte-stably`, () => { const parsed = NetworkSettingsSchema.parse(raw); expect(parsed).toMatchSnapshot(); }); } }); describe('NetworkSettingsSchema method alias', () => { it('folds xray-core v26.7.11 method alias back into network', () => { const parsed = NetworkSettingsSchema.parse({ method: 'ws', wsSettings: {} }); expect((parsed as { network?: string }).network).toBe('ws'); expect((parsed as Record).method).toBeUndefined(); }); it('prefers method over network when both are present', () => { const parsed = NetworkSettingsSchema.parse({ method: 'grpc', network: 'tcp', grpcSettings: {} }); expect((parsed as { network?: string }).network).toBe('grpc'); }); });