1.2 KiB
1.2 KiB
LocalData Testing Strategy
Goal
To ensure high reliability for data persistence, security, and migration across all supported platforms (iOS and watchOS).
Test Suites
Unit Tests (Tests/LocalDataTests/)
- LocalDataTests.swift: Core round-trip tests for each storage domain (UserDefaults, FileSystem).
- KeychainHelperTests.swift: Verification of Keychain API interactions (add, update, delete, exists).
- EncryptionHelperTests.swift: Round-trip tests for AES and ChaCha20 encryption/decryption with various key derivation methods.
- StorageCatalogTests.swift: Validation of catalog registration, duplicate detection, and missing description checks.
Key Testing Patterns
1. Domain Round-Trips
Always test the full cycle: set -> get (compare) -> remove -> get (expect notFound).
2. Migration Tests
Simulate legacy data by writing to a "legacy" key first, then verifying that the "modern" key can retrieve and consolidate that data.
3. Error Handling
Verify that the correct StorageError is thrown for:
notFoundunregisteredKeydataTooLargeForSync- Domain-specific failures (e.g., Keychain errors)
Running Tests
Run all tests from the package root:
swift test