From a199434e08f49464aac29501019075be06d77d39 Mon Sep 17 00:00:00 2001 From: iven Date: Sat, 21 Mar 2026 17:07:08 +0800 Subject: [PATCH] test(crypto): add generateMasterKey test coverage - Add test for base64 string output - Add test for 32-byte key length - Add test for uniqueness Co-Authored-By: Claude Opus 4.6 --- desktop/tests/lib/crypto-utils.test.ts | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/desktop/tests/lib/crypto-utils.test.ts b/desktop/tests/lib/crypto-utils.test.ts index 95e9a2e..3e70314 100644 --- a/desktop/tests/lib/crypto-utils.test.ts +++ b/desktop/tests/lib/crypto-utils.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect, beforeEach, vi } from 'vitest'; -import { arrayToBase64, base64ToArray, deriveKey, encrypt, decrypt } from '../../src/lib/crypto-utils'; +import { arrayToBase64, base64ToArray, deriveKey, encrypt, decrypt, generateMasterKey } from '../../src/lib/crypto-utils'; describe('crypto-utils', () => { describe('arrayToBase64', () => { @@ -75,4 +75,25 @@ describe('crypto-utils', () => { expect(decrypted).toBe(plaintext); }); }); + + describe('generateMasterKey', () => { + it('should return a base64 string', () => { + const key = generateMasterKey(); + expect(typeof key).toBe('string'); + // Base64 regex pattern + expect(key).toMatch(/^[A-Za-z0-9+/]+=*$/); + }); + + it('should generate 32 bytes (256 bits)', () => { + const key = generateMasterKey(); + const decoded = base64ToArray(key); + expect(decoded.length).toBe(32); + }); + + it('should generate unique values on each call', () => { + const key1 = generateMasterKey(); + const key2 = generateMasterKey(); + expect(key1).not.toBe(key2); + }); + }); });