From 53511d6ed4c3658a7fbe1a6f1ada0a33a688c46a Mon Sep 17 00:00:00 2001 From: Abhijit Balaji Date: Fri, 13 Feb 2026 11:24:12 -0800 Subject: [PATCH] fix: Update test expectations to match createPolicyEngineConfig signature changes from rebase --- packages/cli/src/config/config.test.ts | 2 + packages/core/src/policy/config.ts | 2 +- .../core/src/policy/project-policy.test.ts | 70 ++++++++++++++++--- 3 files changed, 64 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts index c02637be8f..3f2f303d39 100644 --- a/packages/cli/src/config/config.test.ts +++ b/packages/cli/src/config/config.test.ts @@ -3243,6 +3243,8 @@ describe('Policy Engine Integration in loadCliConfig', () => { policyPaths: ['/path/to/policy1.toml', '/path/to/policy2.toml'], }), expect.anything(), + undefined, + expect.anything(), ); }); }); diff --git a/packages/core/src/policy/config.ts b/packages/core/src/policy/config.ts index 6a0b6c4145..780b2da121 100644 --- a/packages/core/src/policy/config.ts +++ b/packages/core/src/policy/config.ts @@ -67,7 +67,7 @@ export function getPolicyDirectories( } else { dirs.push(Storage.getUserPoliciesDir()); } - + // Project Tier (third highest) if (projectPoliciesDir) { dirs.push(projectPoliciesDir); diff --git a/packages/core/src/policy/project-policy.test.ts b/packages/core/src/policy/project-policy.test.ts index dbbc7b759e..b3592f71e5 100644 --- a/packages/core/src/policy/project-policy.test.ts +++ b/packages/core/src/policy/project-policy.test.ts @@ -44,10 +44,20 @@ describe('Project-Level Policies', () => { 'node:fs/promises', ); + const mockStat = vi.fn(async (path: string) => { + if (typeof path === 'string' && path.startsWith('/mock/')) { + return { + isDirectory: () => true, + isFile: () => false, + } as unknown as Awaited>; + } + return actualFs.stat(path); + }); + // Mock readdir to return a policy file for each tier const mockReaddir = vi.fn(async (path: string) => { const normalizedPath = nodePath.normalize(path); - if (normalizedPath.includes('default')) + if (normalizedPath.endsWith('default/policies')) return [ { name: 'default.toml', @@ -55,11 +65,11 @@ describe('Project-Level Policies', () => { isDirectory: () => false, }, ] as unknown as Awaited>; - if (normalizedPath.includes('user')) + if (normalizedPath.endsWith('user/policies')) return [ { name: 'user.toml', isFile: () => true, isDirectory: () => false }, ] as unknown as Awaited>; - if (normalizedPath.includes('project')) + if (normalizedPath.endsWith('project/policies')) return [ { name: 'project.toml', @@ -67,7 +77,7 @@ describe('Project-Level Policies', () => { isDirectory: () => false, }, ] as unknown as Awaited>; - if (normalizedPath.includes('system')) + if (normalizedPath.endsWith('system/policies')) return [ { name: 'admin.toml', isFile: () => true, isDirectory: () => false }, ] as unknown as Awaited>; @@ -109,9 +119,15 @@ priority = 10 vi.doMock('node:fs/promises', () => ({ ...actualFs, - default: { ...actualFs, readdir: mockReaddir, readFile: mockReadFile }, + default: { + ...actualFs, + readdir: mockReaddir, + readFile: mockReadFile, + stat: mockStat, + }, readdir: mockReaddir, readFile: mockReadFile, + stat: mockStat, })); const { createPolicyEngineConfig } = await import('./config.js'); @@ -152,8 +168,20 @@ priority = 10 await vi.importActual( 'node:fs/promises', ); + + const mockStat = vi.fn(async (path: string) => { + if (typeof path === 'string' && path.startsWith('/mock/')) { + return { + isDirectory: () => true, + isFile: () => false, + } as unknown as Awaited>; + } + return actualFs.stat(path); + }); + const mockReaddir = vi.fn(async (path: string) => { - if (path.includes('default')) + const normalizedPath = nodePath.normalize(path); + if (normalizedPath.endsWith('default/policies')) return [ { name: 'default.toml', @@ -172,9 +200,15 @@ priority=10`, vi.doMock('node:fs/promises', () => ({ ...actualFs, - default: { ...actualFs, readdir: mockReaddir, readFile: mockReadFile }, + default: { + ...actualFs, + readdir: mockReaddir, + readFile: mockReadFile, + stat: mockStat, + }, readdir: mockReaddir, readFile: mockReadFile, + stat: mockStat, })); const { createPolicyEngineConfig } = await import('./config.js'); @@ -200,8 +234,20 @@ priority=10`, await vi.importActual( 'node:fs/promises', ); + + const mockStat = vi.fn(async (path: string) => { + if (typeof path === 'string' && path.startsWith('/mock/')) { + return { + isDirectory: () => true, + isFile: () => false, + } as unknown as Awaited>; + } + return actualFs.stat(path); + }); + const mockReaddir = vi.fn(async (path: string) => { - if (path.includes('project')) + const normalizedPath = nodePath.normalize(path); + if (normalizedPath.endsWith('project/policies')) return [ { name: 'project.toml', @@ -220,9 +266,15 @@ priority=500`, vi.doMock('node:fs/promises', () => ({ ...actualFs, - default: { ...actualFs, readdir: mockReaddir, readFile: mockReadFile }, + default: { + ...actualFs, + readdir: mockReaddir, + readFile: mockReadFile, + stat: mockStat, + }, readdir: mockReaddir, readFile: mockReadFile, + stat: mockStat, })); const { createPolicyEngineConfig } = await import('./config.js');