Initial TrueGrowth source import
This commit is contained in:
53
packages/utils/src/crypto/aes-gcm.test.ts
Normal file
53
packages/utils/src/crypto/aes-gcm.test.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* AES-GCM Crypto Utilities Tests
|
||||
*/
|
||||
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
||||
import { isEncrypted, isCryptoSupported } from './aes-gcm';
|
||||
|
||||
describe('isEncrypted', () => {
|
||||
it('should return true for valid encrypted data format', () => {
|
||||
const encryptedData = JSON.stringify({
|
||||
data: 'base64data',
|
||||
iv: 'base64iv',
|
||||
salt: 'base64salt',
|
||||
});
|
||||
expect(isEncrypted(encryptedData)).toBe(true);
|
||||
});
|
||||
|
||||
it('should return true for fallback encoded data', () => {
|
||||
expect(isEncrypted('OPENTU_FB:SGVsbG8gV29ybGQ=')).toBe(true);
|
||||
expect(isEncrypted('AITU_FB:SGVsbG8gV29ybGQ=')).toBe(true);
|
||||
});
|
||||
|
||||
it('should return false for plain text', () => {
|
||||
expect(isEncrypted('plain text')).toBe(false);
|
||||
expect(isEncrypted('{"key": "value"}')).toBe(false);
|
||||
});
|
||||
|
||||
it('should return false for incomplete encrypted format', () => {
|
||||
expect(isEncrypted(JSON.stringify({ data: 'only' }))).toBe(false);
|
||||
expect(isEncrypted(JSON.stringify({ data: 'a', iv: 'b' }))).toBe(false);
|
||||
});
|
||||
|
||||
it('should return false for invalid JSON', () => {
|
||||
expect(isEncrypted('not json')).toBe(false);
|
||||
expect(isEncrypted('{invalid json}')).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isCryptoSupported', () => {
|
||||
it('should return a boolean', () => {
|
||||
const result = isCryptoSupported();
|
||||
expect(typeof result).toBe('boolean');
|
||||
});
|
||||
});
|
||||
|
||||
// Note: encrypt/decrypt tests require Web Crypto API which may not be available
|
||||
// in all test environments. These are better tested in integration tests.
|
||||
//
|
||||
// In a real browser environment with HTTPS, you would test:
|
||||
// - encrypt('test', 'password') returns valid encrypted format
|
||||
// - decrypt(encrypted, 'password') returns original text
|
||||
// - decrypt with wrong password throws error
|
||||
// - testCrypto('password') returns true
|
||||
Reference in New Issue
Block a user