107 lines · 3.1 KB · TypeScript
RawDownload
import { afterEach, describe, expect, it, vi } from "vite-plus/test";import { EnvironmentId } from "@t3tools/contracts"; import { isRelayManagedConnection, toStableSavedRemoteConnection } from "./connection";import { authClientMetadata } from "./authClientMetadata"; const mobilePlatform = vi.hoisted(() => ({ OS: "ios" as "ios" | "android" }));const mobileDevice = vi.hoisted(() => ({  deviceType: 1,  DeviceType: {    UNKNOWN: 0,    PHONE: 1,    TABLET: 2,    DESKTOP: 3,    TV: 4,  },  osVersion: "18.4.1",  modelName: "iPhone 15 Pro",})); vi.mock("./runtime", () => ({  runtime: {    runPromise: vi.fn(),  },})); vi.mock("react-native", () => ({  Platform: mobilePlatform,})); vi.mock("expo-device", () => mobileDevice); describe("mobile remote connection records", () => {  afterEach(() => {    mobilePlatform.OS = "ios";    mobileDevice.deviceType = mobileDevice.DeviceType.PHONE;    mobileDevice.osVersion = "18.4.1";    mobileDevice.modelName = "iPhone 15 Pro";  });   it("identifies mobile token exchanges for authorized-client presentation", () => {    expect(authClientMetadata()).toEqual({      label: "T3 Code Mobile",      deviceType: "mobile",      os: "iOS",      osMajorVersion: 18,      deviceModel: "iPhone 15 Pro",      surface: "mobile",    });  });   it("includes only the Android major version and hardware model", () => {    mobilePlatform.OS = "android";    mobileDevice.osVersion = "15.2.1";    mobileDevice.modelName = "Pixel 9";     expect(authClientMetadata()).toMatchObject({      os: "Android",      osMajorVersion: 15,      deviceModel: "Pixel 9",    });  });   it("identifies native tablets separately from phones", () => {    mobileDevice.deviceType = mobileDevice.DeviceType.TABLET;    mobileDevice.modelName = "iPad Pro 13-inch";     expect(authClientMetadata()).toMatchObject({      deviceType: "tablet",      os: "iOS",      deviceModel: "iPad Pro 13-inch",    });  });   it("includes the mobile app version when the client provides it", () => {    expect(authClientMetadata("1.2.3")).toMatchObject({      surface: "mobile",      appVersion: "1.2.3",    });  });   it("recognizes explicitly managed relay connections", () => {    expect(isRelayManagedConnection({ relayManaged: true })).toBe(true);  });   it("keeps existing DPoP tunnel records read-only after upgrading", () => {    expect(isRelayManagedConnection({ authenticationMethod: "dpop" })).toBe(true);    expect(isRelayManagedConnection({ authenticationMethod: "bearer" })).toBe(false);  });   it("drops short-lived managed environment credentials from stable records", () => {    const connection = {      environmentId: EnvironmentId.make("environment-1"),      environmentLabel: "Desktop",      pairingUrl: "https://desktop.example/",      displayUrl: "https://desktop.example/",      httpBaseUrl: "https://desktop.example/",      wsBaseUrl: "wss://desktop.example/",      bearerToken: null,      authenticationMethod: "dpop",      dpopAccessToken: "short-lived-token",      relayManaged: true,    } as const;     expect(toStableSavedRemoteConnection(connection)).not.toHaveProperty("dpopAccessToken");  });});