30 KiB
Comprehensive Test Suite Analysis Report
Generated: 2024-12-19
Target Audience: Senior pytest engineer with full codebase understanding
Scope: Complete analysis of unit and integration test coverage
Executive Summary
This report provides a comprehensive analysis of the test suite for the Routstr codebase. The analysis evaluates:
- Test coverage completeness
- Outdated or obsolete tests
- Tests that don't provide meaningful value
- Missing test coverage for critical functionality
- Alignment between tests and current codebase implementation
Key Findings:
- Total Test Files: 7 unit test files, 18 integration test files
- Coverage Status: Moderate coverage with significant gaps in admin, NIP-91, and upstream provider logic
- Test Quality: Generally good, but several tests are outdated or test implementation details rather than behavior
- Critical Gaps: Admin endpoints, NIP-91 functionality, upstream provider implementations, and complex error scenarios
1. Unit Tests Analysis
1.1 test_algorithm.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Model prioritization algorithm logic
What it tests:
calculate_model_cost_score()- Cost calculation with various pricing scenariosget_provider_penalty()- Provider penalty logic (OpenRouter vs others)should_prefer_model()- Model selection logic with cost and alias matching
Assessment:
- ✅ Tests are up-to-date with current algorithm implementation
- ✅ Good coverage of edge cases (exact matches, cost comparisons, penalties)
- ✅ Tests are isolated and don't depend on external services
- ✅ Well-structured with clear test names
Recommendations:
- Consider adding tests for
create_model_mappings()function (currently only tested indirectly through integration tests) - Add tests for alias resolution edge cases (canonical_slug, alias_ids)
1.2 test_fee_consistency.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Model row payload conversion and fee handling
What it tests:
_model_to_row_payload()- Pricing storage without fee application- Fee application logic (fees applied per-provider when reading)
Assessment:
- ✅ Tests verify critical behavior: pricing stored as-is, fees applied on read
- ✅ Tests confirm original model objects aren't mutated
- ✅ Good documentation in docstring explaining the behavior
Recommendations:
- Add tests for fee application when reading from database (currently only tests storage)
- Test edge cases: None values, missing fields, invalid pricing data
1.3 test_image_tokens.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Image token estimation logic
What it tests:
_calculate_image_tokens()- Token calculation for low/high detail images_get_image_dimensions()- Image dimension extractionestimate_image_tokens_in_messages()- Token estimation from message arrays
Assessment:
- ✅ Comprehensive coverage of image token calculation
- ✅ Tests both low and high detail modes
- ✅ Tests multiple images, different formats, edge cases
- ✅ Tests async functionality properly
Recommendations:
- Add tests for very large images (beyond typical tiling scenarios)
- Test error handling for corrupted image data
- Test with different image formats (PNG, WebP, etc.)
1.4 test_payment_helpers.py ⚠️ PARTIALLY OUTDATED
Status: Needs review
Coverage: Payment helper functions
What it tests:
get_max_cost_for_model()- Maximum cost calculation with various scenarios
Issues Found:
- ❌ Tests mock
get_upstreams()which may not reflect current implementation - ❌ Tests use
settings.fixed_pricingwhich may have changed - ⚠️ Tests don't verify actual database interactions
- ⚠️ Missing tests for
calculate_discounted_max_cost()function - ⚠️ Missing tests for
check_token_balance()function - ⚠️ Missing tests for
estimate_tokens()function
Assessment:
- Tests are functional but incomplete
- Heavy mocking may hide integration issues
- Missing coverage for several helper functions
Recommendations:
- Add tests for
calculate_discounted_max_cost()(currently only tested in integration) - Add tests for
check_token_balance()(critical for payment validation) - Add tests for
estimate_tokens()(used for pre-flight cost estimation) - Review mocking strategy - consider using real database sessions for some tests
1.5 test_settings.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Settings service initialization and precedence
What it tests:
SettingsService.initialize()- Settings initialization from environment- Database precedence over environment variables
Assessment:
- ✅ Tests verify critical precedence logic (DB > ENV)
- ✅ Tests use in-memory database (good isolation)
- ✅ Tests verify persistence behavior
Recommendations:
- Add tests for settings update operations
- Test settings validation (invalid values, type checking)
- Test concurrent settings access
1.6 test_wallet.py ⚠️ NEEDS UPDATES
Status: Partially outdated
Coverage: Wallet operations
What it tests:
get_balance()- Balance retrievalrecieve_token()- Token redemptionsend_token()- Token creationcredit_balance()- Balance crediting
Issues Found:
- ❌ Tests mock
Wallet.with_db()which may not match current implementation - ⚠️ Tests don't verify actual Cashu mint interactions
- ⚠️ Missing tests for
swap_to_primary_mint()function - ⚠️ Missing tests for
send_to_lnurl()function - ⚠️ Missing tests for
periodic_payout()function - ⚠️ Missing tests for
fetch_all_balances()function
Assessment:
- Basic functionality is tested but with heavy mocking
- Missing coverage for several wallet functions
- Tests may not catch integration issues
Recommendations:
- Add unit tests for wallet helper functions that don't require full integration
- Consider integration tests for functions that require Cashu mint (already covered in integration tests)
- Review mocking strategy - ensure it matches actual implementation
2. Integration Tests Analysis
2.1 test_background_tasks.py ⚠️ NEEDS UPDATES
Status: Partially outdated
Coverage: Background task functionality
What it tests:
update_sats_pricing()- Pricing update task- Refund check task (expired keys)
- Periodic payout task (mostly skipped)
Issues Found:
- ❌ Many tests are skipped with reasons like "Timing-based test with complex mocking"
- ❌
test_executes_at_configured_intervals()is skipped - ❌
test_calculates_payouts_accurately()is skipped - ⚠️ Tests manually simulate background task logic instead of testing actual tasks
- ⚠️ Missing tests for
refresh_model_maps_periodically() - ⚠️ Missing tests for
cleanup_enabled_models_periodically() - ⚠️ Missing tests for
refresh_upstreams_models_periodically() - ⚠️ Missing tests for
providers_cache_refresher() - ⚠️ Missing tests for
announce_provider()(NIP-91)
Assessment:
- Tests verify logic but not actual background task execution
- Many critical background tasks are not tested
- Skipped tests indicate test design issues
Recommendations:
- HIGH PRIORITY: Add tests for model refresh background tasks
- HIGH PRIORITY: Add tests for NIP-91 provider announcement
- HIGH PRIORITY: Add tests for provider cache refresher
- Fix or remove skipped tests - they indicate design problems
- Consider using pytest fixtures for background task control instead of manual simulation
2.2 test_database_consistency.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Database transaction atomicity and consistency
What it tests:
- Transaction atomicity (rollback on failure)
- Concurrent operations
- Data integrity constraints
- Performance characteristics
Assessment:
- ✅ Excellent coverage of database consistency scenarios
- ✅ Tests concurrent operations properly
- ✅ Tests race condition prevention
- ✅ Good use of database snapshots
Recommendations:
- Add tests for reserved_balance edge cases (currently only partially tested)
- Test database migration scenarios
- Test connection pool exhaustion scenarios
2.3 test_error_handling_edge_cases.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Error handling and edge cases
What it tests:
- Network failure scenarios
- Invalid input handling
- Resource exhaustion
- Recovery scenarios
Assessment:
- ✅ Comprehensive error scenario coverage
- ✅ Tests various failure modes
- ✅ Good edge case coverage
Recommendations:
- Add tests for upstream provider-specific error mapping
- Test error handling in streaming responses
- Test error handling during partial refunds
2.4 test_example.py ✅ GOOD - Template/Example
Status: Current (example file)
Coverage: Test infrastructure demonstration
Assessment:
- ✅ Good example for writing new tests
- ✅ Demonstrates proper use of fixtures
- ✅ Shows full wallet flow
Recommendations:
- Keep as reference/documentation
- Consider moving to
tests/examples/directory
2.5 test_general_info_endpoints.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Public info endpoints
What it tests:
GET /v1/info- Root info endpointGET /v1/models- Models listing endpointGET /admin/- Admin redirect
Assessment:
- ✅ Good coverage of public endpoints
- ✅ Tests response structure and performance
- ✅ Tests concurrent access
Recommendations:
- Add tests for endpoint behavior when models are disabled
- Test endpoint behavior with no models configured
- Test endpoint caching behavior (if implemented)
2.6 test_performance_load.py ⚠️ MOSTLY SKIPPED
Status: Many tests skipped
Coverage: Performance and load testing
Issues Found:
- ❌
test_concurrent_users_100()- Skipped: "High load tests fail in CI environment" - ❌
test_sustained_load_1000_rpm()- Skipped - ❌
test_memory_leak_detection()- Skipped: "Memory leak tests fail due to missing model field" - ❌
test_performance_benchmarks()- Skipped: "Performance regression tests fail due to auth issues"
Assessment:
- Most performance tests are skipped
- Indicates CI environment issues or test design problems
- Baseline performance tests work but load tests don't
Recommendations:
- HIGH PRIORITY: Fix CI environment to support load tests OR move to separate performance test suite
- Review why tests are failing - may indicate real issues
- Consider using pytest markers to separate performance tests from regular tests
- Document performance test requirements (memory, CPU, network)
2.7 test_provider_management.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Provider discovery endpoint
What it tests:
GET /v1/providers/- Provider listing- Provider health checking
- Provider filtering and formatting
Assessment:
- ✅ Good coverage of provider discovery
- ✅ Tests various response formats
- ✅ Tests error scenarios (offline providers, relay failures)
Recommendations:
- Add tests for provider health check failures
- Test provider cache refresh behavior
- Test Tor proxy functionality for .onion providers
2.8 test_proxy_get_endpoints.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: GET proxy endpoint functionality
What it tests:
- GET request forwarding
- Header forwarding
- Response streaming
- Error handling
Assessment:
- ✅ Good coverage of GET proxy functionality
- ✅ Tests note that GET requests are not billed (important behavior)
- ✅ Tests various error scenarios
Recommendations:
- Verify GET request billing behavior is intentional (tests note it's not billed)
- Add tests for GET requests with query parameters
- Test GET request caching behavior (if implemented)
2.9 test_proxy_post_endpoints.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: POST proxy endpoint functionality
What it tests:
- POST request forwarding
- Streaming responses
- Billing calculations
- Error handling
Assessment:
- ✅ Comprehensive coverage of POST proxy functionality
- ✅ Tests streaming and non-streaming responses
- ✅ Tests billing calculations
- ✅ Tests various error scenarios
Recommendations:
- Add tests for streaming response error handling (partial failures)
- Test billing for very large responses
- Test concurrent POST requests with same API key
2.10 test_real_mint.py ⚠️ INCOMPLETE
Status: Example/test script
Coverage: Real Cashu mint integration
Issues Found:
- ⚠️ This is more of a script than a test
- ⚠️ Requires external Cashu mint service
- ⚠️ Not integrated into test suite
Recommendations:
- Consider converting to proper pytest test with proper fixtures
- Mark as integration test requiring external service
- Document requirements for running
2.11 test_reserved_balance_negative.py ⚠️ REVEALS BUG
Status: Current but reveals implementation issue
Coverage: Reserved balance edge cases
Issues Found:
- ❌ CRITICAL: Test
test_insufficient_reserved_balance_for_revert()shows thatrevert_pay_for_request()allows reserved_balance to go negative - ❌ Test expects negative reserved_balance, which indicates a bug in the implementation
- ⚠️ Test name suggests this is testing a known issue
Assessment:
- Test reveals a potential bug: reserved_balance can go negative
- This could lead to accounting inconsistencies
Recommendations:
- CRITICAL: Review
revert_pay_for_request()implementation - it should prevent negative reserved_balance - Fix the implementation to prevent negative values
- Update test to verify negative values are prevented
- Add database constraint to prevent negative reserved_balance if not already present
2.12 test_wallet_authentication.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: API key generation and authentication
What it tests:
- API key generation from Cashu tokens
- Authorization header validation
- Duplicate token handling
- Concurrent token submissions
Assessment:
- ✅ Comprehensive coverage of authentication flow
- ✅ Tests various edge cases
- ✅ Tests concurrent operations
Recommendations:
- Add tests for key expiry time validation
- Test authentication with expired keys
- Test authentication rate limiting (if implemented)
2.13 test_wallet_information.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Wallet info endpoints
What it tests:
GET /v1/wallet/- Wallet balance endpointGET /v1/wallet/info- Detailed wallet info- Data consistency
- Concurrent access
Assessment:
- ✅ Good coverage of wallet endpoints
- ✅ Tests data consistency
- ✅ Tests concurrent access
Recommendations:
- Add tests for wallet info with refund address
- Test wallet info with expired keys
- Verify response includes all expected fields (tests note some fields missing)
2.14 test_wallet_refund.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Wallet refund functionality
What it tests:
- Full balance refund
- Refund to Lightning address (skipped - not implemented)
- Refund error handling
- Concurrent refund requests
Assessment:
- ✅ Good coverage of refund functionality
- ⚠️ Lightning address refund test is skipped (feature not implemented)
- ✅ Tests various error scenarios
Recommendations:
- MEDIUM PRIORITY: Implement Lightning address refund functionality
- Add tests for partial refunds (if supported)
- Test refund with insufficient mint balance
- Test refund cache behavior
2.15 test_wallet_topup.py ✅ GOOD - Well Maintained
Status: Current and valuable
Coverage: Wallet top-up functionality
What it tests:
- Top-up with valid tokens
- Invalid token handling
- Concurrent top-ups
- Atomic balance updates
Assessment:
- ✅ Comprehensive coverage of top-up functionality
- ✅ Tests concurrent operations
- ✅ Tests error scenarios
Recommendations:
- Add tests for top-up with tokens from different mints
- Test top-up with very large amounts
- Test top-up rate limiting (if implemented)
3. Critical Missing Test Coverage
3.1 Admin Endpoints ❌ NO TESTS FOUND
Missing Coverage:
- Admin authentication (
admin_login,admin_logout) - Settings management (
update_settings,get_settings) - Model management (
admin_models,create_provider_model,update_provider_model,delete_provider_model) - Upstream provider management (
get_upstream_providers,create_upstream_provider,update_upstream_provider) - Balance management (
partial_balances,get_balances_api) - Withdrawal functionality (
withdraw) - Log viewing (
view_logs)
Impact: CRITICAL - Admin functionality is completely untested
Recommendations:
- HIGH PRIORITY: Create
test_admin_endpoints.pywith comprehensive admin API tests - Test admin authentication and session management
- Test CRUD operations for models and providers
- Test settings updates and validation
- Test admin authorization (ensure non-admins can't access)
3.2 NIP-91 Provider Announcement ❌ NO TESTS FOUND
Missing Coverage:
announce_provider()- Provider announcement to Nostr relayscreate_nip91_event()- Event creationpublish_to_relay()- Relay publishingquery_nip91_events()- Event queryingnsec_to_keypair()- Key conversion- Relay connection and error handling
Impact: HIGH - Provider discovery functionality is untested
Recommendations:
- HIGH PRIORITY: Create
test_nip91.pywith NIP-91 functionality tests - Test event creation and signing
- Test relay publishing (with mocks)
- Test event querying
- Test error handling (relay failures, invalid keys)
3.3 Upstream Provider Implementations ❌ NO DIRECT TESTS
Missing Coverage:
- Provider-specific model fetching (
fetch_models()for each provider) - Provider-specific request transformation (
transform_model_name(),prepare_request_body()) - Provider-specific error mapping (
map_upstream_error_response()) - X-Cashu authentication flow (
handle_x_cashu()) - Streaming response handling per provider
- Provider fee application
Impact: HIGH - Core proxy functionality has limited test coverage
Recommendations:
- HIGH PRIORITY: Create
test_upstream_providers.pywith provider-specific tests - Test each provider's
fetch_models()implementation - Test provider-specific transformations
- Test error mapping for each provider
- Test X-Cashu flow for each provider
- Test provider fee application
3.4 Cost Calculation Edge Cases ⚠️ PARTIAL COVERAGE
Missing Coverage:
calculate_cost()with missing usage datacalculate_cost()with invalid model pricingcalculate_cost()with very large token countscalculate_discounted_max_cost()edge cases- Cost calculation with provider fees
- Cost calculation for image tokens in responses
Impact: MEDIUM - Billing accuracy is critical
Recommendations:
- MEDIUM PRIORITY: Expand
test_payment_helpers.pywith cost calculation edge cases - Test cost calculation with various pricing scenarios
- Test discounted max cost calculation
- Test cost calculation with provider fees
- Test cost calculation for streaming responses
3.5 Model Management Background Tasks ❌ NO TESTS FOUND
Missing Coverage:
refresh_model_maps_periodically()- Model map refreshcleanup_enabled_models_periodically()- Model cleanuprefresh_upstreams_models_periodically()- Upstream model refresh- Model cache invalidation
- Model override application
Impact: MEDIUM - Model management is critical for functionality
Recommendations:
- MEDIUM PRIORITY: Add tests for model management background tasks
- Test model map refresh logic
- Test model cleanup criteria
- Test upstream model refresh
- Test model override application
3.6 Reserved Balance Logic ⚠️ INCOMPLETE COVERAGE
Missing Coverage:
- Reserved balance going negative (currently allowed - potential bug)
- Concurrent reserved balance operations
- Reserved balance cleanup on request completion
- Reserved balance handling during errors
- Reserved balance with very large costs
Impact: HIGH - Reserved balance bugs could cause accounting issues
Recommendations:
- HIGH PRIORITY: Fix reserved balance negative issue (see test_reserved_balance_negative.py)
- Add comprehensive reserved balance tests
- Test concurrent reserved balance operations
- Test reserved balance cleanup
- Add database constraints to prevent negative values
3.7 X-Cashu Authentication Flow ❌ NO TESTS FOUND
Missing Coverage:
handle_x_cashu()- X-Cashu request handlinghandle_x_cashu_streaming_response()- Streaming X-Cashuhandle_x_cashu_non_streaming_response()- Non-streaming X-Cashu- X-Cashu cost calculation
- X-Cashu refund handling
Impact: MEDIUM - Alternative authentication method is untested
Recommendations:
- MEDIUM PRIORITY: Add tests for X-Cashu authentication flow
- Test X-Cashu request handling
- Test X-Cashu streaming responses
- Test X-Cashu cost calculation
- Test X-Cashu error handling
3.8 Error Mapping and Transformation ❌ NO TESTS FOUND
Missing Coverage:
map_upstream_error_response()- Upstream error mapping- Provider-specific error transformation
- Error response formatting
- Error code mapping
Impact: MEDIUM - Error handling is important for user experience
Recommendations:
- MEDIUM PRIORITY: Add tests for error mapping
- Test error mapping for each provider
- Test error response formatting
- Test error code translation
- Test error message extraction
4. Outdated or Obsolete Tests
4.1 Tests Referencing Removed/Changed Features
None identified - Tests appear to be generally up-to-date with current codebase.
4.2 Tests with Incorrect Assumptions
test_proxy_get_endpoints.py- Tests assume GET requests are not billed. Verify this is intentional behavior.test_reserved_balance_negative.py- Test expects negative reserved_balance, which may indicate a bug.
4.3 Tests That Don't Test Useful Behavior
test_example.py- This is an example file, not a real test. Consider moving to examples directory.test_real_mint.py- More of a script than a test. Needs proper test structure.
5. Tests That Need Refactoring
5.1 Heavy Mocking That May Hide Issues
Files:
test_payment_helpers.py- Mocks database and upstream providerstest_wallet.py- Mocks Wallet class entirely
Recommendations:
- Consider using real database sessions for some tests
- Use integration tests for complex interactions
- Reduce mocking to only external services
5.2 Skipped Tests That Should Be Fixed
Files:
test_background_tasks.py- Multiple skipped teststest_performance_load.py- Most tests skipped
Recommendations:
- Fix or remove skipped tests
- Move performance tests to separate suite if CI can't handle them
- Document requirements for running performance tests
5.3 Tests That Manually Simulate Background Tasks
Files:
test_background_tasks.py- Tests manually simulate task logic instead of testing actual tasks
Recommendations:
- Use proper background task fixtures
- Test actual task execution with controlled timing
- Use pytest fixtures for task lifecycle management
6. Test Infrastructure Assessment
6.1 Fixtures and Utilities ✅ GOOD
Status: Well-designed test infrastructure
Strengths:
- Good use of pytest fixtures
conftest.pyprovides comprehensive test setupTestmintWalletclass provides good abstraction- Database snapshot utility is useful
- Performance validator is well-designed
Recommendations:
- Consider adding fixtures for background task control
- Add fixtures for upstream provider mocking
- Add fixtures for admin authentication
6.2 Test Organization ✅ GOOD
Status: Well-organized test structure
Strengths:
- Clear separation of unit and integration tests
- Good use of test classes for grouping
- Descriptive test names
Recommendations:
- Consider adding
tests/unit/upstream/for upstream provider tests - Consider adding
tests/integration/admin/for admin tests - Consider adding
tests/integration/nip91/for NIP-91 tests
7. Priority Recommendations
7.1 Critical (Fix Immediately)
- Fix reserved_balance negative issue -
revert_pay_for_request()allows negative values - Add admin endpoint tests - Critical functionality is completely untested
- Add NIP-91 tests - Provider discovery is untested
- Add upstream provider tests - Core proxy functionality needs better coverage
7.2 High Priority (Fix Soon)
- Add background task tests - Model refresh, cleanup, provider cache refresh
- Fix skipped tests - Remove or fix tests that are skipped
- Add X-Cashu authentication tests - Alternative auth method is untested
- Add reserved balance comprehensive tests - After fixing negative issue
7.3 Medium Priority (Fix When Possible)
- Expand cost calculation tests - Edge cases and provider fees
- Add error mapping tests - Provider-specific error handling
- Add model management tests - Model override and cleanup logic
- Improve test mocking strategy - Reduce mocking, use real components where possible
7.4 Low Priority (Nice to Have)
- Add performance test suite - Separate from regular tests
- Add example tests directory - Move example tests
- Add test documentation - Document test requirements and setup
- Add test coverage reporting - Track coverage metrics
8. Test Coverage Summary
8.1 Well-Tested Areas ✅
- Wallet operations (topup, refund, info)
- Proxy GET/POST endpoints
- Authentication and API key management
- Database consistency and transactions
- Error handling and edge cases
- Provider discovery endpoint
- Algorithm logic (model selection)
- Image token calculation
8.2 Partially Tested Areas ⚠️
- Payment helpers (some functions missing)
- Background tasks (logic tested, execution not)
- Cost calculation (basic coverage, edge cases missing)
- Reserved balance (basic coverage, edge cases missing)
8.3 Untested Areas ❌
- Admin endpoints (all functionality)
- NIP-91 provider announcement
- Upstream provider implementations
- X-Cashu authentication flow
- Model management background tasks
- Error mapping and transformation
- Provider fee application logic
9. Conclusion
The test suite provides moderate coverage of the codebase with good quality tests in covered areas. However, there are significant gaps in critical functionality:
- Admin functionality is completely untested - This is a critical gap
- NIP-91 functionality is untested - Important for provider discovery
- Upstream provider logic has limited coverage - Core proxy functionality
- Background tasks are partially tested - Logic tested but not execution
- Reserved balance has a potential bug - Negative values allowed
Overall Assessment:
- Test Quality: Good (7/10) - Tests are well-written but some need updates
- Test Coverage: Moderate (6/10) - Good coverage in some areas, missing in others
- Test Maintenance: Good (7/10) - Most tests are current, some need updates
- Critical Gaps: High (4/10) - Several critical areas are untested
Recommended Actions:
- Immediately address critical gaps (admin, NIP-91, reserved balance bug)
- Add missing test coverage for high-priority areas
- Fix or remove skipped tests
- Improve test infrastructure for background tasks
- Consider test coverage metrics and reporting
Appendix A: Test File Inventory
Unit Tests (7 files)
test_algorithm.py- ✅ Goodtest_fee_consistency.py- ✅ Goodtest_image_tokens.py- ✅ Goodtest_payment_helpers.py- ⚠️ Needs updatestest_settings.py- ✅ Goodtest_wallet.py- ⚠️ Needs updates
Integration Tests (18 files)
test_background_tasks.py- ⚠️ Many skippedtest_database_consistency.py- ✅ Goodtest_error_handling_edge_cases.py- ✅ Goodtest_example.py- ✅ Example filetest_general_info_endpoints.py- ✅ Goodtest_performance_load.py- ❌ Mostly skippedtest_provider_management.py- ✅ Goodtest_proxy_get_endpoints.py- ✅ Goodtest_proxy_post_endpoints.py- ✅ Goodtest_real_mint.py- ⚠️ Script, not testtest_reserved_balance_negative.py- ⚠️ Reveals bugtest_wallet_authentication.py- ✅ Goodtest_wallet_information.py- ✅ Goodtest_wallet_refund.py- ✅ Goodtest_wallet_topup.py- ✅ Good
Appendix B: Codebase Functions Without Tests
Critical Functions (No Tests)
routstr.core.admin.*- All admin functionsroutstr.nip91.*- All NIP-91 functionsroutstr.upstream.base.BaseUpstreamProvider.handle_x_cashu()- X-Cashu handlingroutstr.upstream.base.BaseUpstreamProvider.map_upstream_error_response()- Error mappingroutstr.proxy.refresh_model_maps_periodically()- Model refresh taskroutstr.payment.models.cleanup_enabled_models_periodically()- Model cleanup taskroutstr.upstream.helpers.refresh_upstreams_models_periodically()- Upstream refresh taskroutstr.discovery.providers_cache_refresher()- Provider cache refresh
Important Functions (Limited Tests)
routstr.payment.helpers.calculate_discounted_max_cost()- Only tested in integrationroutstr.payment.helpers.check_token_balance()- Not directly testedroutstr.payment.helpers.estimate_tokens()- Not directly testedroutstr.auth.adjust_payment_for_tokens()- Only tested indirectlyroutstr.wallet.send_to_lnurl()- Not directly testedroutstr.wallet.periodic_payout()- Mostly skipped tests
End of Report