import { describe, it, expect } from 'vitest'; import { GuardianClient, GuardianError } from '../../../src/vault/transport/guardian'; describe('GuardianClient', () => { it('constructs with endpoint', () => { const client = new GuardianClient({ address: '127.0.0.1', port: 7500 }); expect(client).toBeDefined(); }); it('session token management', () => { const client = new GuardianClient({ address: '127.0.0.1', port: 7500 }); expect(client.getSessionToken()).toBeNull(); client.setSessionToken('test-token'); expect(client.getSessionToken()).toBe('test-token'); client.clearSessionToken(); expect(client.getSessionToken()).toBeNull(); }); it('GuardianError has code and message', () => { const err = new GuardianError('TIMEOUT', 'request timed out'); expect(err.code).toBe('TIMEOUT'); expect(err.message).toBe('request timed out'); expect(err.name).toBe('GuardianError'); expect(err instanceof Error).toBe(true); }); it('putSecret throws without session token', async () => { const client = new GuardianClient({ address: '127.0.0.1', port: 7500 }); await expect(client.putSecret('test', new Uint8Array([1]), 1)).rejects.toThrow('No session token'); }); it('getSecret throws without session token', async () => { const client = new GuardianClient({ address: '127.0.0.1', port: 7500 }); await expect(client.getSecret('test')).rejects.toThrow('No session token'); }); it('deleteSecret throws without session token', async () => { const client = new GuardianClient({ address: '127.0.0.1', port: 7500 }); await expect(client.deleteSecret('test')).rejects.toThrow('No session token'); }); it('listSecrets throws without session token', async () => { const client = new GuardianClient({ address: '127.0.0.1', port: 7500 }); await expect(client.listSecrets()).rejects.toThrow('No session token'); }); });