Files
hms-licht-ton/backend/test_report.md
T

90 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Test Report T04: Rentman Integration + Admin Auth
**Datum:** 2026-07-09
**Task:** T04 (Rentman Integration: Import + Request + Admin Auth)
**Projekt:** hms-licht-ton
## Test Commands Run
```bash
cd backend && python -m pytest tests/ -v --cov=app --cov-report=term-missing
```
## Results
- **Total tests:** 34
- **Passed:** 34
- **Failed:** 0
- **Coverage:** 71% overall
## Test Breakdown
### test_admin_auth.py (9 tests) T04
- test_password_hash_and_verify ✅
- test_create_and_verify_token ✅
- test_verify_invalid_token ✅
- test_verify_expired_token ✅
- test_login_success (valid creds → 200 + token) ✅
- test_login_failure_wrong_password (→ 401) ✅
- test_login_failure_unknown_user (→ 401) ✅
- test_me_without_token (→ 401) ✅
- test_me_with_valid_token (→ 200 + username) ✅
### test_admin_router.py (6 tests) T04
- test_sync_without_token (→ 401) ✅
- test_sync_status_without_token (→ 401) ✅
- test_sync_log_without_token (→ 401) ✅
- test_sync_with_valid_token (→ 200 + sync_id) ✅
- test_sync_status_with_valid_token (→ 200 + status) ✅
- test_sync_log_with_valid_token (→ 200 + paginated) ✅
### test_rentman_import.py (5 tests) T04
- test_transform_equipment (field mapping) ✅
- test_paginated_import (250 items, 3 pages, upsert verified) ✅
- test_sync_upsert_existing (update not duplicate) ✅
- test_sync_failure_logs_error (error logged in sync_log) ✅
- test_get_all_equipment_paginates (iterates until data empty) ✅
### test_rentman_request.py (5 tests) T04
- test_build_project_request_payload (full field mapping) ✅
- test_build_project_request_payload_no_company (fallback to contact_name) ✅
- test_build_equipment_payload (equipment mapping with linked_equipment) ✅
- test_projectrequest_success (mock POST returns ID) ✅
- test_equipment_retry (3 retries with exponential backoff) ✅
### test_equipment_router.py (8 tests) T03
- test_list_equipment (paginated response) ✅
- test_search_equipment (filter by name) ✅
- test_filter_category (filter by category) ✅
- test_sort_name_asc ✅
- test_sort_name_desc ✅
- test_categories (distinct categories) ✅
- test_equipment_detail (full detail) ✅
- test_equipment_not_found (404) ✅
### test_health.py (1 test) T03
- test_health_endpoint (status, db, redis) ✅
## Coverage by Module
| Module | Coverage |
|--------|---------|
| app/auth.py | 86% |
| app/routers/admin.py | 84% |
| app/services/sync_service.py | 82% |
| app/services/rentman_service.py | 75% |
| app/routers/equipment.py | 66% |
| app/main.py | 64% |
| app/routers/health.py | 60% |
| app/models/* | 100% |
| app/schemas/* | 76-100% |
| app/config.py | 100% |
## Notes
- Rentman API fully mocked in tests (no live calls)
- Redis cache fully mocked in tests
- SQLite in-memory database used for tests
- APScheduler startup tested via lifespan context
- Rate limiting tested via mock counter