sync-bridge.test.ts

1.2 KB · raw

1import { describe, expect, it } from "vitest";2import { peerWebSocketUrl, toDiscoveredPeer } from "./sync-bridge";34describe("sync-bridge helpers", () => {5  const basePeer = {6    deviceId: "p1",7    deviceName: "iPhone",8    host: "192.168.1.10",9    port: 44100,10    x25519PublicKey: "abc",11    pairing: false,12  };1314  it("toDiscoveredPeer carries wsPort and alreadyPaired", () => {15    const peer = toDiscoveredPeer({ ...basePeer, wsPort: 44101 }, true);16    expect(peer).toEqual({17      deviceId: "p1",18      deviceName: "iPhone",19      host: "192.168.1.10",20      port: 44100,21      wsPort: 44101,22      x25519PublicKey: "abc",23      alreadyPaired: true,24    });25  });2627  it("toDiscoveredPeer omits wsPort when not advertised", () => {28    const peer = toDiscoveredPeer(basePeer, false);29    expect(peer.wsPort).toBeUndefined();30    expect(peer.alreadyPaired).toBe(false);31  });3233  it("peerWebSocketUrl builds ws:// URL using wsPort", () => {34    expect(peerWebSocketUrl({ ...basePeer, wsPort: 44101 })).toBe(35      "ws://192.168.1.10:44101/"36    );37  });3839  it("peerWebSocketUrl throws when wsPort is missing", () => {40    expect(() => peerWebSocketUrl(basePeer)).toThrow(41      "peer did not advertise a WebSocket port"42    );43  });44});