trusted-hosts.spec.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. /** Single-sample LAN-trust resolution for the /api browser-trust fence (`resolveLanTrust`). */
  2. import { describe, expect, it, vi } from 'vitest'
  3. import { resolveLanTrust } from '../src/index.ts'
  4. vi.mock('node:os', () => ({
  5. networkInterfaces: () => ({
  6. lo0: [
  7. { family: 'IPv4', internal: true, address: '127.0.0.1' },
  8. ],
  9. en0: [
  10. { family: 'IPv6', internal: false, address: 'fe80::1' },
  11. { family: 'IPv4', internal: false, address: '192.168.1.5' },
  12. ],
  13. en1: [
  14. { family: 'IPv4', internal: false, address: '10.0.0.7' },
  15. ],
  16. utun0: undefined,
  17. }),
  18. }))
  19. describe('resolveLanTrust', () => {
  20. it('samples non-internal IPv4 addresses once for an all-interfaces bind: trust and display share them', () => {
  21. const { lanAddresses, trustedHosts } = resolveLanTrust('0.0.0.0', ['harness.internal:3080'])
  22. expect(lanAddresses).toEqual(['192.168.1.5', '10.0.0.7'])
  23. expect(trustedHosts).toEqual(['192.168.1.5', '10.0.0.7', 'harness.internal:3080'])
  24. })
  25. it('derives nothing for a loopback bind — extras alone stand, no LAN URL to print', () => {
  26. expect(resolveLanTrust('127.0.0.1', [])).toEqual({ lanAddresses: [], trustedHosts: [] })
  27. expect(resolveLanTrust('127.0.0.1', ['lab.internal']))
  28. .toEqual({ lanAddresses: [], trustedHosts: ['lab.internal'] })
  29. })
  30. })