[rule]
id = "py-fastapi-depends"
languages = ["python"]
category = "middleware"
confidence = "medium"
description = "FastAPI Depends(...) used as a parameter default (dependency-injection auth gate)"
query = """
[
(typed_default_parameter
value: (call
function: (identifier) @fn_name)) @match
(default_parameter
value: (call
function: (identifier) @fn_name)) @match
]
"""
[rule.predicates.fn_name]
eq = "Depends"
[[rule.tests]]
input = """
def read_items(token: str = Depends(oauth2_scheme)):
pass
"""
expect_match = true
[[rule.tests]]
input = """
def read_items(token = Depends(get_current_user)):
pass
"""
expect_match = true
[[rule.tests]]
input = """
def read_items(token: str = "default"):
pass
"""
expect_match = false
[[rule.tests]]
input = """
def factory(builder = Builder()):
pass
"""
expect_match = false