def test_override_rate_limit(self): """Override one or more of the default rate limits""" class TestEndpoint(Endpoint): rate_limits = { "GET": { RateLimitCategory.IP: RateLimit(100, 5) }, "POST": { RateLimitCategory.USER: RateLimit(20, 4) }, } assert get_rate_limit_value("GET", TestEndpoint, "ip") == RateLimit(100, 5) # get is not overriddent for user, hence we use the default assert get_rate_limit_value( "GET", TestEndpoint, "user") == get_default_rate_limits_for_group( "default", category=RateLimitCategory.USER) # get is not overriddent for IP, hence we use the default assert get_rate_limit_value("POST", TestEndpoint, "ip") == get_default_rate_limits_for_group( "default", category=RateLimitCategory.IP) assert get_rate_limit_value("POST", TestEndpoint, "user") == RateLimit(20, 4)
def test_default_rate_limit_values(self): """Ensure that the default rate limits are called for endpoints without overrides""" class TestEndpoint(Endpoint): pass assert (get_rate_limit_value( "GET", TestEndpoint, "ip") == settings.SENTRY_RATELIMITER_DEFAULTS["ip"]) assert (get_rate_limit_value( "POST", TestEndpoint, "org") == settings.SENTRY_RATELIMITER_DEFAULTS["org"]) assert (get_rate_limit_value( "DELETE", TestEndpoint, "user") == settings.SENTRY_RATELIMITER_DEFAULTS["user"])
def test_default_rate_limit_values(self): """Ensure that the default rate limits are called for endpoints without overrides""" class TestEndpoint(Endpoint): pass assert get_rate_limit_value("GET", TestEndpoint, "ip") == get_default_rate_limits_for_group( "default", RateLimitCategory.IP ) assert get_rate_limit_value( "POST", TestEndpoint, "org" ) == get_default_rate_limits_for_group("default", RateLimitCategory.ORGANIZATION) assert get_rate_limit_value( "DELETE", TestEndpoint, "user" ) == get_default_rate_limits_for_group("default", RateLimitCategory.USER)
def test_override_rate_limit(self): """Override one or more of the default rate limits""" class TestEndpoint(Endpoint): rate_limits = { "GET": { RateLimitCategory.IP: RateLimit(100, 5) }, "POST": { RateLimitCategory.USER: RateLimit(20, 4) }, } assert get_rate_limit_value("GET", TestEndpoint, "ip") == RateLimit(100, 5) assert (get_rate_limit_value( "GET", TestEndpoint, "user") == settings.SENTRY_RATELIMITER_DEFAULTS["user"]) assert (get_rate_limit_value( "POST", TestEndpoint, "ip") == settings.SENTRY_RATELIMITER_DEFAULTS["ip"]) assert get_rate_limit_value("POST", TestEndpoint, "user") == RateLimit(20, 4)
def test_non_endpoint(self): """views that don't inherit Endpoint shouldn not return a value""" class TestEndpoint: pass assert get_rate_limit_value("GET", TestEndpoint, "ip") is None