from pyMCPBroker.filters import filter_names, is_allowed def test_filter_allow_then_deny() -> None: patterns = ["get_*", "list_*", "!get_secret*"] assert is_allowed("get_file", patterns) assert is_allowed("list_repos", patterns) assert not is_allowed("get_secret_token", patterns) assert not is_allowed("delete_file", patterns) assert filter_names(["get_file", "get_secret_token", "delete_file"], patterns) == ["get_file"] def test_filter_deny_only_starts_from_all_allowed() -> None: patterns = ["!delete_*"] assert is_allowed("get_file", patterns) assert not is_allowed("delete_file", patterns)