fix: avoid legacy Windows PasswordVault reads by default (#941)
* fix: avoid legacy Windows PasswordVault reads by default * fix: isolate model capability override cache --------- Co-authored-by: OpenClaude Worker 3 <worker-3@openclaude.local>
This commit is contained in:
@@ -97,13 +97,22 @@ describe("Secure Storage Platform Implementations", () => {
|
||||
expect(options2.input).toContain("token'quote");
|
||||
});
|
||||
|
||||
test("delete() includes assembly load", () => {
|
||||
test("delete() skips legacy PasswordVault by default", () => {
|
||||
windowsCredentialStorage.delete();
|
||||
expect(mockExecaSync).toHaveBeenCalledTimes(1);
|
||||
const script = mockExecaSync.mock.calls[0][1][1];
|
||||
expect(script).not.toContain("System.Runtime.WindowsRuntime");
|
||||
});
|
||||
|
||||
test("delete() includes legacy assembly load when explicitly enabled", () => {
|
||||
process.env.OPENCLAUDE_ENABLE_LEGACY_WINDOWS_PASSWORDVAULT = "1";
|
||||
windowsCredentialStorage.delete();
|
||||
const script = mockExecaSync.mock.calls[1][1][1];
|
||||
expect(script).toContain("Add-Type -AssemblyName System.Runtime.WindowsRuntime");
|
||||
});
|
||||
|
||||
test("escapes double quotes in username", () => {
|
||||
process.env.OPENCLAUDE_ENABLE_LEGACY_WINDOWS_PASSWORDVAULT = "1";
|
||||
process.env.USER = 'user"name';
|
||||
windowsCredentialStorage.read();
|
||||
const script = mockExecaSync.mock.calls[1][1][1];
|
||||
@@ -111,7 +120,17 @@ describe("Secure Storage Platform Implementations", () => {
|
||||
expect(script).not.toContain('user"name');
|
||||
});
|
||||
|
||||
test("read() falls back to legacy PasswordVault when the DPAPI payload is invalid JSON", () => {
|
||||
test("read() does not touch legacy PasswordVault by default", () => {
|
||||
mockExecaSync.mockImplementationOnce(() => ({ exitCode: 1, stdout: "" }));
|
||||
|
||||
const result = windowsCredentialStorage.read();
|
||||
|
||||
expect(result).toBeNull();
|
||||
expect(mockExecaSync).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
test("read() falls back to legacy PasswordVault when explicitly enabled", () => {
|
||||
process.env.OPENCLAUDE_ENABLE_LEGACY_WINDOWS_PASSWORDVAULT = "1";
|
||||
mockExecaSync
|
||||
.mockImplementationOnce(() => ({ exitCode: 0, stdout: "{not-json" }))
|
||||
.mockImplementationOnce(() => ({
|
||||
@@ -126,6 +145,7 @@ describe("Secure Storage Platform Implementations", () => {
|
||||
});
|
||||
|
||||
test("read() fails closed when the legacy PasswordVault payload is invalid JSON", () => {
|
||||
process.env.OPENCLAUDE_ENABLE_LEGACY_WINDOWS_PASSWORDVAULT = "1";
|
||||
mockExecaSync
|
||||
.mockImplementationOnce(() => ({ exitCode: 1, stdout: "" }))
|
||||
.mockImplementationOnce(() => ({ exitCode: 0, stdout: "{not-json" }));
|
||||
|
||||
Reference in New Issue
Block a user