- 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
62 KiB
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'