Skip to content

Commit af7581a

Browse files
committed
refactor: only run persist logic when platform is win32
Signed-off-by: Trae Yelovich <[email protected]>
1 parent 0261bee commit af7581a

File tree

2 files changed

+27
-15
lines changed

2 files changed

+27
-15
lines changed

packages/imperative/src/security/__tests__/DefaultCredentialManager.unit.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { DefaultCredentialManager } from "..";
1616
import { keyring as keytar } from "@zowe/secrets-for-zowe-sdk";
1717
import { ImperativeError } from "../../error";
1818
import { PersistenceLevel, PersistenceValue } from "../src/doc/IDefaultCredentialManagerOptions";
19+
import { Logger } from "../../logger";
1920

2021
const winMaxCredentialLength = 2560;
2122

@@ -72,6 +73,14 @@ describe("DefaultCredentialManager", () => {
7273

7374
expect((manager as any).persistValueWin32).toEqual(PersistenceValue.Enterprise);
7475
});
76+
77+
it("should log warning when given persistence level is invalid", () => {
78+
const service = "imperative";
79+
const loggerWarnSpy = jest.spyOn(Logger.prototype, "warn");
80+
const manager = new DefaultCredentialManager(service, "test manager", { persist: "invalid_value" as any });
81+
expect((manager as any).persistValueWin32).toEqual(PersistenceValue.Enterprise);
82+
expect(loggerWarnSpy).toHaveBeenCalledWith("[DefaultCredentialManager] Win32 persistence option is invalid, falling back to enterprise.");
83+
});
7584
});
7685

7786
describe("instance methods", () => {

packages/imperative/src/security/src/DefaultCredentialManager.ts

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -96,22 +96,25 @@ export class DefaultCredentialManager extends AbstractCredentialManager {
9696
// constructor doesn't do anything. Who knows what things might happen in
9797
// the abstract class initialization in the future.
9898
super(service, displayName, options);
99-
switch (options?.persist) {
100-
case PersistenceLevel.SessionOnly:
101-
this.persistValueWin32 = PersistenceValue.SessionOnly;
102-
break;
103-
case PersistenceLevel.LocalMachine:
104-
this.persistValueWin32 = PersistenceValue.LocalMachine;
105-
break;
106-
case PersistenceLevel.Enterprise:
107-
this.persistValueWin32 = PersistenceValue.Enterprise;
108-
break;
109-
default:
110-
break;
111-
}
11299

113-
if (process.platform === "win32") {
114-
Logger.getImperativeLogger().trace(`[DefaultCredentialManager] Persistence level (win32): ${options?.persist ?? PersistenceLevel.Enterprise}`);
100+
if (process.platform === "win32") {
101+
switch (options?.persist) {
102+
case PersistenceLevel.SessionOnly:
103+
this.persistValueWin32 = PersistenceValue.SessionOnly;
104+
break;
105+
case PersistenceLevel.LocalMachine:
106+
this.persistValueWin32 = PersistenceValue.LocalMachine;
107+
break;
108+
case PersistenceLevel.Enterprise:
109+
this.persistValueWin32 = PersistenceValue.Enterprise;
110+
break;
111+
default:
112+
if (options?.persist) {
113+
Logger.getImperativeLogger().warn("[DefaultCredentialManager] Win32 persistence option is invalid, falling back to enterprise.");
114+
}
115+
break;
116+
}
117+
Logger.getImperativeLogger().trace(`[DefaultCredentialManager] Persistence level received (win32): ${options?.persist ?? PersistenceLevel.Enterprise}`);
115118
}
116119

117120
/* Gather all services. We will load secure properties for the first

0 commit comments

Comments
 (0)