mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-22 07:20:59 +00:00
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 71366e9532
Co-authored-by: Glucksberg <80581902+Glucksberg@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
164 lines
5.4 KiB
TypeScript
164 lines
5.4 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import {
|
|
resetTelegramNetworkConfigStateForTests,
|
|
resolveTelegramAutoSelectFamilyDecision,
|
|
resolveTelegramDnsResultOrderDecision,
|
|
} from "./network-config.js";
|
|
|
|
// Mock isWSL2Sync at the top level
|
|
vi.mock("../infra/wsl.js", () => ({
|
|
isWSL2Sync: vi.fn(() => false),
|
|
}));
|
|
|
|
import { isWSL2Sync } from "../infra/wsl.js";
|
|
|
|
describe("resolveTelegramAutoSelectFamilyDecision", () => {
|
|
afterEach(() => {
|
|
vi.restoreAllMocks();
|
|
resetTelegramNetworkConfigStateForTests();
|
|
});
|
|
|
|
it("prefers env enable over env disable", () => {
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({
|
|
env: {
|
|
OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY: "1",
|
|
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY: "1",
|
|
},
|
|
nodeMajor: 22,
|
|
});
|
|
expect(decision).toEqual({
|
|
value: true,
|
|
source: "env:OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY",
|
|
});
|
|
});
|
|
|
|
it("uses env disable when set", () => {
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({
|
|
env: { OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY: "1" },
|
|
nodeMajor: 22,
|
|
});
|
|
expect(decision).toEqual({
|
|
value: false,
|
|
source: "env:OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY",
|
|
});
|
|
});
|
|
|
|
it("prefers env enable over config", () => {
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({
|
|
env: { OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY: "1" },
|
|
network: { autoSelectFamily: false },
|
|
nodeMajor: 22,
|
|
});
|
|
expect(decision).toEqual({
|
|
value: true,
|
|
source: "env:OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY",
|
|
});
|
|
});
|
|
|
|
it("prefers env disable over config", () => {
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({
|
|
env: { OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY: "1" },
|
|
network: { autoSelectFamily: true },
|
|
nodeMajor: 22,
|
|
});
|
|
expect(decision).toEqual({
|
|
value: false,
|
|
source: "env:OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY",
|
|
});
|
|
});
|
|
|
|
it("uses config override when provided", () => {
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({
|
|
env: {},
|
|
network: { autoSelectFamily: true },
|
|
nodeMajor: 22,
|
|
});
|
|
expect(decision).toEqual({ value: true, source: "config" });
|
|
});
|
|
|
|
it("defaults to enable on Node 22", () => {
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({ env: {}, nodeMajor: 22 });
|
|
expect(decision).toEqual({ value: true, source: "default-node22" });
|
|
});
|
|
|
|
it("returns null when no decision applies", () => {
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({ env: {}, nodeMajor: 20 });
|
|
expect(decision).toEqual({ value: null });
|
|
});
|
|
|
|
describe("WSL2 detection", () => {
|
|
it("disables autoSelectFamily on WSL2", () => {
|
|
vi.mocked(isWSL2Sync).mockReturnValue(true);
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({ env: {}, nodeMajor: 22 });
|
|
expect(decision).toEqual({ value: false, source: "default-wsl2" });
|
|
});
|
|
|
|
it("respects config override on WSL2", () => {
|
|
vi.mocked(isWSL2Sync).mockReturnValue(true);
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({
|
|
env: {},
|
|
network: { autoSelectFamily: true },
|
|
nodeMajor: 22,
|
|
});
|
|
expect(decision).toEqual({ value: true, source: "config" });
|
|
});
|
|
|
|
it("respects env override on WSL2", () => {
|
|
vi.mocked(isWSL2Sync).mockReturnValue(true);
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({
|
|
env: { OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY: "1" },
|
|
nodeMajor: 22,
|
|
});
|
|
expect(decision).toEqual({
|
|
value: true,
|
|
source: "env:OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY",
|
|
});
|
|
});
|
|
|
|
it("uses Node 22 default when not on WSL2", () => {
|
|
vi.mocked(isWSL2Sync).mockReturnValue(false);
|
|
const decision = resolveTelegramAutoSelectFamilyDecision({ env: {}, nodeMajor: 22 });
|
|
expect(decision).toEqual({ value: true, source: "default-node22" });
|
|
});
|
|
|
|
it("memoizes WSL2 detection across repeated defaults", () => {
|
|
vi.mocked(isWSL2Sync).mockClear();
|
|
vi.mocked(isWSL2Sync).mockReturnValue(false);
|
|
resolveTelegramAutoSelectFamilyDecision({ env: {}, nodeMajor: 22 });
|
|
resolveTelegramAutoSelectFamilyDecision({ env: {}, nodeMajor: 22 });
|
|
expect(isWSL2Sync).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("resolveTelegramDnsResultOrderDecision", () => {
|
|
it("uses env override when provided", () => {
|
|
const decision = resolveTelegramDnsResultOrderDecision({
|
|
env: { OPENCLAW_TELEGRAM_DNS_RESULT_ORDER: "verbatim" },
|
|
nodeMajor: 22,
|
|
});
|
|
expect(decision).toEqual({
|
|
value: "verbatim",
|
|
source: "env:OPENCLAW_TELEGRAM_DNS_RESULT_ORDER",
|
|
});
|
|
});
|
|
|
|
it("uses config override when provided", () => {
|
|
const decision = resolveTelegramDnsResultOrderDecision({
|
|
network: { dnsResultOrder: "ipv4first" },
|
|
nodeMajor: 20,
|
|
});
|
|
expect(decision).toEqual({ value: "ipv4first", source: "config" });
|
|
});
|
|
|
|
it("defaults to ipv4first on Node 22", () => {
|
|
const decision = resolveTelegramDnsResultOrderDecision({ nodeMajor: 22 });
|
|
expect(decision).toEqual({ value: "ipv4first", source: "default-node22" });
|
|
});
|
|
|
|
it("returns null when no dns decision applies", () => {
|
|
const decision = resolveTelegramDnsResultOrderDecision({ nodeMajor: 20 });
|
|
expect(decision).toEqual({ value: null });
|
|
});
|
|
});
|