From e8b7565454c8012c7cd126e028553f8ab2453b28 Mon Sep 17 00:00:00 2001 From: creatixchu Date: Mon, 19 Oct 2026 23:41:04 +0800 Subject: [PATCH] test(cua): type consent storage fixtures for lint --- packages/experimental/cua/tests/application-access.spec.ts | 4 ++-- .../cua/tests/fixtures/permission-store-worker.ts | 6 ++++-- packages/experimental/cua/tests/permission-fixture.ts | 4 ++-- packages/experimental/cua/tests/permission-store.spec.ts | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/experimental/cua/tests/application-access.spec.ts b/packages/experimental/cua/tests/application-access.spec.ts index e71b61e955..cce1acac22 100644 --- a/packages/experimental/cua/tests/application-access.spec.ts +++ b/packages/experimental/cua/tests/application-access.spec.ts @@ -456,8 +456,8 @@ it('does not store a cancellation decision after provider disposal starts', asyn it('rejects persistent consent when storage capability disappears before the commit', async () => { const f = await setup('Always allow') - const original = vi.mocked(f.store.withState).getMockImplementation()! - vi.mocked(f.store.withState).mockImplementationOnce(original).mockImplementationOnce((signal, operation) => { + const original = f.withState.getMockImplementation()! + f.withState.mockImplementationOnce(original).mockImplementationOnce((signal, operation) => { f.setWritable(false) return original(signal, operation) }) diff --git a/packages/experimental/cua/tests/fixtures/permission-store-worker.ts b/packages/experimental/cua/tests/fixtures/permission-store-worker.ts index 5a30c72de6..dbaf9a9245 100644 --- a/packages/experimental/cua/tests/fixtures/permission-store-worker.ts +++ b/packages/experimental/cua/tests/fixtures/permission-store-worker.ts @@ -1,14 +1,16 @@ /** External file writer used to verify that an open provider reloads durable authorization. */ import { readFile, rename, writeFile } from 'node:fs/promises' +import type { PermissionState } from '../../src/permission-store.ts' +import type { CuaApplicationId } from '../../src/application-types.ts' const [file, id] = process.argv.slice(2) if (!file || !id) throw new Error('Expected storage file and application id') -const record = JSON.parse(await readFile(file, 'utf8')) +const record = JSON.parse(await readFile(file, 'utf8')) as { global: PermissionState } const existing = record.global.applications[id] record.global.applications[id] = { revoked: (existing?.revoked ?? 0) + 1, sessions: {}, - always: { id, name: 'Other process', executablePath: '/other' }, + always: { id: id as CuaApplicationId, name: 'Other process', executablePath: '/other' }, } const temporary = `${file}.writer-${process.pid}` await writeFile(temporary, JSON.stringify(record)) diff --git a/packages/experimental/cua/tests/permission-fixture.ts b/packages/experimental/cua/tests/permission-fixture.ts index 17a1aa4642..0802d34152 100644 --- a/packages/experimental/cua/tests/permission-fixture.ts +++ b/packages/experimental/cua/tests/permission-fixture.ts @@ -32,7 +32,7 @@ export function permissionFixture(ctx: Context, initial: readonly CuaApplication observed = [...grants] }) }) - vi.spyOn(store, 'withState').mockImplementation((signal, operation) => original(signal, async (transaction) => { + const withState = vi.spyOn(store, 'withState').mockImplementation((signal, operation) => original(signal, async (transaction) => { observed = grantsOf(transaction.state) return operation({ ...transaction, save: async (next) => { const nextGrants = grantsOf(next) @@ -41,7 +41,7 @@ export function permissionFixture(ctx: Context, initial: readonly CuaApplication else await save(nextGrants, commit) } }) })) - return { store, save, grants: () => observed, + return { store, save, withState, grants: () => observed, setWritable(value: boolean) { writable = value; capability.mockImplementation(() => writable) }, } } diff --git a/packages/experimental/cua/tests/permission-store.spec.ts b/packages/experimental/cua/tests/permission-store.spec.ts index 4d8c8418d3..40c6fbe07a 100644 --- a/packages/experimental/cua/tests/permission-store.spec.ts +++ b/packages/experimental/cua/tests/permission-store.spec.ts @@ -117,7 +117,7 @@ it('rejects malformed or identity-mismatched data without replacing it with lega await writeFile(file, '{broken') await expect(a.store.withState(signal, transaction => transaction.state)).rejects.toThrow() expect(await readFile(file, 'utf8')).toBe('{broken') - const altered: { global: { applications: Record } } = JSON.parse(valid) + const altered = JSON.parse(valid) as { global: { applications: Record } } altered.global.applications[grant.id]!.always.id = 'b'.repeat(64) as CuaApplicationId const mismatch = JSON.stringify(altered); await writeFile(file, mismatch) await expect(a.store.withState(signal, transaction => transaction.state)).rejects.toMatchObject({ code: 'invalid-record' })