Identified appropriate test locations for encryption-related error tests: - Primary: crates/pdftract-cli/tests/test_encryption_errors.rs (comprehensive CLI tests) - Secondary: tests/encryption_errors.rs (workspace-level integration tests) Documented existing test structure, module patterns, and fixture locations. Closes bf-2ntve.
5 KiB
bf-2ntve: Encryption Test Module Location Research
Summary
Identified the appropriate test module locations for encryption-related error tests in the pdftract CLI.
Findings
Existing Test Structure
The pdftract project uses a dual-level test structure:
-
Workspace-level integration tests:
/home/coding/pdftract/tests/- Contains general integration tests shared across the workspace
- Example:
tests/encryption_errors.rs(7,018 bytes)
-
CLI-specific integration tests:
/home/coding/pdftract/crates/pdftract-cli/tests/- Contains tests specific to the pdftract CLI binary
- More extensive test fixtures and CLI-specific behavior
Encryption Test Files Already Present
1. CLI-specific encryption tests
File: /home/coding/pdftract/crates/pdftract-cli/tests/test_encryption_errors.rs (12,690 bytes)
- Purpose: Comprehensive encryption error testing for pdftract CLI
- Structure: Well-organized module with:
unsupported_handlersmodule - Tests for Adobe LiveCycle unsupported handlersupported_encryptionmodule - Tests for RC4/AES decryption with passwordspassword_errorsmodule - Tests for wrong/missing password handlingfixture_validationmodule - Validates encrypted PDF fixturesintegration_testsmodule - Placeholder for complete workflow tests
- Fixtures: Uses
tests/fixtures/encrypted/directory - References: Cites plan lines 258, 732, 1132, 1149
File: /home/coding/pdftract/crates/pdftract-cli/tests/test_encryption_unsupported.rs (2,828 bytes)
- Purpose: Focused test for ENCRYPTION_UNSUPPORTED exit code
- Tests: Two specific tests for livecycle.pdf behavior
- Functionality: Verifies exit code 3 and error message content
2. Workspace-level encryption tests
File: /home/coding/pdftract/tests/encryption_errors.rs (7,018 bytes)
- Purpose: Encryption error integration tests
- Feature flag:
#![cfg(feature = "decrypt")] - Tests:
test_encryption_unsupported_livecycle()- Verifies ENCRYPTION_UNSUPPORTED diagnostictest_exit_code_3_no_password()- Exit code verificationtest_wrong_password_encryption_unsupported()- Wrong password handlingtest_encryption_error_consistency()- Parameterized test across fixtures
Target File Paths for New Encryption Tests
For CLI-specific encryption tests
/home/coding/pdftract/crates/pdftract-cli/tests/test_encryption_errors.rs
Rationale: This is the primary location for CLI-specific encryption error tests. It already contains:
- Comprehensive module structure
- Fixture validation infrastructure
- Password handling tests
- Exit code verification
For general integration tests
/home/coding/pdftract/tests/encryption_errors.rs
Rationale: This location is appropriate for:
- Cross-cutting integration tests
- Tests that don't require CLI-specific behavior
- Tests gated by feature flags (e.g.,
decryptfeature)
Module Structure Pattern
The test structure follows these conventions:
-
CLI tests:
crates/pdftract-cli/tests/test_<feature>_<subcategory>.rs- Examples:
test_encryption_errors.rs,test_encryption_unsupported.rs - Uses direct binary execution via
Command::new(pdftract_bin())
- Examples:
-
Workspace tests:
tests/<feature>_<subcategory>.rs- Examples:
encryption_errors.rs - May use feature gates:
#![cfg(feature = "decrypt")]
- Examples:
Encrypted Fixtures Location
/home/coding/pdftract/tests/fixtures/encrypted/
Fixture files:
EC-04-rc4-encrypted.pdf- RC4 encryptionEC-05-aes128-encrypted.pdf- AES-128 encryptionEC-06-aes256-encrypted.pdf- AES-256 encryptionEC-empty-password.pdf- Empty passwordlivecycle.pdf- Unsupported Adobe.APS handler
References
- Plan line 258: Failure Mode Taxonomy - ENCRYPTION_UNSUPPORTED
- Plan line 732: Input | Encryption-unsupported diagnostic and CLI exit code 3
- Plan line 1132: RC4 and AES-128/256 decryption implementation
- Plan line 1149: Encrypted file with unknown handler error handling
- Parent bead: bf-56jda
Recommendation
For new encryption-related error tests, the appropriate location is:
Primary location: /home/coding/pdftract/crates/pdftract-cli/tests/test_encryption_errors.rs
This file already contains:
- Module structure for different encryption scenarios
- Fixture validation infrastructure
- Exit code verification patterns
- Password handling tests (some marked as
[ignore]pending implementation)
Secondary location (for feature-flagged or general integration tests):
/home/coding/pdftract/tests/encryption_errors.rs
Acceptance Criteria Status
✅ Target test file path identified:
- Primary:
crates/pdftract-cli/tests/test_encryption_errors.rs - Secondary:
tests/encryption_errors.rs
✅ Module structure understood:
- CLI tests use
test_<feature>_<subcategory>.rsnaming - Modular structure with sub-modules for different scenarios
- Fixture-based testing with validation
✅ Path documented in verification note: This file documents all findings