summaryrefslogtreecommitdiff
path: root/packages/cli/src/config/config.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/config/config.test.ts')
-rw-r--r--packages/cli/src/config/config.test.ts123
1 files changed, 123 insertions, 0 deletions
diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts
index fc4d24bd..69985867 100644
--- a/packages/cli/src/config/config.test.ts
+++ b/packages/cli/src/config/config.test.ts
@@ -13,6 +13,11 @@ import { loadCliConfig, parseArguments } from './config.js';
import { Settings } from './settings.js';
import { Extension } from './extension.js';
import * as ServerConfig from '@google/gemini-cli-core';
+import { isWorkspaceTrusted } from './trustedFolders.js';
+
+vi.mock('./trustedFolders.js', () => ({
+ isWorkspaceTrusted: vi.fn(),
+}));
vi.mock('os', async (importOriginal) => {
const actualOs = await importOriginal<typeof os>();
@@ -1628,6 +1633,7 @@ describe('loadCliConfig approval mode', () => {
vi.resetAllMocks();
vi.mocked(os.homedir).mockReturnValue('/mock/home/user');
process.env.GEMINI_API_KEY = 'test-api-key';
+ process.argv = ['node', 'script.js']; // Reset argv for each test
});
afterEach(() => {
@@ -1696,3 +1702,120 @@ describe('loadCliConfig approval mode', () => {
expect(config.getApprovalMode()).toBe(ServerConfig.ApprovalMode.YOLO);
});
});
+
+describe('loadCliConfig trustedFolder', () => {
+ const originalArgv = process.argv;
+ const originalEnv = { ...process.env };
+
+ beforeEach(() => {
+ vi.resetAllMocks();
+ vi.mocked(os.homedir).mockReturnValue('/mock/home/user');
+ process.env.GEMINI_API_KEY = 'test-api-key';
+ process.argv = ['node', 'script.js']; // Reset argv for each test
+ });
+
+ afterEach(() => {
+ process.argv = originalArgv;
+ process.env = originalEnv;
+ vi.restoreAllMocks();
+ });
+
+ const testCases = [
+ // Cases where folderTrustFeature is false (feature disabled)
+ {
+ folderTrustFeature: false,
+ folderTrust: true,
+ isWorkspaceTrusted: true,
+ expectedFolderTrust: false,
+ expectedIsTrustedFolder: true,
+ description:
+ 'feature disabled, folderTrust true, workspace trusted -> behave as trusted',
+ },
+ {
+ folderTrustFeature: false,
+ folderTrust: true,
+ isWorkspaceTrusted: false,
+ expectedFolderTrust: false,
+ expectedIsTrustedFolder: true,
+ description:
+ 'feature disabled, folderTrust true, workspace not trusted -> behave as trusted',
+ },
+ {
+ folderTrustFeature: false,
+ folderTrust: false,
+ isWorkspaceTrusted: true,
+ expectedFolderTrust: false,
+ expectedIsTrustedFolder: true,
+ description:
+ 'feature disabled, folderTrust false, workspace trusted -> behave as trusted',
+ },
+
+ // Cases where folderTrustFeature is true but folderTrust setting is false
+ {
+ folderTrustFeature: true,
+ folderTrust: false,
+ isWorkspaceTrusted: true,
+ expectedFolderTrust: false,
+ expectedIsTrustedFolder: true,
+ description:
+ 'feature on, folderTrust false, workspace trusted -> behave as trusted',
+ },
+ {
+ folderTrustFeature: true,
+ folderTrust: false,
+ isWorkspaceTrusted: false,
+ expectedFolderTrust: false,
+ expectedIsTrustedFolder: true,
+ description:
+ 'feature on, folderTrust false, workspace not trusted -> behave as trusted',
+ },
+
+ // Cases where feature is fully enabled (folderTrustFeature and folderTrust are true)
+ {
+ folderTrustFeature: true,
+ folderTrust: true,
+ isWorkspaceTrusted: true,
+ expectedFolderTrust: true,
+ expectedIsTrustedFolder: true,
+ description:
+ 'feature on, folderTrust on, workspace trusted -> is trusted',
+ },
+ {
+ folderTrustFeature: true,
+ folderTrust: true,
+ isWorkspaceTrusted: false,
+ expectedFolderTrust: true,
+ expectedIsTrustedFolder: false,
+ description:
+ 'feature on, folderTrust on, workspace NOT trusted -> is NOT trusted',
+ },
+ {
+ folderTrustFeature: true,
+ folderTrust: true,
+ isWorkspaceTrusted: undefined,
+ expectedFolderTrust: true,
+ expectedIsTrustedFolder: undefined,
+ description:
+ 'feature on, folderTrust on, workspace trust unknown -> is unknown',
+ },
+ ];
+
+ for (const {
+ folderTrustFeature,
+ folderTrust,
+ isWorkspaceTrusted: mockTrustValue,
+ expectedFolderTrust,
+ expectedIsTrustedFolder,
+ description,
+ } of testCases) {
+ it(`should be correct for: ${description}`, async () => {
+ (isWorkspaceTrusted as vi.Mock).mockReturnValue(mockTrustValue);
+ const argv = await parseArguments();
+ const settings: Settings = { folderTrustFeature, folderTrust };
+ const config = await loadCliConfig(settings, [], 'test-session', argv);
+
+ expect(config.getFolderTrust()).toBe(expectedFolderTrust);
+ expect(config.isTrustedFolder()).toBe(expectedIsTrustedFolder);
+ });
+ }
+});