mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
44 lines
2.0 KiB
Python
44 lines
2.0 KiB
Python
from unittest import TestCase, mock
|
|
|
|
from sentry.ratelimits.config import RateLimitConfig, get_default_rate_limits_for_group
|
|
from sentry.types.ratelimit import RateLimit, RateLimitCategory
|
|
|
|
|
|
class TestRateLimitConfig(TestCase):
|
|
@mock.patch(
|
|
"sentry.ratelimits.config._get_group_defaults",
|
|
return_value={"blz": {RateLimitCategory.ORGANIZATION: RateLimit(420, 69)}},
|
|
)
|
|
def test_grouping(self, *m):
|
|
config = RateLimitConfig(group="blz")
|
|
assert config.get_rate_limit("GET", RateLimitCategory.ORGANIZATION) == RateLimit(420, 69)
|
|
|
|
def test_defaults(self):
|
|
config = RateLimitConfig()
|
|
for c in RateLimitCategory:
|
|
for method in ("POST", "GET", "PUT", "DELETE"):
|
|
assert isinstance(config.get_rate_limit(method, c), RateLimit)
|
|
|
|
def test_override(self):
|
|
config = RateLimitConfig(
|
|
group="default", limit_overrides={"GET": {RateLimitCategory.IP: RateLimit(1, 1)}}
|
|
)
|
|
assert config.get_rate_limit("GET", RateLimitCategory.IP) == RateLimit(1, 1)
|
|
assert config.get_rate_limit(
|
|
"POST", RateLimitCategory.IP
|
|
) == get_default_rate_limits_for_group("default", RateLimitCategory.IP)
|
|
assert config.get_rate_limit(
|
|
"GET", RateLimitCategory.ORGANIZATION
|
|
) == get_default_rate_limits_for_group("default", RateLimitCategory.ORGANIZATION)
|
|
|
|
def test_backwards_compatibility(self):
|
|
override_dict = {"GET": {RateLimitCategory.IP: RateLimit(1, 1)}}
|
|
assert RateLimitConfig.from_rate_limit_override_dict(override_dict) == RateLimitConfig(
|
|
group="default", limit_overrides=override_dict
|
|
)
|
|
|
|
def test_invalid_config(self):
|
|
config = RateLimitConfig(group="default", limit_overrides={"GET": {"invalid": "invalid"}}) # type: ignore
|
|
ret = config.get_rate_limit("bloop", "badcategory") # type: ignore[arg-type]
|
|
assert ret == get_default_rate_limits_for_group("default", RateLimitCategory.ORGANIZATION)
|