import { describe, it, expect } from 'vitest'; import { generateKey, generateSecret, encryptByTmpSecret, decryptByTmpSecret, } from './tmp-secret'; import { size, toHex } from 'viem'; import { randomBytes } from 'crypto'; describe('tmp-secret utility functions', () => { it('should generate a key of 32 bytes in hex format', () => { const key = generateKey(); expect(key).toBeDefined(); expect(key.length).toBe(66); // 32 bytes in hex format }); it('should generate a secret and public key', () => { const { secret, publicKey } = generateSecret(); expect(secret).toBeDefined(); expect(publicKey).toBeDefined(); }); it('should encrypt and decrypt text using a temporary secret', async () => { const secret = generateKey(); const originalHex = toHex(new Uint8Array(randomBytes(32))); const encryptedHex = await encryptByTmpSecret(secret, originalHex); expect(encryptedHex).toBeDefined(); expect(size(encryptedHex)).toBe(32); const decryptedHex = await decryptByTmpSecret(secret, encryptedHex); expect(decryptedHex).toBe(originalHex); }); });