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"); });});
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");
});
});