



























@@ -2,24 +2,8 @@ import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
22import type { WindowsAclEntry, WindowsAclSummary } from "./windows-acl.js";
3344const MOCK_USERNAME = "MockUser";
5-const userInfoMock = vi.hoisted(() =>
6-vi.fn(() => ({
7-username: MOCK_USERNAME,
8-uid: -1,
9-gid: -1,
10-shell: "C:\\Windows\\System32\\cmd.exe",
11-homedir: "C:\\Users\\MockUser",
12-})),
13-);
14-15-vi.mock("node:os", async () => {
16-const { mockNodeBuiltinModule } = await import("openclaw/plugin-sdk/test-node-mocks");
17-return mockNodeBuiltinModule(
18-() => vi.importActual<typeof import("node:os")>("node:os"),
19-{ userInfo: userInfoMock as unknown as typeof import("node:os").userInfo },
20-{ mirrorToDefault: true },
21-);
22-});
5+const mockUserInfo = () => ({ username: MOCK_USERNAME });
6+const emptyUserInfo = () => ({ username: "" });
237248let createIcaclsResetCommand: typeof import("./windows-acl.js").createIcaclsResetCommand;
259let formatIcaclsResetCommand: typeof import("./windows-acl.js").formatIcaclsResetCommand;
@@ -125,7 +109,7 @@ describe("windows-acl", () => {
125109it("falls back to os.userInfo when USERNAME is empty", () => {
126110// When USERNAME env is empty, falls back to os.userInfo().username
127111const env = { USERNAME: "", USERDOMAIN: "WORKGROUP" };
128-const result = resolveWindowsUserPrincipal(env);
112+const result = resolveWindowsUserPrincipal(env, mockUserInfo);
129113// Should return a username (from os.userInfo fallback) with WORKGROUP domain
130114expect(result).toBe(`WORKGROUP\\${MOCK_USERNAME}`);
131115});
@@ -653,6 +637,7 @@ Successfully processed 1 files`;
653637const result = formatIcaclsResetCommand("C:\\test\\file.txt", {
654638isDir: false,
655639env: {},
640+userInfo: mockUserInfo,
656641});
657642// Should contain the actual system username from os.userInfo
658643expect(result).toContain(`"${MOCK_USERNAME}:F"`);
@@ -678,6 +663,7 @@ Successfully processed 1 files`;
678663const result = createIcaclsResetCommand("C:\\test\\file.txt", {
679664isDir: false,
680665env: {},
666+userInfo: mockUserInfo,
681667});
682668// Should return a valid command using the system username
683669expect(result).not.toBeNull();
@@ -717,17 +703,10 @@ Successfully processed 1 files`;
717703});
718704719705it("returns null when no username can be resolved (line 348)", () => {
720-// Temporarily make os.userInfo().username empty so resolveWindowsUserPrincipal returns null
721-userInfoMock.mockReturnValueOnce({
722-username: "",
723-uid: -1,
724-gid: -1,
725-shell: "",
726-homedir: "",
727-});
728706const result = createIcaclsResetCommand("C:\\test\\file.txt", {
729707isDir: false,
730708env: { USERNAME: "", USERDOMAIN: "" },
709+userInfo: emptyUserInfo,
731710});
732711expect(result).toBeNull();
733712});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。