refactor(tests): strip _sectionN suffixes from all test filenames
43 files renamed/deleted, 38 files created with clean names. Conflict pairs merged into single files: - test_migrations.py (was section36 + section53) - test_rate_limiting.py (was section34 + section4) - test_security_hardening.py (was section8 + section82)
sha256:1023a5ce87c517287e801d82ad4243278310d0420cd8d628b253ebdff5caa80b
sha
+242
~12
−417
symbols
sha256:71ffeb57de2965a492414923c46e62ad7384fd8c53657b85edf8a9b5476216b3
snapshot
+242
symbols added
~12
symbols modified
−417
symbols removed
0
dead code introduced
Semantic Changes
671 symbols
−
TestDataIntegrityElicitation
class
class TestDataIntegrityElicitation L415–443 → moved to tests/test_mcp_elicitation.py
−
test_accepted_content_preserved_in_result
method
async_method test_accepted_content_preserved_in_result L416–424 → moved to tests/test_mcp_elicitation.py
−
test_build_form_requested_schema_is_schemas_entry
method
method test_build_form_requested_schema_is_schemas_entry L436–439 → moved to tests/test_mcp_elicitation.py
−
test_build_url_elicitation_id_in_params
method
method test_build_url_elicitation_id_in_params L441–443 → moved to tests/test_mcp_elicitation.py
−
test_declined_action_in_result
method
async_method test_declined_action_in_result L426–434 → moved to tests/test_mcp_elicitation.py
−
TestE2EDawConnectRoute
class
class TestE2EDawConnectRoute L349–374 → moved to tests/test_mcp_elicitation.py
−
test_invalid_daw_slug_returns_404
method
async_method test_invalid_daw_slug_returns_404 L350–356 → moved to tests/test_mcp_elicitation.py
−
test_unauthenticated_valid_daw_redirects
method
async_method test_unauthenticated_valid_daw_redirects L358–374 → moved to tests/test_mcp_elicitation.py
−
TestE2EElicitationCallbackRoute
class
class TestE2EElicitationCallbackRoute L301–316 → moved to tests/test_mcp_elicitation.py
−
test_callback_accepted_returns_200
method
async_method test_callback_accepted_returns_200 L302–308 → moved to tests/test_mcp_elicitation.py
−
test_callback_declined_returns_200
method
async_method test_callback_declined_returns_200 L310–316 → moved to tests/test_mcp_elicitation.py
−
TestE2EPlatformConnectRoute
class
class TestE2EPlatformConnectRoute L319–346 → moved to tests/test_mcp_elicitation.py
−
test_invalid_platform_slug_returns_404
method
async_method test_invalid_platform_slug_returns_404 L320–326 → moved to tests/test_mcp_elicitation.py
−
test_unauthenticated_valid_platform_redirects
method
async_method test_unauthenticated_valid_platform_redirects L328–346 → moved to tests/test_mcp_elicitation.py
−
TestIntegrationPendingElicitation
class
class TestIntegrationPendingElicitation L205–245 → moved to tests/test_mcp_elicitation.py
−
test_create_pending_stores_future
method
async_method test_create_pending_stores_future L206–214 → moved to tests/test_mcp_elicitation.py
−
test_resolve_already_done_future_returns_false
method
async_method test_resolve_already_done_future_returns_false L236–245 → moved to tests/test_mcp_elicitation.py
−
test_resolve_matching_id_returns_true
method
async_method test_resolve_matching_id_returns_true L216–225 → moved to tests/test_mcp_elicitation.py
−
test_resolve_non_matching_id_returns_false
method
async_method test_resolve_non_matching_id_returns_false L227–234 → moved to tests/test_mcp_elicitation.py
−
TestIntegrationSignalElicitation
class
class TestIntegrationSignalElicitation L248–295 → moved to tests/test_mcp_elicitation.py
−
test_delete_session_cancels_pending_futures
method
async_method test_delete_session_cancels_pending_futures L286–295 → moved to tests/test_mcp_elicitation.py
−
test_signal_no_matching_session_returns_zero
method
async_method test_signal_no_matching_session_returns_zero L279–284 → moved to tests/test_mcp_elicitation.py
−
test_signal_pushes_sse_notification_to_queue
method
async_method test_signal_pushes_sse_notification_to_queue L262–277 → moved to tests/test_mcp_elicitation.py
−
test_signal_resolves_matching_future
method
async_method test_signal_resolves_matching_future L249–260 → moved to tests/test_mcp_elicitation.py
−
TestPerformanceElicitation
class
class TestPerformanceElicitation L481–508 → moved to tests/test_mcp_elicitation.py
−
test_1000_build_form_under_50ms
method
method test_1000_build_form_under_50ms L482–488 → moved to tests/test_mcp_elicitation.py
−
test_1000_build_url_under_50ms
method
method test_1000_build_url_under_50ms L490–495 → moved to tests/test_mcp_elicitation.py
−
test_100_pending_create_and_resolve_under_100ms
method
async_method test_100_pending_create_and_resolve_under_100ms L497–508 → moved to tests/test_mcp_elicitation.py
−
TestSecurityElicitation
class
class TestSecurityElicitation L449–476 → moved to tests/test_mcp_elicitation.py
−
test_callback_unknown_id_does_not_crash
method
async_method test_callback_unknown_id_does_not_crash L450–457 → moved to tests/test_mcp_elicitation.py
−
test_double_resolve_returns_false
method
async_method test_double_resolve_returns_false L466–476 → moved to tests/test_mcp_elicitation.py
−
test_platform_unknown_slug_returns_404_not_500
method
async_method test_platform_unknown_slug_returns_404_not_500 L459–464 → moved to tests/test_mcp_elicitation.py
−
TestStressElicitation
class
class TestStressElicitation L380–409 → moved to tests/test_mcp_elicitation.py
−
test_50_pending_elicitations_no_collision
method
async_method test_50_pending_elicitations_no_collision L381–392 → moved to tests/test_mcp_elicitation.py
−
test_signal_resolves_across_5_sessions
method
async_method test_signal_resolves_across_5_sessions L394–409 → moved to tests/test_mcp_elicitation.py
−
TestUnitAvailableLists
class
class TestUnitAvailableLists L169–180 → moved to tests/test_mcp_elicitation.py
−
test_available_daw_clouds_non_empty
method
method test_available_daw_clouds_non_empty L173–174 → moved to tests/test_mcp_elicitation.py
−
test_available_platforms_non_empty
method
method test_available_platforms_non_empty L170–171 → moved to tests/test_mcp_elicitation.py
−
test_daw_clouds_are_strings
method
method test_daw_clouds_are_strings L179–180 → moved to tests/test_mcp_elicitation.py
−
test_platforms_are_strings
method
method test_platforms_are_strings L176–177 → moved to tests/test_mcp_elicitation.py
−
TestUnitComposePreferencesSchema
class
class TestUnitComposePreferencesSchema L183–199 → moved to tests/test_mcp_elicitation.py
−
test_schema_has_key_property
method
method test_schema_has_key_property L188–190 → moved to tests/test_mcp_elicitation.py
−
test_schema_has_tempo_bpm_property
method
method test_schema_has_tempo_bpm_property L192–194 → moved to tests/test_mcp_elicitation.py
−
test_schema_is_object_type
method
method test_schema_is_object_type L184–186 → moved to tests/test_mcp_elicitation.py
−
test_tempo_bpm_has_min_max_constraints
method
method test_tempo_bpm_has_min_max_constraints L196–199 → moved to tests/test_mcp_elicitation.py
−
TestUnitElicitationTypesDicts
class
class TestUnitElicitationTypesDicts L141–166 → moved to tests/test_mcp_elicitation.py
−
test_elicitation_action_has_action_field
method
method test_elicitation_action_has_action_field L142–144 → moved to tests/test_mcp_elicitation.py
−
test_elicitation_action_with_content
method
method test_elicitation_action_with_content L146–148 → moved to tests/test_mcp_elicitation.py
−
test_elicitation_request_form_shape
method
method test_elicitation_request_form_shape L150–157 → moved to tests/test_mcp_elicitation.py
−
test_elicitation_request_url_shape
method
method test_elicitation_request_url_shape L159–166 → moved to tests/test_mcp_elicitation.py
−
TestUnitSchemaBuilders
class
class TestUnitSchemaBuilders L108–138 → moved to tests/test_mcp_elicitation.py
−
test_build_form_all_schema_keys
method
method test_build_form_all_schema_keys L109–115 → moved to tests/test_mcp_elicitation.py
−
test_build_form_schema_matches_schemas_dict
method
method test_build_form_schema_matches_schemas_dict L117–121 → moved to tests/test_mcp_elicitation.py
−
test_build_url_auto_generates_id_when_omitted
method
method test_build_url_auto_generates_id_when_omitted L128–132 → moved to tests/test_mcp_elicitation.py
−
test_build_url_caller_supplied_id_preserved
method
method test_build_url_caller_supplied_id_preserved L123–126 → moved to tests/test_mcp_elicitation.py
−
test_build_url_mode_and_url_set
method
method test_build_url_mode_and_url_set L134–138 → moved to tests/test_mcp_elicitation.py
−
ElicitationRequest
import
import ElicitationRequest L67–67 → moved to tests/test_mcp_elicitation.py
−
TestMigrationDataIntegrity
class
class TestMigrationDataIntegrity L531–624 → moved to tests/test_migrations.py
−
test_musehub_auth_keys_fingerprint_unique_index
method
method test_musehub_auth_keys_fingerprint_unique_index L588–594 → moved to tests/test_migrations.py
−
test_musehub_auth_keys_has_algorithm_column
method
method test_musehub_auth_keys_has_algorithm_column L571–578 → moved to tests/test_migrations.py
−
test_musehub_collaborators_has_identity_handle_column
method
method test_musehub_collaborators_has_identity_handle_column L596–604 → moved to tests/test_migrations.py
−
test_musehub_identities_has_agent_columns
method
method test_musehub_identities_has_agent_columns L543–551 → moved to tests/test_migrations.py
−
test_musehub_identities_has_no_legacy_user_id
method
method test_musehub_identities_has_no_legacy_user_id L553–560 → moved to tests/test_migrations.py
−
test_musehub_issue_comments_has_no_state_refs
method
method test_musehub_issue_comments_has_no_state_refs L562–569 → moved to tests/test_migrations.py
−
test_musehub_repos_has_required_columns
method
method test_musehub_repos_has_required_columns L534–541 → moved to tests/test_migrations.py
−
test_musehub_repos_unique_owner_slug_index_exists
method
method test_musehub_repos_unique_owner_slug_index_exists L580–586 → moved to tests/test_migrations.py
−
test_musehub_snapshot_entries_exists_and_has_key_columns
method
method test_musehub_snapshot_entries_exists_and_has_key_columns L606–612 → moved to tests/test_migrations.py
−
test_sessions_table_exists
method
method test_sessions_table_exists L620–624 → moved to tests/test_migrations.py
−
test_wire_tags_table_exists
method
method test_wire_tags_table_exists L614–618 → moved to tests/test_migrations.py
−
test_each_migration_step_is_individually_runnable
method
method test_each_migration_step_is_individually_runnable L451–457 → moved to tests/test_migrations.py
−
test_identity_row_survives_upgrade_chain
method
method test_identity_row_survives_upgrade_chain L421–449 → moved to tests/test_migrations.py
−
test_repo_data_survives_incremental_upgrade
method
method test_repo_data_survives_incremental_upgrade L390–419 → moved to tests/test_migrations.py
−
TestMigrationIntegration
class
class TestMigrationIntegration L331–379 → moved to tests/test_migrations.py
−
test_current_revision_tracked_in_alembic_version
method
method test_current_revision_tracked_in_alembic_version L341–351 → moved to tests/test_migrations.py
−
test_downgrade_then_upgrade_returns_to_head
method
method test_downgrade_then_upgrade_returns_to_head L367–372 → moved to tests/test_migrations.py
−
test_full_downgrade_to_base_then_re_upgrade
method
method test_full_downgrade_to_base_then_re_upgrade L374–379 → moved to tests/test_migrations.py
−
test_legacy_tables_absent_at_head
method
method test_legacy_tables_absent_at_head L360–365 → moved to tests/test_migrations.py
−
test_required_tables_exist_at_head
method
method test_required_tables_exist_at_head L353–358 → moved to tests/test_migrations.py
−
test_upgrade_to_head_succeeds
method
method test_upgrade_to_head_succeeds L334–339 → moved to tests/test_migrations.py
−
TestMigrationPerformance
class
class TestMigrationPerformance L714–765 → moved to tests/test_migrations.py
−
test_index_introspection_under_200ms
method
method test_index_introspection_under_200ms L756–765 → moved to tests/test_migrations.py
−
test_schema_introspection_under_500ms
method
method test_schema_introspection_under_500ms L747–754 → moved to tests/test_migrations.py
−
test_single_step_downgrade_under_5_seconds
method
method test_single_step_downgrade_under_5_seconds L728–745 → moved to tests/test_migrations.py
−
test_single_step_upgrade_under_5_seconds
method
method test_single_step_upgrade_under_5_seconds L717–726 → moved to tests/test_migrations.py
−
TestMigrationSecurity
class
class TestMigrationSecurity L632–706 → moved to tests/test_migrations.py
−
test_downgrade_does_not_expose_dropped_columns
method
method test_downgrade_does_not_expose_dropped_columns L661–675 → moved to tests/test_migrations.py
−
test_legacy_auth_tables_dropped_at_head
method
method test_legacy_auth_tables_dropped_at_head L635–641 → moved to tests/test_migrations.py
−
test_musehub_auth_keys_has_fingerprint_unique_constraint
method
method test_musehub_auth_keys_has_fingerprint_unique_constraint L643–650 → moved to tests/test_migrations.py
−
test_musehub_identities_handle_unique
method
method test_musehub_identities_handle_unique L652–659 → moved to tests/test_migrations.py
−
test_repos_owner_slug_uniqueness_enforced
method
method test_repos_owner_slug_uniqueness_enforced L677–706 → moved to tests/test_migrations.py
−
test_100_identity_inserts_survive_step_cycle
method
method test_100_identity_inserts_survive_step_cycle L494–523 → moved to tests/test_migrations.py
−
test_full_downgrade_completes_under_60_seconds
method
method test_full_downgrade_completes_under_60_seconds L476–484 → moved to tests/test_migrations.py
−
test_full_upgrade_completes_under_60_seconds
method
method test_full_upgrade_completes_under_60_seconds L468–474 → moved to tests/test_migrations.py
−
test_three_consecutive_upgrade_to_head_idempotent
method
method test_three_consecutive_upgrade_to_head_idempotent L486–492 → moved to tests/test_migrations.py
−
test_alembic_ini_points_to_correct_script_location
method
method test_alembic_ini_points_to_correct_script_location L312–318 → moved to tests/test_migrations.py
−
test_all_42_migrations_present
method
method test_all_42_migrations_present L268–271 → moved to tests/test_migrations.py
−
test_each_migration_has_upgrade_and_downgrade
method
method test_each_migration_has_upgrade_and_downgrade L295–310 → moved to tests/test_migrations.py
−
test_env_py_imports_all_model_bases
method
method test_env_py_imports_all_model_bases L320–323 → moved to tests/test_migrations.py
−
test_head_revision_is_0042
method
method test_head_revision_is_0042 L273–293 → moved to tests/test_migrations.py
−
test_revision_chain_is_linear
method
method test_revision_chain_is_linear L241–266 → moved to tests/test_migrations.py
−
test_integrity_scan_clean
function
async_function test_integrity_scan_clean L101–118 → moved to tests/test_object_store.py
−
test_integrity_scan_detects_hash_mismatch
function
async_function test_integrity_scan_detects_hash_mismatch L150–169 → moved to tests/test_object_store.py
−
test_integrity_scan_detects_missing_object
function
async_function test_integrity_scan_detects_missing_object L125–143 → moved to tests/test_object_store.py
−
test_local_backend_write_sets_readonly
function
function test_local_backend_write_sets_readonly L62–78 → moved to tests/test_object_store.py
−
test_local_backend_write_skips_existing_file
function
function test_local_backend_write_skips_existing_file L81–94 → moved to tests/test_object_store.py
−
test_reaper_removes_objects_past_retention
function
async_function test_reaper_removes_objects_past_retention L206–235 → moved to tests/test_object_store.py
−
test_reaper_spares_objects_within_retention
function
async_function test_reaper_spares_objects_within_retention L238–262 → moved to tests/test_object_store.py
−
test_soft_delete_sets_deleted_at
function
async_function test_soft_delete_sets_deleted_at L176–192 → moved to tests/test_object_store.py
−
test_soft_delete_unknown_object_returns_false
function
async_function test_soft_delete_unknown_object_returns_false L195–199 → moved to tests/test_object_store.py
−
test_wire_push_rejects_when_repo_quota_exceeded
function
async_function test_wire_push_rejects_when_repo_quota_exceeded L269–298 → moved to tests/test_object_store.py
−
test_api_search_rate_limited_on_429
function
async_function test_api_search_rate_limited_on_429 L37–44 → moved to tests/test_rate_limiting.py
−
test_auth_limit_is_strict
function
function test_auth_limit_is_strict L24–32 → moved to tests/test_rate_limiting.py
−
test_bot_ua_scrapy_is_blocked_on_write
function
async_function test_bot_ua_scrapy_is_blocked_on_write L123–134 → moved to tests/test_rate_limiting.py
−
test_bot_ua_sqlmap_is_blocked_on_write
function
async_function test_bot_ua_sqlmap_is_blocked_on_write L147–154 → moved to tests/test_rate_limiting.py
−
test_bot_ua_wget_is_blocked_on_write
function
async_function test_bot_ua_wget_is_blocked_on_write L137–144 → moved to tests/test_rate_limiting.py
−
test_global_rate_limit_configured
function
function test_global_rate_limit_configured L10–19 → moved to tests/test_rate_limiting.py
−
test_healthz_exempt_from_bot_check
function
async_function test_healthz_exempt_from_bot_check L184–188 → moved to tests/test_rate_limiting.py
−
test_legitimate_browser_ua_passes
function
async_function test_legitimate_browser_ua_passes L166–172 → moved to tests/test_rate_limiting.py
−
test_missing_ua_post_non_cdn_path_is_blocked
function
async_function test_missing_ua_post_non_cdn_path_is_blocked L157–163 → moved to tests/test_rate_limiting.py
−
test_muse_cli_ua_passes
function
async_function test_muse_cli_ua_passes L175–181 → moved to tests/test_rate_limiting.py
−
test_object_download_has_rate_limit_decorator
function
function test_object_download_has_rate_limit_decorator L75–84 → moved to tests/test_rate_limiting.py
−
test_retry_after_added_to_429
function
function test_retry_after_added_to_429 L89–118 → moved to tests/test_rate_limiting.py
−
test_search_routes_have_rate_limit_decorator
function
function test_search_routes_have_rate_limit_decorator L47–70 → moved to tests/test_rate_limiting.py
−
test_webhook_backoff_configured
function
function test_webhook_backoff_configured L203–209 → moved to tests/test_rate_limiting.py
−
test_webhook_max_attempts_capped
function
function test_webhook_max_attempts_capped L193–200 → moved to tests/test_rate_limiting.py
−
TestCommitIdForgery
class
class TestCommitIdForgery L370–433 → moved to tests/test_security_hardening.py
−
test_require_signed_commits_setting_exists
method
method test_require_signed_commits_setting_exists L371–375 → moved to tests/test_security_hardening.py
−
test_wire_push_enforces_when_setting_true
method
method test_wire_push_enforces_when_setting_true L377–385 → moved to tests/test_security_hardening.py
−
test_wire_push_rejects_unsigned_when_enforcement_on
method
async_method test_wire_push_rejects_unsigned_when_enforcement_on L387–414 → moved to tests/test_security_hardening.py
−
test_wire_push_source_has_unsigned_warning_not_rejection
method
method test_wire_push_source_has_unsigned_warning_not_rejection L416–433 → moved to tests/test_security_hardening.py
−
TestMassAssignment
class
class TestMassAssignment L217–254 → moved to tests/test_security_hardening.py
−
test_no_kwargs_splat_from_request_body
method
method test_no_kwargs_splat_from_request_body L221–234 → moved to tests/test_security_hardening.py
−
test_route_handler_body_params_are_pydantic_or_primitive
method
method test_route_handler_body_params_are_pydantic_or_primitive L236–248 → moved to tests/test_security_hardening.py
−
test_webhook_create_uses_pydantic_not_raw_dict
method
method test_webhook_create_uses_pydantic_not_raw_dict L250–254 → moved to tests/test_security_hardening.py
−
TestObjectEnumeration
class
class TestObjectEnumeration L307–363 → moved to tests/test_security_hardening.py
−
test_issue_number_is_per_repo_not_global
method
method test_issue_number_is_per_repo_not_global L334–342 → moved to tests/test_security_hardening.py
−
test_issue_primary_key_is_uuid_string
method
method test_issue_primary_key_is_uuid_string L326–332 → moved to tests/test_security_hardening.py
−
test_no_autoincrement_primary_keys_on_main_entities
method
method test_no_autoincrement_primary_keys_on_main_entities L344–363 → moved to tests/test_security_hardening.py
−
test_repo_primary_key_is_uuid_string
method
method test_repo_primary_key_is_uuid_string L311–324 → moved to tests/test_security_hardening.py
−
_search_service_src
method
method _search_service_src L441–442 → moved to tests/test_security_hardening.py
−
test_global_search_uses_sql_or_python_in
method
method test_global_search_uses_sql_or_python_in L485–494 → moved to tests/test_security_hardening.py
−
test_no_user_supplied_regex_in_search_routes
method
method test_no_user_supplied_regex_in_search_routes L477–483 → moved to tests/test_security_hardening.py
−
test_search_by_ask_uses_fixed_tokenizer_not_user_regex
method
method test_search_by_ask_uses_fixed_tokenizer_not_user_regex L462–475 → moved to tests/test_security_hardening.py
−
test_search_by_pattern_uses_python_in_not_regex
method
method test_search_by_pattern_uses_python_in_not_regex L444–460 → moved to tests/test_security_hardening.py
−
TestSsrfCheckUrlSafe
class
class TestSsrfCheckUrlSafe L36–92 → moved to tests/test_security_hardening.py
−
test_empty_string_blocked
method
method test_empty_string_blocked L90–92 → moved to tests/test_security_hardening.py
−
test_file_scheme_blocked
method
method test_file_scheme_blocked L53–55 → moved to tests/test_security_hardening.py
−
test_ftp_scheme_blocked
method
method test_ftp_scheme_blocked L49–51 → moved to tests/test_security_hardening.py
−
test_hostname_with_path_allowed
method
method test_hostname_with_path_allowed L82–84 → moved to tests/test_security_hardening.py
−
test_http_scheme_blocked
method
method test_http_scheme_blocked L45–47 → moved to tests/test_security_hardening.py
−
test_https_public_url_allowed
method
method test_https_public_url_allowed L41–43 → moved to tests/test_security_hardening.py
−
test_link_local_169_254_blocked
method
method test_link_local_169_254_blocked L77–80 → moved to tests/test_security_hardening.py
−
test_loopback_127_blocked
method
method test_loopback_127_blocked L57–59 → moved to tests/test_security_hardening.py
−
test_loopback_127_other_blocked
method
method test_loopback_127_other_blocked L61–63 → moved to tests/test_security_hardening.py
−
test_no_hostname_blocked
method
method test_no_hostname_blocked L86–88 → moved to tests/test_security_hardening.py
−
test_rfc1918_10_blocked
method
method test_rfc1918_10_blocked L65–67 → moved to tests/test_security_hardening.py
−
test_rfc1918_172_16_blocked
method
method test_rfc1918_172_16_blocked L69–71 → moved to tests/test_security_hardening.py
−
test_rfc1918_192_168_blocked
method
method test_rfc1918_192_168_blocked L73–75 → moved to tests/test_security_hardening.py
−
TestSsrfValidateOutboundUrl
class
class TestSsrfValidateOutboundUrl L99–141 → moved to tests/test_security_hardening.py
−
test_bare_ip_does_not_do_dns
method
async_method test_bare_ip_does_not_do_dns L134–141 → moved to tests/test_security_hardening.py
−
test_dns_resolves_to_loopback_blocked
method
async_method test_dns_resolves_to_loopback_blocked L118–124 → moved to tests/test_security_hardening.py
−
test_dns_resolves_to_private_blocked
method
async_method test_dns_resolves_to_private_blocked L109–116 → moved to tests/test_security_hardening.py
−
test_public_hostname_allowed
method
async_method test_public_hostname_allowed L100–107 → moved to tests/test_security_hardening.py
−
test_unresolvable_hostname_blocked
method
async_method test_unresolvable_hostname_blocked L126–132 → moved to tests/test_security_hardening.py
−
test_no_archive_extraction_in_codebase
method
method test_no_archive_extraction_in_codebase L502–516 → moved to tests/test_security_hardening.py
−
TestTimingAttacks
class
class TestTimingAttacks L261–300 → moved to tests/test_security_hardening.py
−
test_compare_digest_used_not_equal_for_secrets
method
method test_compare_digest_used_not_equal_for_secrets L279–300 → moved to tests/test_security_hardening.py
−
test_crypto_keys_uses_compare_digest
method
method test_crypto_keys_uses_compare_digest L273–277 → moved to tests/test_security_hardening.py
−
test_request_signing_uses_cryptographic_verify
method
method test_request_signing_uses_cryptographic_verify L262–271 → moved to tests/test_security_hardening.py
−
TestWebhookCreateSsrf
class
class TestWebhookCreateSsrf L148–175 → moved to tests/test_security_hardening.py
−
test_aws_metadata_endpoint_rejected
method
method test_aws_metadata_endpoint_rejected L172–175 → moved to tests/test_security_hardening.py
−
test_http_rejected_at_model_parse
method
method test_http_rejected_at_model_parse L157–160 → moved to tests/test_security_hardening.py
−
test_https_public_accepted
method
method test_https_public_accepted L153–155 → moved to tests/test_security_hardening.py
−
test_loopback_rejected_at_model_parse
method
method test_loopback_rejected_at_model_parse L167–170 → moved to tests/test_security_hardening.py
−
test_rfc1918_rejected_at_model_parse
method
method test_rfc1918_rejected_at_model_parse L162–165 → moved to tests/test_security_hardening.py
−
TestWebhookDeliveryDefenseInDepth
class
class TestWebhookDeliveryDefenseInDepth L182–210 → moved to tests/test_security_hardening.py
−
test_delivery_blocked_when_ssrf_check_fails
method
async_method test_delivery_blocked_when_ssrf_check_fails L183–204 → moved to tests/test_security_hardening.py
−
test_dispatcher_imports_ssrf_module
method
method test_dispatcher_imports_ssrf_module L206–210 → moved to tests/test_security_hardening.py
−
_WEBHOOK_MODEL
variable
variable _WEBHOOK_MODEL L26–26 → moved to tests/test_security_hardening.py
−
test_build_form_elicitation_unknown_key_raises
function
function test_build_form_elicitation_unknown_key_raises L153–156
−
test_build_url_elicitation_stable_id
function
function test_build_url_elicitation_stable_id L169–175
−
test_compose_preferences_schema_required_fields
function
function test_compose_preferences_schema_required_fields L133–141
−
test_create_release_interactive_bypass_tag_only
function
async_function test_create_release_interactive_bypass_tag_only L446–463
−
test_create_release_interactive_no_session_no_params
function
async_function test_create_release_interactive_no_session_no_params L324–333
−
test_elicit_form_accepted_returns_content
function
async_function test_elicit_form_accepted_returns_content L203–221
−
test_elicit_form_declined_returns_none
function
async_function test_elicit_form_declined_returns_none L224–239
−
test_elicit_form_no_form_capability_returns_none
function
async_function test_elicit_form_no_form_capability_returns_none L242–248
−
test_elicit_form_no_session_returns_none
function
async_function test_elicit_form_no_session_returns_none L196–200
−
test_elicit_url_accepted_returns_true
function
async_function test_elicit_url_accepted_returns_true L261–276
−
test_elicit_url_no_session_returns_false
function
async_function test_elicit_url_no_session_returns_false L254–258
−
test_notifications_cancelled_handled
function
async_function test_notifications_cancelled_handled L360–369
−
test_notifications_cancelled_resolves_future
function
async_function test_notifications_cancelled_resolves_future L384–401
−
test_notifications_elicitation_complete_handled
function
async_function test_notifications_elicitation_complete_handled L372–381
−
test_progress_no_session_is_noop
function
async_function test_progress_no_session_is_noop L282–285
−
test_progress_with_session_pushes_sse_event
function
async_function test_progress_with_session_pushes_sse_event L288–306
−
test_review_proposal_interactive_bypass_dimension_and_depth
function
async_function test_review_proposal_interactive_bypass_dimension_and_depth L407–426
−
test_review_proposal_interactive_bypass_dimension_only
function
async_function test_review_proposal_interactive_bypass_dimension_only L429–443
−
test_review_proposal_interactive_no_session
function
async_function test_review_proposal_interactive_no_session L312–321
+
TestDataIntegrityElicitation
class
class TestDataIntegrityElicitation L415–443 ← moved from tests/test_mcp_elicitation_section16.py
+
test_accepted_content_preserved_in_result
method
async_method test_accepted_content_preserved_in_result L416–424 ← moved from tests/test_mcp_elicitation_section16.py
+
test_build_form_requested_schema_is_schemas_entry
method
method test_build_form_requested_schema_is_schemas_entry L436–439 ← moved from tests/test_mcp_elicitation_section16.py
+
test_build_url_elicitation_id_in_params
method
method test_build_url_elicitation_id_in_params L441–443 ← moved from tests/test_mcp_elicitation_section16.py
+
test_declined_action_in_result
method
async_method test_declined_action_in_result L426–434 ← moved from tests/test_mcp_elicitation_section16.py
+
TestE2EDawConnectRoute
class
class TestE2EDawConnectRoute L349–374 ← moved from tests/test_mcp_elicitation_section16.py
+
test_invalid_daw_slug_returns_404
method
async_method test_invalid_daw_slug_returns_404 L350–356 ← moved from tests/test_mcp_elicitation_section16.py
+
test_unauthenticated_valid_daw_redirects
method
async_method test_unauthenticated_valid_daw_redirects L358–374 ← moved from tests/test_mcp_elicitation_section16.py
+
TestE2EElicitationCallbackRoute
class
class TestE2EElicitationCallbackRoute L301–316 ← moved from tests/test_mcp_elicitation_section16.py
+
test_callback_accepted_returns_200
method
async_method test_callback_accepted_returns_200 L302–308 ← moved from tests/test_mcp_elicitation_section16.py
+
test_callback_declined_returns_200
method
async_method test_callback_declined_returns_200 L310–316 ← moved from tests/test_mcp_elicitation_section16.py
+
TestE2EPlatformConnectRoute
class
class TestE2EPlatformConnectRoute L319–346 ← moved from tests/test_mcp_elicitation_section16.py
+
test_invalid_platform_slug_returns_404
method
async_method test_invalid_platform_slug_returns_404 L320–326 ← moved from tests/test_mcp_elicitation_section16.py
+
test_unauthenticated_valid_platform_redirects
method
async_method test_unauthenticated_valid_platform_redirects L328–346 ← moved from tests/test_mcp_elicitation_section16.py
+
TestIntegrationPendingElicitation
class
class TestIntegrationPendingElicitation L205–245 ← moved from tests/test_mcp_elicitation_section16.py
+
test_create_pending_stores_future
method
async_method test_create_pending_stores_future L206–214 ← moved from tests/test_mcp_elicitation_section16.py
+
test_resolve_already_done_future_returns_false
method
async_method test_resolve_already_done_future_returns_false L236–245 ← moved from tests/test_mcp_elicitation_section16.py
+
test_resolve_matching_id_returns_true
method
async_method test_resolve_matching_id_returns_true L216–225 ← moved from tests/test_mcp_elicitation_section16.py
+
test_resolve_non_matching_id_returns_false
method
async_method test_resolve_non_matching_id_returns_false L227–234 ← moved from tests/test_mcp_elicitation_section16.py
+
TestIntegrationSignalElicitation
class
class TestIntegrationSignalElicitation L248–295 ← moved from tests/test_mcp_elicitation_section16.py
+
test_delete_session_cancels_pending_futures
method
async_method test_delete_session_cancels_pending_futures L286–295 ← moved from tests/test_mcp_elicitation_section16.py
+
test_signal_no_matching_session_returns_zero
method
async_method test_signal_no_matching_session_returns_zero L279–284 ← moved from tests/test_mcp_elicitation_section16.py
+
test_signal_pushes_sse_notification_to_queue
method
async_method test_signal_pushes_sse_notification_to_queue L262–277 ← moved from tests/test_mcp_elicitation_section16.py
+
test_signal_resolves_matching_future
method
async_method test_signal_resolves_matching_future L249–260 ← moved from tests/test_mcp_elicitation_section16.py
+
TestPerformanceElicitation
class
class TestPerformanceElicitation L481–508 ← moved from tests/test_mcp_elicitation_section16.py
+
test_1000_build_form_under_50ms
method
method test_1000_build_form_under_50ms L482–488 ← moved from tests/test_mcp_elicitation_section16.py
+
test_1000_build_url_under_50ms
method
method test_1000_build_url_under_50ms L490–495 ← moved from tests/test_mcp_elicitation_section16.py
+
test_100_pending_create_and_resolve_under_100ms
method
async_method test_100_pending_create_and_resolve_under_100ms L497–508 ← moved from tests/test_mcp_elicitation_section16.py
+
TestSecurityElicitation
class
class TestSecurityElicitation L449–476 ← moved from tests/test_mcp_elicitation_section16.py
+
test_callback_unknown_id_does_not_crash
method
async_method test_callback_unknown_id_does_not_crash L450–457 ← moved from tests/test_mcp_elicitation_section16.py
+
test_double_resolve_returns_false
method
async_method test_double_resolve_returns_false L466–476 ← moved from tests/test_mcp_elicitation_section16.py
+
test_platform_unknown_slug_returns_404_not_500
method
async_method test_platform_unknown_slug_returns_404_not_500 L459–464 ← moved from tests/test_mcp_elicitation_section16.py
+
TestStressElicitation
class
class TestStressElicitation L380–409 ← moved from tests/test_mcp_elicitation_section16.py
+
test_50_pending_elicitations_no_collision
method
async_method test_50_pending_elicitations_no_collision L381–392 ← moved from tests/test_mcp_elicitation_section16.py
+
test_signal_resolves_across_5_sessions
method
async_method test_signal_resolves_across_5_sessions L394–409 ← moved from tests/test_mcp_elicitation_section16.py
+
TestUnitAvailableLists
class
class TestUnitAvailableLists L169–180 ← moved from tests/test_mcp_elicitation_section16.py
+
test_available_daw_clouds_non_empty
method
method test_available_daw_clouds_non_empty L173–174 ← moved from tests/test_mcp_elicitation_section16.py
+
test_available_platforms_non_empty
method
method test_available_platforms_non_empty L170–171 ← moved from tests/test_mcp_elicitation_section16.py
+
test_daw_clouds_are_strings
method
method test_daw_clouds_are_strings L179–180 ← moved from tests/test_mcp_elicitation_section16.py
+
test_platforms_are_strings
method
method test_platforms_are_strings L176–177 ← moved from tests/test_mcp_elicitation_section16.py
+
TestUnitComposePreferencesSchema
class
class TestUnitComposePreferencesSchema L183–199 ← moved from tests/test_mcp_elicitation_section16.py
+
test_schema_has_key_property
method
method test_schema_has_key_property L188–190 ← moved from tests/test_mcp_elicitation_section16.py
+
test_schema_has_tempo_bpm_property
method
method test_schema_has_tempo_bpm_property L192–194 ← moved from tests/test_mcp_elicitation_section16.py
+
test_schema_is_object_type
method
method test_schema_is_object_type L184–186 ← moved from tests/test_mcp_elicitation_section16.py
+
test_tempo_bpm_has_min_max_constraints
method
method test_tempo_bpm_has_min_max_constraints L196–199 ← moved from tests/test_mcp_elicitation_section16.py
+
TestUnitElicitationTypesDicts
class
class TestUnitElicitationTypesDicts L141–166 ← moved from tests/test_mcp_elicitation_section16.py
+
test_elicitation_action_has_action_field
method
method test_elicitation_action_has_action_field L142–144 ← moved from tests/test_mcp_elicitation_section16.py
+
test_elicitation_action_with_content
method
method test_elicitation_action_with_content L146–148 ← moved from tests/test_mcp_elicitation_section16.py
+
test_elicitation_request_form_shape
method
method test_elicitation_request_form_shape L150–157 ← moved from tests/test_mcp_elicitation_section16.py
+
test_elicitation_request_url_shape
method
method test_elicitation_request_url_shape L159–166 ← moved from tests/test_mcp_elicitation_section16.py
+
TestUnitSchemaBuilders
class
class TestUnitSchemaBuilders L108–138 ← moved from tests/test_mcp_elicitation_section16.py
+
test_build_form_all_schema_keys
method
method test_build_form_all_schema_keys L109–115 ← moved from tests/test_mcp_elicitation_section16.py
+
test_build_form_schema_matches_schemas_dict
method
method test_build_form_schema_matches_schemas_dict L117–121 ← moved from tests/test_mcp_elicitation_section16.py
+
test_build_url_auto_generates_id_when_omitted
method
method test_build_url_auto_generates_id_when_omitted L128–132 ← moved from tests/test_mcp_elicitation_section16.py
+
test_build_url_caller_supplied_id_preserved
method
method test_build_url_caller_supplied_id_preserved L123–126 ← moved from tests/test_mcp_elicitation_section16.py
+
test_build_url_mode_and_url_set
method
method test_build_url_mode_and_url_set L134–138 ← moved from tests/test_mcp_elicitation_section16.py
+
anyio_backend
function
function anyio_backend L92–93 ← moved from tests/test_mcp_elicitation_section16.py
+
http_client
function
async_function http_client L97–102 ← moved from tests/test_mcp_elicitation_section16.py
+
AVAILABLE_PLATFORMS
import
import AVAILABLE_PLATFORMS L69–69 ← moved from tests/test_mcp_elicitation_section16.py
+
ElicitationRequest
import
import ElicitationRequest L67–67 ← moved from tests/test_mcp_elicitation_section16.py
+
get_type_hints
import
import get_type_hints L59–59 ← moved from tests/test_mcp_elicitation_section16.py
~
SCHEMAS
~
patch
−
test_disk_path_points_to_real_file_after_wire_push
method
async_method test_disk_path_points_to_real_file_after_wire_push L650–686
−
test_idempotent_push_stores_object_once
method
async_method test_idempotent_push_stores_object_once L716–745
−
test_local_backend_put_idempotent_does_not_overwrite
method
async_method test_local_backend_put_idempotent_does_not_overwrite L748–756
−
test_binary_file_has_no_content_text
method
async_method test_binary_file_has_no_content_text L524–563
−
test_private_repo_without_auth_returns_401
method
async_method test_private_repo_without_auth_returns_401 L516–521
−
test_missing_disk_file_returns_410
method
async_method test_missing_disk_file_returns_410 L429–439
−
test_private_repo_without_auth_returns_401
method
async_method test_private_repo_without_auth_returns_401 L442–451
−
test_private_repo_with_auth_returns_200
method
async_method test_private_repo_with_auth_returns_200 L382–393
−
test_private_repo_without_auth_returns_401
method
async_method test_private_repo_without_auth_returns_401 L374–379
−
test_put_returns_uri_and_file_exists
method
async_method test_put_returns_uri_and_file_exists L150–156
−
test_separate_repos_share_global_storage
method
async_method test_separate_repos_share_global_storage L197–202
−
test_get_object_content_1mb_under_500ms
method
async_method test_get_object_content_1mb_under_500ms L883–901
−
test_list_objects_100_rows_under_200ms
method
async_method test_list_objects_100_rows_under_200ms L859–880
−
test_local_backend_get_1kb_under_10ms
method
async_method test_local_backend_get_1kb_under_10ms L846–856
−
test_local_backend_put_1kb_under_50ms
method
async_method test_local_backend_put_1kb_under_50ms L833–843
−
test_cross_repo_object_not_visible_in_other_repo
method
async_method test_cross_repo_object_not_visible_in_other_repo L806–824
−
test_object_id_double_slash_is_sanitised
method
method test_object_id_double_slash_is_sanitised L779–783
−
test_object_id_with_dotdot_is_sanitised
method
method test_object_id_with_dotdot_is_sanitised L764–769
−
test_private_repo_content_requires_auth
method
async_method test_private_repo_content_requires_auth L794–803
−
test_private_repo_list_objects_requires_auth
method
async_method test_private_repo_list_objects_requires_auth L786–791
−
test_traversal_via_object_id_colon_is_sanitised
method
method test_traversal_via_object_id_colon_is_sanitised L771–777
−
test_50_objects_push_then_list_all_present
method
async_method test_50_objects_push_then_list_all_present L585–612
−
test_empty_repo_returns_empty_list
method
async_method test_empty_repo_returns_empty_list L264–268
−
test_returns_all_objects_sorted_by_path
method
async_method test_returns_all_objects_sorted_by_path L271–283
+
_add_object
function
async_function _add_object L35–55 ← moved from tests/test_object_store_section52.py
+
_MusehubObject
import
import _MusehubObject L23–23 ← moved from tests/test_object_store_section52.py
+
test_integrity_scan_clean
function
async_function test_integrity_scan_clean L101–118 ← moved from tests/test_object_store_section52.py
+
test_integrity_scan_detects_hash_mismatch
function
async_function test_integrity_scan_detects_hash_mismatch L150–169 ← moved from tests/test_object_store_section52.py
+
test_integrity_scan_detects_missing_object
function
async_function test_integrity_scan_detects_missing_object L125–143 ← moved from tests/test_object_store_section52.py
+
test_local_backend_write_sets_readonly
function
function test_local_backend_write_sets_readonly L62–78 ← moved from tests/test_object_store_section52.py
+
test_local_backend_write_skips_existing_file
function
function test_local_backend_write_skips_existing_file L81–94 ← moved from tests/test_object_store_section52.py
+
test_reaper_removes_objects_past_retention
function
async_function test_reaper_removes_objects_past_retention L206–235 ← moved from tests/test_object_store_section52.py
+
test_reaper_spares_objects_within_retention
function
async_function test_reaper_spares_objects_within_retention L238–262 ← moved from tests/test_object_store_section52.py
+
test_soft_delete_sets_deleted_at
function
async_function test_soft_delete_sets_deleted_at L176–192 ← moved from tests/test_object_store_section52.py
+
test_soft_delete_unknown_object_returns_false
function
async_function test_soft_delete_unknown_object_returns_false L195–199 ← moved from tests/test_object_store_section52.py
+
test_wire_push_rejects_when_repo_quota_exceeded
function
async_function test_wire_push_rejects_when_repo_quota_exceeded L269–298 ← moved from tests/test_object_store_section52.py
+
TestMigrationDataIntegrity
class
class TestMigrationDataIntegrity L530–623 ← moved from tests/test_migrations_section36.py
+
test_musehub_auth_keys_fingerprint_unique_index
method
method test_musehub_auth_keys_fingerprint_unique_index L587–593 ← moved from tests/test_migrations_section36.py
+
test_musehub_auth_keys_has_algorithm_column
method
method test_musehub_auth_keys_has_algorithm_column L570–577 ← moved from tests/test_migrations_section36.py
+
test_musehub_collaborators_has_identity_handle_column
method
method test_musehub_collaborators_has_identity_handle_column L595–603 ← moved from tests/test_migrations_section36.py
+
test_musehub_identities_has_agent_columns
method
method test_musehub_identities_has_agent_columns L542–550 ← moved from tests/test_migrations_section36.py
+
test_musehub_identities_has_no_legacy_user_id
method
method test_musehub_identities_has_no_legacy_user_id L552–559 ← moved from tests/test_migrations_section36.py
+
test_musehub_issue_comments_has_no_state_refs
method
method test_musehub_issue_comments_has_no_state_refs L561–568 ← moved from tests/test_migrations_section36.py
+
test_musehub_repos_has_required_columns
method
method test_musehub_repos_has_required_columns L533–540 ← moved from tests/test_migrations_section36.py
+
test_musehub_repos_unique_owner_slug_index_exists
method
method test_musehub_repos_unique_owner_slug_index_exists L579–585 ← moved from tests/test_migrations_section36.py
+
test_musehub_snapshot_entries_exists_and_has_key_columns
method
method test_musehub_snapshot_entries_exists_and_has_key_columns L605–611 ← moved from tests/test_migrations_section36.py
+
test_sessions_table_exists
method
method test_sessions_table_exists L619–623 ← moved from tests/test_migrations_section36.py
+
test_wire_tags_table_exists
method
method test_wire_tags_table_exists L613–617 ← moved from tests/test_migrations_section36.py
+
TestMigrationE2E
class
class TestMigrationE2E L386–456 ← moved from tests/test_migrations_section36.py
+
test_each_migration_step_is_individually_runnable
method
method test_each_migration_step_is_individually_runnable L450–456 ← moved from tests/test_migrations_section36.py
+
test_identity_row_survives_upgrade_chain
method
method test_identity_row_survives_upgrade_chain L420–448 ← moved from tests/test_migrations_section36.py
+
test_repo_data_survives_incremental_upgrade
method
method test_repo_data_survives_incremental_upgrade L389–418 ← moved from tests/test_migrations_section36.py
+
TestMigrationIntegration
class
class TestMigrationIntegration L330–378 ← moved from tests/test_migrations_section36.py
+
test_current_revision_tracked_in_alembic_version
method
method test_current_revision_tracked_in_alembic_version L340–350 ← moved from tests/test_migrations_section36.py
+
test_downgrade_then_upgrade_returns_to_head
method
method test_downgrade_then_upgrade_returns_to_head L366–371 ← moved from tests/test_migrations_section36.py
+
test_full_downgrade_to_base_then_re_upgrade
method
method test_full_downgrade_to_base_then_re_upgrade L373–378 ← moved from tests/test_migrations_section36.py
+
test_legacy_tables_absent_at_head
method
method test_legacy_tables_absent_at_head L359–364 ← moved from tests/test_migrations_section36.py
+
test_required_tables_exist_at_head
method
method test_required_tables_exist_at_head L352–357 ← moved from tests/test_migrations_section36.py
+
test_upgrade_to_head_succeeds
method
method test_upgrade_to_head_succeeds L333–338 ← moved from tests/test_migrations_section36.py
+
TestMigrationPerformance
class
class TestMigrationPerformance L713–764 ← moved from tests/test_migrations_section36.py
+
test_index_introspection_under_200ms
method
method test_index_introspection_under_200ms L755–764 ← moved from tests/test_migrations_section36.py
+
test_schema_introspection_under_500ms
method
method test_schema_introspection_under_500ms L746–753 ← moved from tests/test_migrations_section36.py
+
test_single_step_downgrade_under_5_seconds
method
method test_single_step_downgrade_under_5_seconds L727–744 ← moved from tests/test_migrations_section36.py
+
test_single_step_upgrade_under_5_seconds
method
method test_single_step_upgrade_under_5_seconds L716–725 ← moved from tests/test_migrations_section36.py
+
TestMigrationSecurity
class
class TestMigrationSecurity L631–705 ← moved from tests/test_migrations_section36.py
+
test_downgrade_does_not_expose_dropped_columns
method
method test_downgrade_does_not_expose_dropped_columns L660–674 ← moved from tests/test_migrations_section36.py
+
test_legacy_auth_tables_dropped_at_head
method
method test_legacy_auth_tables_dropped_at_head L634–640 ← moved from tests/test_migrations_section36.py
+
test_musehub_auth_keys_has_fingerprint_unique_constraint
method
method test_musehub_auth_keys_has_fingerprint_unique_constraint L642–649 ← moved from tests/test_migrations_section36.py
+
test_musehub_identities_handle_unique
method
method test_musehub_identities_handle_unique L651–658 ← moved from tests/test_migrations_section36.py
+
test_repos_owner_slug_uniqueness_enforced
method
method test_repos_owner_slug_uniqueness_enforced L676–705 ← moved from tests/test_migrations_section36.py
+
TestMigrationStress
class
class TestMigrationStress L464–522 ← moved from tests/test_migrations_section36.py
+
test_100_identity_inserts_survive_step_cycle
method
method test_100_identity_inserts_survive_step_cycle L493–522 ← moved from tests/test_migrations_section36.py
+
test_full_downgrade_completes_under_60_seconds
method
method test_full_downgrade_completes_under_60_seconds L475–483 ← moved from tests/test_migrations_section36.py
+
test_full_upgrade_completes_under_60_seconds
method
method test_full_upgrade_completes_under_60_seconds L467–473 ← moved from tests/test_migrations_section36.py
+
test_three_consecutive_upgrade_to_head_idempotent
method
method test_three_consecutive_upgrade_to_head_idempotent L485–491 ← moved from tests/test_migrations_section36.py
+
TestMigrationUnit
class
class TestMigrationUnit L237–322 ← moved from tests/test_migrations_section36.py
+
test_alembic_ini_points_to_correct_script_location
method
method test_alembic_ini_points_to_correct_script_location L311–317 ← moved from tests/test_migrations_section36.py
+
test_all_42_migrations_present
method
method test_all_42_migrations_present L267–270 ← moved from tests/test_migrations_section36.py
+
test_each_migration_has_upgrade_and_downgrade
method
method test_each_migration_has_upgrade_and_downgrade L294–309 ← moved from tests/test_migrations_section36.py
+
test_env_py_imports_all_model_bases
method
method test_env_py_imports_all_model_bases L319–322 ← moved from tests/test_migrations_section36.py
+
test_head_revision_is_0042
method
method test_head_revision_is_0042 L272–292 ← moved from tests/test_migrations_section36.py
+
test_revision_chain_is_linear
method
method test_revision_chain_is_linear L240–265 ← moved from tests/test_migrations_section36.py
+
_ALL_REVISIONS
variable
variable _ALL_REVISIONS L62–69 ← moved from tests/test_migrations_section36.py
+
_LEGACY_TABLES
variable
variable _LEGACY_TABLES L91–94 ← moved from tests/test_migrations_section36.py
+
_PERF_TEST_DB
variable
variable _PERF_TEST_DB L59–59 ← moved from tests/test_migrations_section36.py
+
_PERF_TEST_URL
variable
variable _PERF_TEST_URL L60–60 ← moved from tests/test_migrations_section36.py
+
_PROJECT_ROOT
variable
variable _PROJECT_ROOT L42–42 ← moved from tests/test_migrations_section36.py
+
_REQUIRED_TABLES
variable
variable _REQUIRED_TABLES L75–88 ← moved from tests/test_migrations_section36.py
+
_columns
function
async_function _columns L173–182 ← moved from tests/test_migrations_section36.py
+
_current_rev
function
function _current_rev L137–147 ← moved from tests/test_migrations_section36.py
+
_indexes_for
function
async_function _indexes_for L161–170 ← moved from tests/test_migrations_section36.py
+
_perf_fresh_db
function
function _perf_fresh_db L200–212 ← moved from tests/test_migrations_section36.py
+
_run_alembic
function
function _run_alembic L100–126 ← moved from tests/test_migrations_section36.py
+
create_async_engine
import
import create_async_engine L38–38 ← moved from tests/test_migrations_section36.py
+
migrated_engine
function
function migrated_engine L219–229 ← moved from tests/test_migrations_section36.py
~
tests/test_protocol_introspection.py
.py
moved from tests/test_protocol_introspection_section42.py
+
test_api_search_rate_limited_on_429
function
async_function test_api_search_rate_limited_on_429 L667–674 ← moved from tests/test_rate_limiting_section4.py
+
test_auth_limit_is_strict
function
function test_auth_limit_is_strict L654–662 ← moved from tests/test_rate_limiting_section4.py
+
test_bot_ua_scrapy_is_blocked_on_write
function
async_function test_bot_ua_scrapy_is_blocked_on_write L753–764 ← moved from tests/test_rate_limiting_section4.py
+
test_bot_ua_sqlmap_is_blocked_on_write
function
async_function test_bot_ua_sqlmap_is_blocked_on_write L777–784 ← moved from tests/test_rate_limiting_section4.py
+
test_bot_ua_wget_is_blocked_on_write
function
async_function test_bot_ua_wget_is_blocked_on_write L767–774 ← moved from tests/test_rate_limiting_section4.py
+
test_global_rate_limit_configured
function
function test_global_rate_limit_configured L640–649 ← moved from tests/test_rate_limiting_section4.py
+
test_healthz_exempt_from_bot_check
function
async_function test_healthz_exempt_from_bot_check L814–818 ← moved from tests/test_rate_limiting_section4.py
+
test_legitimate_browser_ua_passes
function
async_function test_legitimate_browser_ua_passes L796–802 ← moved from tests/test_rate_limiting_section4.py
+
test_missing_ua_post_non_cdn_path_is_blocked
function
async_function test_missing_ua_post_non_cdn_path_is_blocked L787–793 ← moved from tests/test_rate_limiting_section4.py
+
test_muse_cli_ua_passes
function
async_function test_muse_cli_ua_passes L805–811 ← moved from tests/test_rate_limiting_section4.py
+
test_object_download_has_rate_limit_decorator
function
function test_object_download_has_rate_limit_decorator L705–714 ← moved from tests/test_rate_limiting_section4.py
+
test_retry_after_added_to_429
function
function test_retry_after_added_to_429 L719–748 ← moved from tests/test_rate_limiting_section4.py
+
test_search_routes_have_rate_limit_decorator
function
function test_search_routes_have_rate_limit_decorator L677–700 ← moved from tests/test_rate_limiting_section4.py
+
test_webhook_backoff_configured
function
function test_webhook_backoff_configured L833–839 ← moved from tests/test_rate_limiting_section4.py
+
test_webhook_max_attempts_capped
function
function test_webhook_max_attempts_capped L823–830 ← moved from tests/test_rate_limiting_section4.py
~
tests/test_security_hardening.py
.py
moved from tests/test_security_hardening_section82.py; 62 added
+
TestCommitIdForgery
class
class TestCommitIdForgery L370–433 ← moved from tests/test_security_hardening_section8.py
+
test_require_signed_commits_setting_exists
method
method test_require_signed_commits_setting_exists L371–375 ← moved from tests/test_security_hardening_section8.py
+
test_wire_push_enforces_when_setting_true
method
method test_wire_push_enforces_when_setting_true L377–385 ← moved from tests/test_security_hardening_section8.py
+
test_wire_push_rejects_unsigned_when_enforcement_on
method
async_method test_wire_push_rejects_unsigned_when_enforcement_on L387–414 ← moved from tests/test_security_hardening_section8.py
+
test_wire_push_source_has_unsigned_warning_not_rejection
method
method test_wire_push_source_has_unsigned_warning_not_rejection L416–433 ← moved from tests/test_security_hardening_section8.py
+
TestMassAssignment
class
class TestMassAssignment L217–254 ← moved from tests/test_security_hardening_section8.py
+
_route_files
method
method _route_files L218–219 ← moved from tests/test_security_hardening_section8.py
+
test_no_kwargs_splat_from_request_body
method
method test_no_kwargs_splat_from_request_body L221–234 ← moved from tests/test_security_hardening_section8.py
+
test_route_handler_body_params_are_pydantic_or_primitive
method
method test_route_handler_body_params_are_pydantic_or_primitive L236–248 ← moved from tests/test_security_hardening_section8.py
+
test_webhook_create_uses_pydantic_not_raw_dict
method
method test_webhook_create_uses_pydantic_not_raw_dict L250–254 ← moved from tests/test_security_hardening_section8.py
+
TestObjectEnumeration
class
class TestObjectEnumeration L307–363 ← moved from tests/test_security_hardening_section8.py
+
_db_models_src
method
method _db_models_src L308–309 ← moved from tests/test_security_hardening_section8.py
+
test_issue_number_is_per_repo_not_global
method
method test_issue_number_is_per_repo_not_global L334–342 ← moved from tests/test_security_hardening_section8.py
+
test_issue_primary_key_is_uuid_string
method
method test_issue_primary_key_is_uuid_string L326–332 ← moved from tests/test_security_hardening_section8.py
+
test_no_autoincrement_primary_keys_on_main_entities
method
method test_no_autoincrement_primary_keys_on_main_entities L344–363 ← moved from tests/test_security_hardening_section8.py
+
test_repo_primary_key_is_uuid_string
method
method test_repo_primary_key_is_uuid_string L311–324 ← moved from tests/test_security_hardening_section8.py
+
TestRegexDos
class
class TestRegexDos L440–494 ← moved from tests/test_security_hardening_section8.py
+
_search_service_src
method
method _search_service_src L441–442 ← moved from tests/test_security_hardening_section8.py
+
test_global_search_uses_sql_or_python_in
method
method test_global_search_uses_sql_or_python_in L485–494 ← moved from tests/test_security_hardening_section8.py
+
test_no_user_supplied_regex_in_search_routes
method
method test_no_user_supplied_regex_in_search_routes L477–483 ← moved from tests/test_security_hardening_section8.py
+
test_search_by_ask_uses_fixed_tokenizer_not_user_regex
method
method test_search_by_ask_uses_fixed_tokenizer_not_user_regex L462–475 ← moved from tests/test_security_hardening_section8.py
+
test_search_by_pattern_uses_python_in_not_regex
method
method test_search_by_pattern_uses_python_in_not_regex L444–460 ← moved from tests/test_security_hardening_section8.py
+
TestSsrfCheckUrlSafe
class
class TestSsrfCheckUrlSafe L36–92 ← moved from tests/test_security_hardening_section8.py
+
test_empty_string_blocked
method
method test_empty_string_blocked L90–92 ← moved from tests/test_security_hardening_section8.py
+
test_file_scheme_blocked
method
method test_file_scheme_blocked L53–55 ← moved from tests/test_security_hardening_section8.py
+
test_ftp_scheme_blocked
method
method test_ftp_scheme_blocked L49–51 ← moved from tests/test_security_hardening_section8.py
+
test_hostname_with_path_allowed
method
method test_hostname_with_path_allowed L82–84 ← moved from tests/test_security_hardening_section8.py
+
test_http_scheme_blocked
method
method test_http_scheme_blocked L45–47 ← moved from tests/test_security_hardening_section8.py
+
test_https_public_url_allowed
method
method test_https_public_url_allowed L41–43 ← moved from tests/test_security_hardening_section8.py
+
test_link_local_169_254_blocked
method
method test_link_local_169_254_blocked L77–80 ← moved from tests/test_security_hardening_section8.py
+
test_loopback_127_blocked
method
method test_loopback_127_blocked L57–59 ← moved from tests/test_security_hardening_section8.py
+
test_loopback_127_other_blocked
method
method test_loopback_127_other_blocked L61–63 ← moved from tests/test_security_hardening_section8.py
+
test_no_hostname_blocked
method
method test_no_hostname_blocked L86–88 ← moved from tests/test_security_hardening_section8.py
+
test_rfc1918_10_blocked
method
method test_rfc1918_10_blocked L65–67 ← moved from tests/test_security_hardening_section8.py
+
test_rfc1918_172_16_blocked
method
method test_rfc1918_172_16_blocked L69–71 ← moved from tests/test_security_hardening_section8.py
+
test_rfc1918_192_168_blocked
method
method test_rfc1918_192_168_blocked L73–75 ← moved from tests/test_security_hardening_section8.py
+
TestSsrfValidateOutboundUrl
class
class TestSsrfValidateOutboundUrl L99–141 ← moved from tests/test_security_hardening_section8.py
+
test_bare_ip_does_not_do_dns
method
async_method test_bare_ip_does_not_do_dns L134–141 ← moved from tests/test_security_hardening_section8.py
+
test_dns_resolves_to_loopback_blocked
method
async_method test_dns_resolves_to_loopback_blocked L118–124 ← moved from tests/test_security_hardening_section8.py
+
test_dns_resolves_to_private_blocked
method
async_method test_dns_resolves_to_private_blocked L109–116 ← moved from tests/test_security_hardening_section8.py
+
test_public_hostname_allowed
method
async_method test_public_hostname_allowed L100–107 ← moved from tests/test_security_hardening_section8.py
+
test_unresolvable_hostname_blocked
method
async_method test_unresolvable_hostname_blocked L126–132 ← moved from tests/test_security_hardening_section8.py
+
TestTarBomb
class
class TestTarBomb L501–516 ← moved from tests/test_security_hardening_section8.py
+
test_no_archive_extraction_in_codebase
method
method test_no_archive_extraction_in_codebase L502–516 ← moved from tests/test_security_hardening_section8.py
+
TestTimingAttacks
class
class TestTimingAttacks L261–300 ← moved from tests/test_security_hardening_section8.py
+
test_compare_digest_used_not_equal_for_secrets
method
method test_compare_digest_used_not_equal_for_secrets L279–300 ← moved from tests/test_security_hardening_section8.py
+
test_crypto_keys_uses_compare_digest
method
method test_crypto_keys_uses_compare_digest L273–277 ← moved from tests/test_security_hardening_section8.py
+
test_request_signing_uses_cryptographic_verify
method
method test_request_signing_uses_cryptographic_verify L262–271 ← moved from tests/test_security_hardening_section8.py
+
TestWebhookCreateSsrf
class
class TestWebhookCreateSsrf L148–175 ← moved from tests/test_security_hardening_section8.py
+
test_aws_metadata_endpoint_rejected
method
method test_aws_metadata_endpoint_rejected L172–175 ← moved from tests/test_security_hardening_section8.py
+
test_http_rejected_at_model_parse
method
method test_http_rejected_at_model_parse L157–160 ← moved from tests/test_security_hardening_section8.py
+
test_https_public_accepted
method
method test_https_public_accepted L153–155 ← moved from tests/test_security_hardening_section8.py
+
test_loopback_rejected_at_model_parse
method
method test_loopback_rejected_at_model_parse L167–170 ← moved from tests/test_security_hardening_section8.py
+
test_rfc1918_rejected_at_model_parse
method
method test_rfc1918_rejected_at_model_parse L162–165 ← moved from tests/test_security_hardening_section8.py
+
TestWebhookDeliveryDefenseInDepth
class
class TestWebhookDeliveryDefenseInDepth L182–210 ← moved from tests/test_security_hardening_section8.py
+
test_delivery_blocked_when_ssrf_check_fails
method
async_method test_delivery_blocked_when_ssrf_check_fails L183–204 ← moved from tests/test_security_hardening_section8.py
+
test_dispatcher_imports_ssrf_module
method
method test_dispatcher_imports_ssrf_module L206–210 ← moved from tests/test_security_hardening_section8.py
+
_SSRF_MODULE
variable
variable _SSRF_MODULE L25–25 ← moved from tests/test_security_hardening_section8.py
+
_WEBHOOK_MODEL
variable
variable _WEBHOOK_MODEL L26–26 ← moved from tests/test_security_hardening_section8.py
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:1023a5ce87c517287e801d82ad4243278310d0420cd8d628b253ebdff5caa80b --body "your comment"
No comments yet. Be the first to start the discussion.