test(plugin-manager): keep approval assertions type-safe
This commit is contained in:
1 parent
9a83772560
commit
d86da2e31c
1 file changed
+6
-4
@@ -87,8 +87,11 @@ it.each(['read-only', 'workspace-write'] as const)('approves each action once in
|
||||
const audit = agent.session.snapshotEvents().filter(event => event.type.startsWith('approval/'))
|
||||
expect(audit).toHaveLength(12)
|
||||
expect(audit[0]).toMatchObject({ type: 'approval/asked', data: {
|
||||
toolName: 'plugin_manager', callId: 'manager-call', reason: expect.stringContaining('"action":"list_plugins"'),
|
||||
toolName: 'plugin_manager', callId: 'manager-call',
|
||||
} })
|
||||
const request = audit[0]
|
||||
if (request?.type !== 'approval/asked') throw new Error('Expected an approval request')
|
||||
expect(request.data.reason).toContain('"action":"list_plugins"')
|
||||
expect(audit[1]).toMatchObject({ type: 'approval/decided', data: { outcome: 'allowed-once' } })
|
||||
dispose()
|
||||
expect((await call({ action: 'list_plugins' }, agent)).isError).toBe(true)
|
||||
@@ -101,9 +104,8 @@ it.each(['rejected', 'cancelled', 'unavailable'] as const)('does not mutate the
|
||||
const agent = activeAgent()
|
||||
expect((await call({ action: 'install_bundle', target: 'bundle' }, agent)).isError).toBe(true)
|
||||
expect(manager.installBundle).not.toHaveBeenCalled()
|
||||
expect(agent.session.snapshotEvents()).toContainEqual(expect.objectContaining({
|
||||
type: 'approval/decided', data: expect.objectContaining({ outcome }),
|
||||
}))
|
||||
expect(agent.session.snapshotEvents().filter(event => event.type === 'approval/decided')
|
||||
.map(event => event.data.outcome)).toEqual([outcome])
|
||||
})
|
||||
|
||||
it('rejects never policy without prompting and keeps full-access calls prompt-free', async () => {
|
||||
|
||||
Reference in new issue
Block a user