27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
import { mockDesktopApi } from '../setup'
|
|
import { useAiProviderStore } from '../../src/stores/aiProviderStore'
|
|
|
|
describe('AI provider store secret boundary', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
useAiProviderStore.setState({
|
|
providers: [],
|
|
activeProviderId: '',
|
|
isLoaded: true,
|
|
catalogProviders: [],
|
|
catalogUpdatedAt: null,
|
|
})
|
|
})
|
|
|
|
it('saves API keys through Rust and never writes them to normal settings', async () => {
|
|
const providerId = await useAiProviderStore.getState().addPreset('deepseek')
|
|
const provider = useAiProviderStore.getState().providers.find((item) => item.id === providerId)!
|
|
await useAiProviderStore.getState().saveProvider(provider, 'sk-very-secret')
|
|
|
|
expect(mockDesktopApi.aiProviderSaveKey).toHaveBeenCalledWith(providerId, 'sk-very-secret')
|
|
const settingsPayloads = vi.mocked(mockDesktopApi.settingsSet).mock.calls.map((call) => call[1])
|
|
expect(JSON.stringify(settingsPayloads)).not.toContain('sk-very-secret')
|
|
})
|
|
})
|