Example #1
0
    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)
Example #2
0
    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"])
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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