import { EnvironmentId, type ExecutionEnvironmentDescriptor } from "@t3tools/contracts";import * as Effect from "effect/Effect";import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test"; import { getPrimaryKnownEnvironment, isDesktopEnvironmentBootstrapIncompleteError, isPrimaryEnvironmentProtocolUnsupportedError, isPrimaryEnvironmentUrlInvalidError, readPrimaryEnvironmentTarget, resolvePrimaryEnvironmentHttpUrl, resolveInitialPrimaryEnvironmentDescriptor, resetPrimaryEnvironmentDescriptorForTests, writePrimaryEnvironmentDescriptor,} from ".";import { installEnvironmentHttpTest } from "../../../test/environmentHttpTest"; const BASE_ENVIRONMENT = { environmentId: EnvironmentId.make("environment-local"), label: "Local environment", platform: { os: "darwin", arch: "arm64", }, serverVersion: "0.0.0-test", capabilities: { repositoryIdentity: true, },} satisfies ExecutionEnvironmentDescriptor; let disposeHttpTest: (() => Promise<void>) | undefined; async function installDescriptorApi() { const testApi = await installEnvironmentHttpTest({ descriptor: () => Effect.succeed(BASE_ENVIRONMENT), }); disposeHttpTest = testApi.dispose; return testApi;} function installTestBrowser(url: string) { vi.stubGlobal("window", { location: new URL(url), history: { replaceState: vi.fn(), }, });} function captureThrown(run: () => unknown): unknown { try { run(); } catch (error) { return error; } throw new Error("Expected the operation to throw.");} describe("environmentBootstrap", () => { beforeEach(() => { vi.restoreAllMocks(); vi.useRealTimers(); installTestBrowser("http://localhost/"); }); afterEach(async () => { await disposeHttpTest?.(); disposeHttpTest = undefined; resetPrimaryEnvironmentDescriptorForTests(); vi.unstubAllEnvs(); vi.useRealTimers(); vi.restoreAllMocks(); vi.unstubAllGlobals(); }); it("attaches the bootstrapped environment descriptor to the primary environment", () => { vi.stubGlobal("window", { location: { origin: "http://localhost:3773", }, desktopBridge: undefined, }); writePrimaryEnvironmentDescriptor({ environmentId: EnvironmentId.make("environment-local"), label: "Bootstrapped environment", platform: { os: "darwin", arch: "arm64", }, serverVersion: "0.0.0-test", capabilities: { repositoryIdentity: true, }, }); expect(getPrimaryKnownEnvironment()).toEqual({ id: "environment-local", label: "Bootstrapped environment", source: "window-origin", environmentId: "environment-local", target: { httpBaseUrl: "http://localhost:3773/", wsBaseUrl: "ws://localhost:3773/", }, }); }); it("reuses an in-flight descriptor bootstrap request", async () => { const testApi = await installDescriptorApi(); await Promise.all([ resolveInitialPrimaryEnvironmentDescriptor(), resolveInitialPrimaryEnvironmentDescriptor(), ]); expect(testApi.calls.descriptor).toBe(1); }); it("uses https descriptor urls when the primary environment uses wss", async () => { vi.stubEnv("VITE_HTTP_URL", "https://remote.example.com"); vi.stubEnv("VITE_WS_URL", "wss://remote.example.com"); await installDescriptorApi(); await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT); expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe( "https://remote.example.com/.well-known/t3/environment", ); }); it("derives the websocket url when only VITE_HTTP_URL is configured", async () => { vi.stubEnv("VITE_HTTP_URL", "https://remote.example.com"); await installDescriptorApi(); await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT); expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe( "https://remote.example.com/.well-known/t3/environment", ); expect(getPrimaryKnownEnvironment()?.target).toEqual({ httpBaseUrl: "https://remote.example.com/", wsBaseUrl: "wss://remote.example.com/", }); }); it("derives the http url when only VITE_WS_URL is configured", async () => { vi.stubEnv("VITE_WS_URL", "wss://remote.example.com"); await installDescriptorApi(); await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT); expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe( "https://remote.example.com/.well-known/t3/environment", ); expect(getPrimaryKnownEnvironment()?.target).toEqual({ httpBaseUrl: "https://remote.example.com/", wsBaseUrl: "wss://remote.example.com/", }); }); it("uses the current origin as the descriptor base for local dev environments", async () => { installTestBrowser("http://localhost:5735/"); await installDescriptorApi(); await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT); expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe( "http://localhost:5735/.well-known/t3/environment", ); }); it("uses the vite proxy for desktop-managed loopback descriptor requests during local dev", async () => { vi.stubEnv("VITE_DEV_SERVER_URL", "http://127.0.0.1:5733"); vi.stubGlobal("window", { location: new URL("http://127.0.0.1:5733/"), history: { replaceState: vi.fn(), }, desktopBridge: { getLocalEnvironmentBootstraps: () => [ { id: "primary", label: "Windows", httpBaseUrl: "http://127.0.0.1:3773", wsBaseUrl: "ws://127.0.0.1:3773", bootstrapToken: "desktop-bootstrap-token", }, ], }, }); await installDescriptorApi(); await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT); expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe( "http://127.0.0.1:5733/.well-known/t3/environment", ); }); it("retains the URL parser cause without exposing the configured URL in its message", () => { vi.stubEnv("VITE_HTTP_URL", "http://["); const error = captureThrown(readPrimaryEnvironmentTarget); expect(isPrimaryEnvironmentUrlInvalidError(error)).toBe(true); if (!isPrimaryEnvironmentUrlInvalidError(error)) { throw new Error("Expected a structured primary environment URL error."); } expect(error).toMatchObject({ source: "configured", urlKind: "http-base-url", message: "Could not parse http-base-url for the configured primary environment target.", }); expect(error.cause).toBeInstanceOf(TypeError); expect(error.message).not.toContain("http://["); }); it("describes which desktop bootstrap endpoint is missing", () => { vi.stubGlobal("window", { location: new URL("http://127.0.0.1:5733/"), history: { replaceState: vi.fn() }, desktopBridge: { getLocalEnvironmentBootstraps: () => [ { id: "primary", label: "Local environment", httpBaseUrl: "http://127.0.0.1:3773", bootstrapToken: "desktop-bootstrap-token", }, ], }, }); const error = captureThrown(readPrimaryEnvironmentTarget); expect(isDesktopEnvironmentBootstrapIncompleteError(error)).toBe(true); if (!isDesktopEnvironmentBootstrapIncompleteError(error)) { throw new Error("Expected a structured desktop bootstrap error."); } expect(error).toMatchObject({ hasHttpBaseUrl: true, hasWsBaseUrl: false, message: "Desktop bootstrap is missing wsBaseUrl for the local environment.", }); }); it("preserves an unsupported window-origin protocol", () => { vi.stubGlobal("window", { location: { origin: "file:///tmp/t3code/" }, history: { replaceState: vi.fn() }, }); const error = captureThrown(readPrimaryEnvironmentTarget); expect(isPrimaryEnvironmentProtocolUnsupportedError(error)).toBe(true); if (!isPrimaryEnvironmentProtocolUnsupportedError(error)) { throw new Error("Expected a structured primary environment protocol error."); } expect(error).toMatchObject({ source: "window-origin", protocol: "file:", message: "The window-origin primary environment target uses unsupported protocol file:.", }); });});
import { EnvironmentId, type ExecutionEnvironmentDescriptor } from "@t3tools/contracts";
import * as Effect from "effect/Effect";
import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
import {
getPrimaryKnownEnvironment,
isDesktopEnvironmentBootstrapIncompleteError,
isPrimaryEnvironmentProtocolUnsupportedError,
isPrimaryEnvironmentUrlInvalidError,
readPrimaryEnvironmentTarget,
resolvePrimaryEnvironmentHttpUrl,
resolveInitialPrimaryEnvironmentDescriptor,
resetPrimaryEnvironmentDescriptorForTests,
writePrimaryEnvironmentDescriptor,
} from ".";
import { installEnvironmentHttpTest } from "../../../test/environmentHttpTest";
const BASE_ENVIRONMENT = {
environmentId: EnvironmentId.make("environment-local"),
label: "Local environment",
platform: {
os: "darwin",
arch: "arm64",
},
serverVersion: "0.0.0-test",
capabilities: {
repositoryIdentity: true,
},
} satisfies ExecutionEnvironmentDescriptor;
let disposeHttpTest: (() => Promise<void>) | undefined;
async function installDescriptorApi() {
const testApi = await installEnvironmentHttpTest({
descriptor: () => Effect.succeed(BASE_ENVIRONMENT),
});
disposeHttpTest = testApi.dispose;
return testApi;
}
function installTestBrowser(url: string) {
vi.stubGlobal("window", {
location: new URL(url),
history: {
replaceState: vi.fn(),
},
});
}
function captureThrown(run: () => unknown): unknown {
try {
run();
} catch (error) {
return error;
}
throw new Error("Expected the operation to throw.");
}
describe("environmentBootstrap", () => {
beforeEach(() => {
vi.restoreAllMocks();
vi.useRealTimers();
installTestBrowser("http://localhost/");
});
afterEach(async () => {
await disposeHttpTest?.();
disposeHttpTest = undefined;
resetPrimaryEnvironmentDescriptorForTests();
vi.unstubAllEnvs();
vi.useRealTimers();
vi.restoreAllMocks();
vi.unstubAllGlobals();
});
it("attaches the bootstrapped environment descriptor to the primary environment", () => {
vi.stubGlobal("window", {
location: {
origin: "http://localhost:3773",
},
desktopBridge: undefined,
});
writePrimaryEnvironmentDescriptor({
environmentId: EnvironmentId.make("environment-local"),
label: "Bootstrapped environment",
platform: {
os: "darwin",
arch: "arm64",
},
serverVersion: "0.0.0-test",
capabilities: {
repositoryIdentity: true,
},
});
expect(getPrimaryKnownEnvironment()).toEqual({
id: "environment-local",
label: "Bootstrapped environment",
source: "window-origin",
environmentId: "environment-local",
target: {
httpBaseUrl: "http://localhost:3773/",
wsBaseUrl: "ws://localhost:3773/",
},
});
});
it("reuses an in-flight descriptor bootstrap request", async () => {
const testApi = await installDescriptorApi();
await Promise.all([
resolveInitialPrimaryEnvironmentDescriptor(),
resolveInitialPrimaryEnvironmentDescriptor(),
]);
expect(testApi.calls.descriptor).toBe(1);
});
it("uses https descriptor urls when the primary environment uses wss", async () => {
vi.stubEnv("VITE_HTTP_URL", "https://remote.example.com");
vi.stubEnv("VITE_WS_URL", "wss://remote.example.com");
await installDescriptorApi();
await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT);
expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe(
"https://remote.example.com/.well-known/t3/environment",
);
});
it("derives the websocket url when only VITE_HTTP_URL is configured", async () => {
vi.stubEnv("VITE_HTTP_URL", "https://remote.example.com");
await installDescriptorApi();
await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT);
expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe(
"https://remote.example.com/.well-known/t3/environment",
);
expect(getPrimaryKnownEnvironment()?.target).toEqual({
httpBaseUrl: "https://remote.example.com/",
wsBaseUrl: "wss://remote.example.com/",
});
});
it("derives the http url when only VITE_WS_URL is configured", async () => {
vi.stubEnv("VITE_WS_URL", "wss://remote.example.com");
await installDescriptorApi();
await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT);
expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe(
"https://remote.example.com/.well-known/t3/environment",
);
expect(getPrimaryKnownEnvironment()?.target).toEqual({
httpBaseUrl: "https://remote.example.com/",
wsBaseUrl: "wss://remote.example.com/",
});
});
it("uses the current origin as the descriptor base for local dev environments", async () => {
installTestBrowser("http://localhost:5735/");
await installDescriptorApi();
await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT);
expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe(
"http://localhost:5735/.well-known/t3/environment",
);
});
it("uses the vite proxy for desktop-managed loopback descriptor requests during local dev", async () => {
vi.stubEnv("VITE_DEV_SERVER_URL", "http://127.0.0.1:5733");
vi.stubGlobal("window", {
location: new URL("http://127.0.0.1:5733/"),
history: {
replaceState: vi.fn(),
},
desktopBridge: {
getLocalEnvironmentBootstraps: () => [
{
id: "primary",
label: "Windows",
httpBaseUrl: "http://127.0.0.1:3773",
wsBaseUrl: "ws://127.0.0.1:3773",
bootstrapToken: "desktop-bootstrap-token",
},
],
},
});
await installDescriptorApi();
await expect(resolveInitialPrimaryEnvironmentDescriptor()).resolves.toEqual(BASE_ENVIRONMENT);
expect(resolvePrimaryEnvironmentHttpUrl("/.well-known/t3/environment")).toBe(
"http://127.0.0.1:5733/.well-known/t3/environment",
);
});
it("retains the URL parser cause without exposing the configured URL in its message", () => {
vi.stubEnv("VITE_HTTP_URL", "http://[");
const error = captureThrown(readPrimaryEnvironmentTarget);
expect(isPrimaryEnvironmentUrlInvalidError(error)).toBe(true);
if (!isPrimaryEnvironmentUrlInvalidError(error)) {
throw new Error("Expected a structured primary environment URL error.");
}
expect(error).toMatchObject({
source: "configured",
urlKind: "http-base-url",
message: "Could not parse http-base-url for the configured primary environment target.",
});
expect(error.cause).toBeInstanceOf(TypeError);
expect(error.message).not.toContain("http://[");
});
it("describes which desktop bootstrap endpoint is missing", () => {
vi.stubGlobal("window", {
location: new URL("http://127.0.0.1:5733/"),
history: { replaceState: vi.fn() },
desktopBridge: {
getLocalEnvironmentBootstraps: () => [
{
id: "primary",
label: "Local environment",
httpBaseUrl: "http://127.0.0.1:3773",
bootstrapToken: "desktop-bootstrap-token",
},
],
},
});
const error = captureThrown(readPrimaryEnvironmentTarget);
expect(isDesktopEnvironmentBootstrapIncompleteError(error)).toBe(true);
if (!isDesktopEnvironmentBootstrapIncompleteError(error)) {
throw new Error("Expected a structured desktop bootstrap error.");
}
expect(error).toMatchObject({
hasHttpBaseUrl: true,
hasWsBaseUrl: false,
message: "Desktop bootstrap is missing wsBaseUrl for the local environment.",
});
});
it("preserves an unsupported window-origin protocol", () => {
vi.stubGlobal("window", {
location: { origin: "file:///tmp/t3code/" },
history: { replaceState: vi.fn() },
});
const error = captureThrown(readPrimaryEnvironmentTarget);
expect(isPrimaryEnvironmentProtocolUnsupportedError(error)).toBe(true);
if (!isPrimaryEnvironmentProtocolUnsupportedError(error)) {
throw new Error("Expected a structured primary environment protocol error.");
}
expect(error).toMatchObject({
source: "window-origin",
protocol: "file:",
message: "The window-origin primary environment target uses unsupported protocol file:.",
});
});
});