Files
BanGUI/Docs/Tasks.md
Lukas 7ec80fdeec refactor(logging): replace structlog with stdlib logging compat layer
- Remove structlog dependency from backend/pyproject.toml
- Add app.utils.logging_compat shim for keyword-arg logging API
- Add app.utils.json_formatter for JSON log output with extra fields
- Update all backend modules to use logging_compat.get_logger()
- Update docstrings in log_sanitizer.py and json_formatter.py
- Update test comment in test_async_utils.py
- Record 406 failing tests in Docs/Tasks.md for tracking
2026-05-10 13:37:54 +02:00

2441 lines
62 KiB
Markdown

# Failed Tests
Total unique failed/errored tests: 406
## 1. TestGetActiveBans.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 2. TestGetActiveBans.test_empty_when_no_bans
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 3. TestGetActiveBans.test_response_shape
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 4. TestBanIp.test_201_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 5. TestBanIp.test_400_for_invalid_ip
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 6. TestBanIp.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 7. TestBanIp.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 8. TestUnbanIp.test_200_unban_from_all
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 9. TestUnbanIp.test_200_unban_from_specific_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 10. TestUnbanIp.test_400_for_invalid_ip
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 11. TestUnbanIp.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 12. TestUnbanAll.test_200_clears_all_bans
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 13. TestUnbanAll.test_200_with_zero_count
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 14. TestUnbanAll.test_502_when_fail2ban_unreachable
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 15. TestUnbanAll.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 16. TestListBlocklists.test_authenticated_returns_200
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 17. TestListBlocklists.test_response_contains_sources_key
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 18. TestCreateBlocklist.test_create_returns_201
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 19. TestCreateBlocklist.test_create_source_id_in_response
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 20. TestUpdateBlocklist.test_update_returns_200
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 21. TestUpdateBlocklist.test_update_returns_404_for_missing
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 22. TestDeleteBlocklist.test_delete_returns_204
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 23. TestDeleteBlocklist.test_delete_returns_404_for_missing
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 24. TestPreviewBlocklist.test_preview_returns_200
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 25. TestPreviewBlocklist.test_preview_returns_404_for_missing
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 26. TestPreviewBlocklist.test_preview_returns_502_on_download_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 27. TestPreviewBlocklist.test_preview_response_shape
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 28. TestRunImport.test_import_returns_200
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 29. TestRunImport.test_import_response_shape
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 30. TestGetSchedule.test_schedule_returns_200
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 31. TestGetSchedule.test_schedule_response_has_config
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 32. TestGetSchedule.test_schedule_response_includes_last_run_errors
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 33. TestUpdateSchedule.test_update_schedule_returns_200
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 34. TestImportLog.test_log_returns_200
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 35. TestImportLog.test_log_response_shape
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 36. TestImportLog.test_log_empty_when_no_runs
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 37. TestGetJailConfigs.test_200_returns_jail_list
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 38. TestGetJailConfigs.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 39. TestGetJailConfigs.test_502_on_connection_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 40. TestGetJailConfig.test_200_returns_jail_config
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 41. TestGetJailConfig.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 42. TestGetJailConfig.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 43. TestUpdateJailConfig.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 44. TestUpdateJailConfig.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 45. TestUpdateJailConfig.test_422_on_invalid_regex
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 46. TestUpdateJailConfig.test_400_on_config_operation_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 47. TestUpdateJailConfig.test_204_with_dns_mode
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 48. TestUpdateJailConfig.test_204_with_prefregex
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 49. TestUpdateJailConfig.test_204_with_date_pattern
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 50. TestGetGlobalConfig.test_200_returns_global_config
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 51. TestGetGlobalConfig.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 52. TestUpdateGlobalConfig.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 53. TestUpdateGlobalConfig.test_400_on_operation_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 54. TestReloadFail2ban.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 55. TestReloadFail2ban.test_502_when_fail2ban_unreachable
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 56. TestReloadFail2ban.test_409_when_reload_operation_fails
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 57. TestRestartFail2ban.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 58. TestRestartFail2ban.test_503_when_fail2ban_does_not_come_back
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 59. TestRestartFail2ban.test_409_when_stop_command_fails
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 60. TestRestartFail2ban.test_502_when_fail2ban_unreachable
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 61. TestRestartFail2ban.test_service_restart_daemon_called
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 62. TestRegexTest.test_200_matched
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 63. TestRegexTest.test_200_not_matched
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 64. TestRegexTest.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 65. TestAddLogPath.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 66. TestAddLogPath.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 67. TestPreviewLog.test_200_returns_preview
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 68. TestGetMapColorThresholds.test_200_returns_thresholds
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 69. TestUpdateMapColorThresholds.test_200_updates_thresholds
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 70. TestUpdateMapColorThresholds.test_400_for_invalid_order
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 71. TestUpdateMapColorThresholds.test_400_for_non_positive_values
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 72. TestGetInactiveJails.test_200_returns_inactive_list
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 73. TestGetInactiveJails.test_200_empty_list
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 74. TestGetInactiveJails.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 75. TestActivateJail.test_200_activates_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 76. TestActivateJail.test_200_with_overrides
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 77. TestActivateJail.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 78. TestActivateJail.test_409_when_already_active
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 79. TestActivateJail.test_failed_activation_does_not_set_last_activation
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 80. TestActivateJail.test_400_for_invalid_jail_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 81. TestActivateJail.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 82. TestActivateJail.test_200_with_active_false_on_missing_logpath
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 83. TestDeactivateJail.test_200_deactivates_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 84. TestDeactivateJail.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 85. TestDeactivateJail.test_409_when_already_inactive
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 86. TestDeactivateJail.test_400_for_invalid_jail_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 87. TestDeactivateJail.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 88. TestDeactivateJail.test_deactivate_triggers_health_probe
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 89. TestListFilters.test_200_returns_filter_list
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 90. TestListFilters.test_200_empty_filter_list
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 91. TestListFilters.test_active_filters_sorted_before_inactive
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 92. TestListFilters.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 93. TestGetFilter.test_200_returns_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 94. TestGetFilter.test_404_for_unknown_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 95. TestGetFilter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 96. TestUpdateFilter.test_200_returns_updated_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 97. TestUpdateFilter.test_404_for_unknown_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 98. TestUpdateFilter.test_422_for_invalid_regex
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 99. TestUpdateFilter.test_400_for_invalid_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 100. TestUpdateFilter.test_reload_query_param_passed
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 101. TestUpdateFilter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 102. TestCreateFilter.test_201_creates_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 103. TestCreateFilter.test_409_when_already_exists
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 104. TestCreateFilter.test_422_for_invalid_regex
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 105. TestCreateFilter.test_400_for_invalid_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 106. TestCreateFilter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 107. TestDeleteFilter.test_204_deletes_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 108. TestDeleteFilter.test_404_for_unknown_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 109. TestDeleteFilter.test_409_for_readonly_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 110. TestDeleteFilter.test_400_for_invalid_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 111. TestDeleteFilter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 112. TestAssignFilterToJail.test_204_assigns_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 113. TestAssignFilterToJail.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 114. TestAssignFilterToJail.test_404_for_unknown_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 115. TestAssignFilterToJail.test_400_for_invalid_jail_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 116. TestAssignFilterToJail.test_400_for_invalid_filter_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 117. TestAssignFilterToJail.test_reload_query_param_passed
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 118. TestAssignFilterToJail.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 119. TestListActionsRouter.test_200_returns_action_list
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 120. TestListActionsRouter.test_active_sorted_first
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 121. TestListActionsRouter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 122. TestGetActionRouter.test_200_returns_action
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 123. TestGetActionRouter.test_404_when_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 124. TestGetActionRouter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 125. TestUpdateActionRouter.test_200_returns_updated_action
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 126. TestUpdateActionRouter.test_404_when_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 127. TestUpdateActionRouter.test_400_for_bad_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 128. TestUpdateActionRouter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 129. TestCreateActionRouter.test_201_returns_created_action
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 130. TestCreateActionRouter.test_409_when_already_exists
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 131. TestCreateActionRouter.test_400_for_bad_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 132. TestCreateActionRouter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 133. TestDeleteActionRouter.test_204_on_delete
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 134. TestDeleteActionRouter.test_404_when_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 135. TestDeleteActionRouter.test_409_when_readonly
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 136. TestDeleteActionRouter.test_400_for_bad_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 137. TestDeleteActionRouter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 138. TestAssignActionToJailRouter.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 139. TestAssignActionToJailRouter.test_404_when_jail_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 140. TestAssignActionToJailRouter.test_404_when_action_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 141. TestAssignActionToJailRouter.test_400_for_bad_jail_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 142. TestAssignActionToJailRouter.test_400_for_bad_action_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 143. TestAssignActionToJailRouter.test_reload_param_passed
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 144. TestAssignActionToJailRouter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 145. TestRemoveActionFromJailRouter.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 146. TestRemoveActionFromJailRouter.test_404_when_jail_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 147. TestRemoveActionFromJailRouter.test_400_for_bad_jail_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 148. TestRemoveActionFromJailRouter.test_400_for_bad_action_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 149. TestRemoveActionFromJailRouter.test_reload_param_passed
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 150. TestRemoveActionFromJailRouter.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 151. TestGetFail2BanLog.test_200_returns_log_response
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 152. TestGetFail2BanLog.test_200_passes_lines_query_param
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 153. TestGetFail2BanLog.test_200_passes_filter_query_param
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 154. TestGetFail2BanLog.test_400_when_non_file_target
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 155. TestGetFail2BanLog.test_400_when_path_traversal_detected
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 156. TestGetFail2BanLog.test_502_when_fail2ban_unreachable
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 157. TestGetFail2BanLog.test_422_for_lines_exceeding_max
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 158. TestGetFail2BanLog.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 159. TestGetServiceStatus.test_200_when_online
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 160. TestGetServiceStatus.test_200_when_offline
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 161. TestGetServiceStatus.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 162. TestValidateJailEndpoint.test_200_valid_config
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 163. TestValidateJailEndpoint.test_200_invalid_config
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 164. TestValidateJailEndpoint.test_400_for_invalid_jail_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 165. TestValidateJailEndpoint.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 166. TestPendingRecovery.test_returns_null_when_no_pending_recovery
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 167. TestPendingRecovery.test_returns_record_when_set
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 168. TestPendingRecovery.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 169. TestRollbackEndpoint.test_200_success_clears_pending_recovery
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 170. TestRollbackEndpoint.test_200_fail_preserves_pending_recovery
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 171. TestRollbackEndpoint.test_400_for_invalid_jail_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 172. TestRollbackEndpoint.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 173. TestDashboardStatus.test_returns_200_when_authenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 174. TestDashboardStatus.test_response_shape_when_online
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 175. TestDashboardStatus.test_cached_values_returned_when_online
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 176. TestDashboardStatus.test_offline_status_returned_correctly
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 177. TestDashboardBans.test_returns_200_when_authenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 178. TestDashboardBans.test_response_contains_items_and_total
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 179. TestDashboardBans.test_default_range_is_24h
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 180. TestDashboardBans.test_accepts_time_range_param
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 181. TestDashboardBans.test_accepts_source_param
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 182. TestDashboardBans.test_empty_ban_list_returns_zero_total
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 183. TestDashboardBans.test_item_shape_is_correct
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 184. TestBansByCountry.test_returns_200_when_authenticated[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 185. TestBansByCountry.test_response_shape[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 186. TestBansByCountry.test_accepts_time_range_param[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 187. TestBansByCountry.test_invalid_source_returns_422[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 188. TestBansByCountry.test_empty_window_returns_empty_response[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 189. TestBanTrend.test_returns_200_when_authenticated[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 190. TestBanTrend.test_response_shape[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 191. TestBanTrend.test_each_bucket_has_timestamp_and_count[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 192. TestBanTrend.test_default_range_is_24h[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 193. TestBanTrend.test_accepts_range_param[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 194. TestBanTrend.test_origin_param_forwarded[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 195. TestBanTrend.test_no_origin_defaults_to_none[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 196. TestBanTrend.test_invalid_range_returns_422[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 197. TestBanTrend.test_invalid_source_returns_422[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 198. TestBanTrend.test_empty_buckets_response[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 199. TestBansByJail.test_returns_200_when_authenticated[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 200. TestBansByJail.test_response_shape[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 201. TestBansByJail.test_each_jail_has_name_and_count[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 202. TestBansByJail.test_default_range_is_24h[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 203. TestBansByJail.test_accepts_range_param[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 204. TestBansByJail.test_origin_param_forwarded[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 205. TestBansByJail.test_no_origin_defaults_to_none[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 206. TestBansByJail.test_invalid_range_returns_422[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 207. TestBansByJail.test_invalid_source_returns_422[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 208. TestBansByJail.test_empty_jails_response[asyncio]
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 209. TestDashboardBansOriginField.test_origin_present_in_ban_list_items
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 210. TestDashboardBansOriginField.test_selfblock_origin_serialised_correctly
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 211. TestDashboardBansOriginField.test_origin_present_in_bans_by_country
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 212. TestDashboardBansOriginField.test_bans_by_country_source_param_forwarded
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 213. TestDashboardBansOriginField.test_bans_by_country_country_code_forwarded
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 214. TestDashboardBansOriginField.test_blocklist_origin_serialised_correctly
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 215. TestOriginFilterParam.test_bans_origin_blocklist_forwarded_to_service
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 216. TestOriginFilterParam.test_bans_origin_selfblock_forwarded_to_service
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 217. TestOriginFilterParam.test_bans_no_origin_param_defaults_to_none
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 218. TestOriginFilterParam.test_bans_invalid_origin_returns_422
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 219. TestOriginFilterParam.test_by_country_origin_blocklist_forwarded
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 220. TestOriginFilterParam.test_by_country_no_origin_defaults_to_none
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 221. TestListJailConfigFiles.test_200_returns_file_list
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 222. TestListJailConfigFiles.test_503_on_config_dir_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 223. TestListJailConfigFiles.test_401_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 224. TestGetJailConfigFile.test_200_returns_content
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 225. TestGetJailConfigFile.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 226. TestGetJailConfigFile.test_400_invalid_filename
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 227. TestSetJailConfigEnabled.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 228. TestSetJailConfigEnabled.test_404_file_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 229. TestGetFilterFileRaw.test_200_returns_content
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 230. TestGetFilterFileRaw.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 231. TestUpdateFilterFile.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 232. TestUpdateFilterFile.test_400_write_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 233. TestCreateFilterFile.test_201_creates_file
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 234. TestCreateFilterFile.test_409_conflict
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 235. TestCreateFilterFile.test_400_invalid_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 236. TestListActionFiles.test_200_returns_files
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 237. TestCreateActionFile.test_201_creates_file
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 238. TestGetActionFileRaw.test_200_returns_content
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 239. TestGetActionFileRaw.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 240. TestGetActionFileRaw.test_503_on_config_dir_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 241. TestUpdateActionFileRaw.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 242. TestUpdateActionFileRaw.test_400_write_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 243. TestUpdateActionFileRaw.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 244. TestUpdateActionFileRaw.test_400_invalid_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 245. TestCreateJailConfigFile.test_201_creates_file
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 246. TestCreateJailConfigFile.test_409_conflict
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 247. TestCreateJailConfigFile.test_400_invalid_name
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 248. TestCreateJailConfigFile.test_503_on_config_dir_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 249. TestGetParsedFilter.test_200_returns_parsed_config
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 250. TestGetParsedFilter.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 251. TestGetParsedFilter.test_503_on_config_dir_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 252. TestUpdateParsedFilter.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 253. TestUpdateParsedFilter.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 254. TestUpdateParsedFilter.test_400_write_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 255. TestGetParsedAction.test_200_returns_parsed_config
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 256. TestGetParsedAction.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 257. TestGetParsedAction.test_503_on_config_dir_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 258. TestUpdateParsedAction.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 259. TestUpdateParsedAction.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 260. TestUpdateParsedAction.test_400_write_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 261. TestGetParsedJailFile.test_200_returns_parsed_config
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 262. TestGetParsedJailFile.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 263. TestGetParsedJailFile.test_503_on_config_dir_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 264. TestUpdateParsedJailFile.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 265. TestUpdateParsedJailFile.test_404_not_found
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 266. TestUpdateParsedJailFile.test_400_write_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 267. TestGeoLookup.test_200_with_geo_info
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 268. TestGeoLookup.test_200_when_not_banned
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 269. TestGeoLookup.test_200_with_no_geo
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 270. TestGeoLookup.test_400_for_invalid_ip
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 271. TestGeoLookup.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 272. TestGeoLookup.test_ipv6_address
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 273. TestReResolve.test_returns_200_with_counts
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 274. TestReResolve.test_empty_when_no_unresolved_ips
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 275. TestReResolve.test_re_resolves_null_ips
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 276. TestReResolve.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 277. TestGeoStats.test_returns_200_with_stats
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 278. TestGeoStats.test_stats_empty_cache
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 279. TestGeoStats.test_stats_counts_unresolved
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 280. TestGeoStats.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 281. TestHistoryList.test_returns_200_when_authenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 282. TestHistoryList.test_response_shape
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 283. TestHistoryList.test_forwards_jail_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 284. TestHistoryList.test_forwards_ip_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 285. TestHistoryList.test_forwards_time_range
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 286. TestHistoryList.test_forwards_origin_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 287. TestHistoryList.test_forwards_source_filter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 288. TestHistoryList.test_archive_route_forces_source_archive
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 289. TestHistoryList.test_empty_result
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 290. TestIpHistory.test_returns_200_when_authenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 291. TestIpHistory.test_returns_404_for_unknown_ip
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 292. TestIpHistory.test_response_shape
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 293. TestIpHistory.test_aggregation_sums_failures
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 294. TestGetJails.test_200_when_authenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 295. TestGetJails.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 296. TestGetJails.test_response_shape
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 297. TestGetJailDetail.test_200_for_existing_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 298. TestGetJailDetail.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 299. TestStartJail.test_200_starts_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 300. TestStartJail.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 301. TestStartJail.test_409_on_operation_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 302. TestStopJail.test_200_stops_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 303. TestStopJail.test_200_for_already_stopped_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 304. TestToggleIdle.test_200_idle_on
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 305. TestToggleIdle.test_200_idle_off
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 306. TestReloadJail.test_200_reloads_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 307. TestReloadAll.test_200_reloads_all
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 308. TestIgnoreIpEndpoints.test_get_ignore_list
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 309. TestIgnoreIpEndpoints.test_add_ignore_ip_returns_201
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 310. TestIgnoreIpEndpoints.test_add_invalid_ip_returns_400
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 311. TestIgnoreIpEndpoints.test_delete_ignore_ip
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 312. TestIgnoreIpEndpoints.test_get_ignore_list_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 313. TestIgnoreIpEndpoints.test_get_ignore_list_502_on_connection_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 314. TestIgnoreIpEndpoints.test_add_ignore_ip_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 315. TestIgnoreIpEndpoints.test_add_ignore_ip_409_on_operation_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 316. TestIgnoreIpEndpoints.test_add_ignore_ip_502_on_connection_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 317. TestIgnoreIpEndpoints.test_delete_ignore_ip_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 318. TestIgnoreIpEndpoints.test_delete_ignore_ip_409_on_operation_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 319. TestIgnoreIpEndpoints.test_delete_ignore_ip_502_on_connection_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 320. TestToggleIgnoreSelf.test_200_enables_ignore_self
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 321. TestToggleIgnoreSelf.test_200_disables_ignore_self
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 322. TestToggleIgnoreSelf.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 323. TestToggleIgnoreSelf.test_409_on_operation_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 324. TestToggleIgnoreSelf.test_502_on_connection_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 325. TestFail2BanConnectionErrors.test_get_jails_502
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 326. TestFail2BanConnectionErrors.test_get_jail_502
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 327. TestFail2BanConnectionErrors.test_reload_all_409
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 328. TestFail2BanConnectionErrors.test_reload_all_502
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 329. TestFail2BanConnectionErrors.test_start_jail_502
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 330. TestFail2BanConnectionErrors.test_stop_jail_409
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 331. TestFail2BanConnectionErrors.test_stop_jail_502
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 332. TestFail2BanConnectionErrors.test_toggle_idle_404
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 333. TestFail2BanConnectionErrors.test_toggle_idle_409
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 334. TestFail2BanConnectionErrors.test_toggle_idle_502
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 335. TestFail2BanConnectionErrors.test_reload_jail_404
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 336. TestFail2BanConnectionErrors.test_reload_jail_409
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 337. TestFail2BanConnectionErrors.test_reload_jail_502
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 338. TestGetJailBannedIps.test_200_returns_paginated_bans
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 339. TestGetJailBannedIps.test_200_with_search_parameter
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 340. TestGetJailBannedIps.test_200_with_page_and_page_size
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 341. TestGetJailBannedIps.test_400_when_page_is_zero
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 342. TestGetJailBannedIps.test_400_when_page_size_exceeds_max
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 343. TestGetJailBannedIps.test_400_when_page_size_is_zero
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 344. TestGetJailBannedIps.test_404_for_unknown_jail
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 345. TestGetJailBannedIps.test_502_when_fail2ban_unreachable
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 346. TestGetJailBannedIps.test_response_items_have_expected_fields
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 347. TestGetJailBannedIps.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 1 validation error for Settings
---
## 348. TestGetServerSettings.test_200_returns_settings
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 349. TestGetServerSettings.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 350. TestGetServerSettings.test_502_on_connection_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 351. TestUpdateServerSettings.test_204_on_success
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 352. TestUpdateServerSettings.test_400_on_operation_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 353. TestUpdateServerSettings.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 354. TestUpdateServerSettings.test_502_on_connection_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 355. TestFlushLogs.test_200_returns_message
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 356. TestFlushLogs.test_400_on_operation_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 357. TestFlushLogs.test_401_when_unauthenticated
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 358. TestFlushLogs.test_502_on_connection_error
**Exception:** pydantic_core._pydantic_core.ValidationError: 2 validation errors for Settings
---
## 359. TestGetJailConfig.test_returns_jail_config_response
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 360. TestGetJailConfig.test_raises_jail_not_found
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 361. TestGetJailConfig.test_actions_parsed_correctly
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 362. TestGetJailConfig.test_empty_log_paths_fallback
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 363. TestGetJailConfig.test_date_pattern_none
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 364. TestGetJailConfig.test_use_dns_populated
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 365. TestGetJailConfig.test_use_dns_default_when_missing
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 366. TestGetJailConfig.test_prefregex_populated
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 367. TestGetJailConfig.test_prefregex_empty_when_missing
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 368. TestListJailConfigs.test_returns_list_response
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 369. TestListJailConfigs.test_empty_when_no_jails
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 370. TestListJailConfigs.test_multiple_jails
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 371. TestUpdateJailConfig.test_updates_numeric_fields
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 372. TestUpdateJailConfig.test_ignores_backend_field
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 373. TestUpdateJailConfig.test_raises_validation_error_on_bad_regex
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 374. TestUpdateJailConfig.test_skips_none_fields
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 375. TestUpdateJailConfig.test_replaces_fail_regex
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 376. TestUpdateJailConfig.test_sets_dns_mode
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 377. TestUpdateJailConfig.test_sets_prefregex
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 378. TestUpdateJailConfig.test_skips_none_prefregex
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 379. TestUpdateJailConfig.test_raises_validation_error_on_invalid_prefregex
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 380. TestGetGlobalConfig.test_returns_global_config
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 381. TestGetGlobalConfig.test_defaults_used_on_error
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 382. TestUpdateGlobalConfig.test_sends_set_commands
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 383. TestUpdateGlobalConfig.test_log_level_uppercased
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 384. TestUpdateGlobalConfig.test_invalid_log_target_raises_config_validation_error
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 385. TestUpdateGlobalConfig.test_valid_special_log_target
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 386. TestTestRegex.test_matching_pattern
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 387. TestTestRegex.test_non_matching_pattern
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 388. TestTestRegex.test_invalid_pattern_returns_error
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 389. TestTestRegex.test_empty_groups_when_no_capture
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 390. TestTestRegex.test_multiple_capture_groups
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 391. TestPreviewLog.test_returns_error_for_invalid_regex
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 392. TestPreviewLog.test_returns_error_for_missing_file
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 393. TestPreviewLog.test_rejects_log_paths_outside_allowed_directories
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 394. TestPreviewLog.test_matches_lines_in_file
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 395. TestPreviewLog.test_matched_line_has_groups
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 396. TestPreviewLog.test_num_lines_limit
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 397. TestReadFail2BanLog.test_returns_log_lines_from_file
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 398. TestReadFail2BanLog.test_filter_narrows_returned_lines
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 399. TestReadFail2BanLog.test_non_file_target_raises_operation_error
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 400. TestReadFail2BanLog.test_syslog_target_raises_operation_error
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 401. TestReadFail2BanLog.test_path_outside_safe_dir_raises_operation_error
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 402. TestReadFail2BanLog.test_missing_log_file_raises_operation_error
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 403. TestGetServiceStatus.test_online_status_includes_log_config
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 404. TestGetServiceStatus.test_offline_status_returns_unknown_log_fields
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 405. TestConfigModuleIntegration.test_jail_config_service_list_inactive_jails_uses_imports
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---
## 406. TestConfigModuleIntegration.test_filter_config_service_list_filters_uses_imports
**Exception:** AttributeError: module 'app.models.config' has no attribute 'get_settings'
---