import { describe, expect, it } from 'vitest' import { decryptSessionBackup, encryptSessionBackup, isEncryptedSessionBackup, } from '../../src/utils/sessionBackupCrypto' describe('sessionBackupCrypto', () => { it('encrypts and decrypts UTF-8 session payload', async () => { const plaintext = JSON.stringify({ version: 1, sessions: [{ name: '生产', host: 'ops.example.com', privateKey: '-----BEGIN KEY-----\n密\n' }], }) const encrypted = await encryptSessionBackup(plaintext, 's3cret!') const envelope = JSON.parse(encrypted) expect(isEncryptedSessionBackup(envelope)).toBe(true) expect(encrypted).not.toContain('ops.example.com') expect(encrypted).not.toContain('BEGIN KEY') const restored = await decryptSessionBackup(envelope, 's3cret!') expect(restored).toBe(plaintext) }) it('rejects wrong password', async () => { const encrypted = await encryptSessionBackup('{"sessions":[]}', 'right-password') const envelope = JSON.parse(encrypted) await expect(decryptSessionBackup(envelope, 'wrong-password')).rejects.toThrow( 'BACKUP_PASSWORD_INVALID' ) }) })