tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_populates_allow_bots[none-none] tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_populates_allow_bots[mentions-mentions] tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_populates_allow_bots[all-all] tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_populates_allow_bots[ Mentions -mentions] tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_allow_bots_defaults_to_none tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_ignores_extra_allow_bots tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_falls_back_to_env_when_extra_missing tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_warns_on_unknown_allow_bots tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_require_mention[None-extra0-True] tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_require_mention[false-extra1-False] tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_require_mention[true-extra2-True] tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_require_mention[true-extra3-False] tests/gateway/test_feishu_bot_admission.py::test_feishu_load_settings_parses_per_group_require_mention tests/gateway/test_feishu_bot_admission.py::test_sender_identity_collects_every_non_empty_id_variant tests/gateway/test_feishu_bot_admission.py::test_sender_identity_handles_missing_sender_id tests/gateway/test_feishu_bot_admission.py::test_is_bot_sender_treats_bot_and_app_as_bot_origin[bot] tests/gateway/test_feishu_bot_admission.py::test_is_bot_sender_treats_bot_and_app_as_bot_origin[app] tests/gateway/test_feishu_bot_admission.py::test_is_bot_sender_rejects_non_bot_origin[user] tests/gateway/test_feishu_bot_admission.py::test_is_bot_sender_rejects_non_bot_origin[] tests/gateway/test_feishu_bot_admission.py::test_is_bot_sender_rejects_non_bot_origin[None] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[self_echo:open_id_under_all_mode] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[self_echo:user_id_only] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[self_echo:mixed_ids] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[self_echo:user_id_when_bot_user_id_set] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[bots_disabled:mode_none] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[bots_disabled:mode_empty] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[bots_disabled:mode_unknown_value] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[bots_disabled:wins_over_self_ids_unknown] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[self_ids_unknown:bot_sender_no_self_ids] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[self_ids_unknown:app_sender_no_self_ids] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[self_ids_unknown:no_sender_ids] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[mentions_mode:not_mentioned_dm] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[mentions_mode:mentioned_dm] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[all_mode:not_mentioned_dm] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[all_mode:mentioned_dm] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[human:dm_admitted_regardless_of_allow_bots] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[human:p2p_admitted] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[require_mention_false:group_human_no_mention_admitted] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[require_mention_false:group_bot_all_mode_admitted] tests/gateway/test_feishu_bot_admission.py::test_admit_pipeline[require_mention_false:group_bot_mentions_mode_still_gated] tests/gateway/test_feishu_bot_admission.py::test_admit_skips_mention_check_under_all_mode tests/gateway/test_feishu_bot_admission.py::test_admit_group_mention_checked_once_per_call tests/gateway/test_feishu_bot_admission.py::test_admit_per_group_require_mention_overrides_global tests/gateway/test_feishu_bot_admission.py::test_hydrate_bot_identity_populates_self_ids_from_bot_v3_info tests/gateway/test_feishu_bot_admission.py::test_resolve_sender_profile_uses_open_id_for_bot_name_lookup tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_matrix[bot:bypasses_default_allowlist] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_matrix[human:gated_by_default_allowlist] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_matrix[bot:admin_short_circuit] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_matrix[human:admin_via_user_id] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_matrix[bot:allowlist_skipped] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_matrix[app:allowlist_skipped] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_channel_locks_apply_to_bots[bot:disabled_policy_blocks_even_with_bypass] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_channel_locks_apply_to_bots[app:disabled_policy_blocks_even_with_bypass] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_channel_locks_apply_to_bots[bot:admin_only_policy_blocks_non_admin] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_channel_locks_apply_to_bots[app:admin_only_policy_blocks_non_admin] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_blacklist_is_human_scope_only[bot] tests/gateway/test_feishu_bot_admission.py::test_allow_group_message_blacklist_is_human_scope_only[app] tests/gateway/test_feishu_bot_admission.py::test_admit_accepts_realistic_bot_at_bot_group_event tests/gateway/test_feishu_bot_admission.py::test_handle_message_event_data_drops_bot_sender_by_default tests/gateway/test_feishu_bot_admission.py::test_handle_message_event_data_forwards_sender_when_admitted