def test_the_instance_should_be_able_to_unregister_multiple_realms(): rr = RespectfulRequester() realm_tuples = [ ["TEST123", 100, 300], ["TEST234", 200, 600], ["TEST345", 300, 900], ] rr.register_realms(realm_tuples) request_func = lambda: requests.get("http://google.com") rr._perform_request(request_func, realms=["TEST123", "TEST234", "TEST345"]) rr.unregister_realms(["TEST123", "TEST234", "TEST345"]) assert rr.redis.get(rr._realm_redis_key("TEST123")) is None assert not rr.redis.sismember("%s:REALMS" % rr.redis_prefix, "TEST123") assert not len( rr.redis.keys("%s:REQUESTS:%s:*" % (rr.redis_prefix, "TEST123"))) assert rr.redis.get(rr._realm_redis_key("TEST234")) is None assert not rr.redis.sismember("%s:REALMS" % rr.redis_prefix, "TEST234") assert not len( rr.redis.keys("%s:REQUESTS:%s:*" % (rr.redis_prefix, "TEST234"))) assert rr.redis.get(rr._realm_redis_key("TEST345")) is None assert not rr.redis.sismember("%s:REALMS" % rr.redis_prefix, "TEST345") assert not len( rr.redis.keys("%s:REQUESTS:%s:*" % (rr.redis_prefix, "TEST345")))
def test_the_instance_should_be_able_to_unregister_multiple_realms(): rr = RespectfulRequester() realm_tuples = [ ["TEST123", 100, 300], ["TEST234", 200, 600], ["TEST345", 300, 900], ] rr.register_realms(realm_tuples) request_func = lambda: requests.get("http://google.com") rr._perform_request(request_func, realms=["TEST123", "TEST234", "TEST345"]) rr.unregister_realms(["TEST123", "TEST234", "TEST345"]) assert rr.redis.get(rr._realm_redis_key("TEST123")) is None assert not rr.redis.sismember("%s:REALMS" % rr.redis_prefix, "TEST123") assert not len(rr.redis.keys("%s:REQUESTS:%s:*" % (rr.redis_prefix, "TEST123"))) assert rr.redis.get(rr._realm_redis_key("TEST234")) is None assert not rr.redis.sismember("%s:REALMS" % rr.redis_prefix, "TEST234") assert not len(rr.redis.keys("%s:REQUESTS:%s:*" % (rr.redis_prefix, "TEST234"))) assert rr.redis.get(rr._realm_redis_key("TEST345")) is None assert not rr.redis.sismember("%s:REALMS" % rr.redis_prefix, "TEST345") assert not len(rr.redis.keys("%s:REQUESTS:%s:*" % (rr.redis_prefix, "TEST345")))
def test_the_instance_should_return_a_rate_limit_exception_if_the_request_is_not_allowed_on_a_registered_realm(): rr = RespectfulRequester() rr.register_realm("TEST123", max_requests=0, timespan=5) request_func = lambda: requests.get("http://google.com") with pytest.raises(RequestsRespectfulRateLimitedError): rr._perform_request(request_func, "TEST123") rr.unregister_realm("TEST123")
def test_the_instance_should_be_able_to_unregister_a_realm(): rr = RespectfulRequester() rr.register_realm("TEST123", max_requests=100, timespan=300) request_func = lambda: requests.get("http://google.com") rr._perform_request(request_func, "TEST123") rr.unregister_realm("TEST123") assert rr.redis.get(rr._realm_redis_key("TEST123")) is None assert not rr.redis.sismember("%s:REALMS" % rr.redis_prefix, "TEST123") assert not len(rr.redis.keys("%s:REQUESTS:%s:*" % (rr.redis_prefix, "TEST123")))
def test_the_instance_should_be_able_to_determine_the_amount_of_requests_performed_in_a_timespan_for_a_registered_realm(): rr = RespectfulRequester() rr.register_realm("TEST123", max_requests=1000, timespan=5) assert rr._requests_in_timespan("TEST123") == 0 request_func = lambda: requests.get("http://google.com") rr._perform_request(request_func, "TEST123") rr._perform_request(request_func, "TEST123") rr._perform_request(request_func, "TEST123") assert rr._requests_in_timespan("TEST123") == 3 rr.unregister_realm("TEST123")
def test_the_instance_should_perform_the_request_if_it_is_allowed_to_on_a_registered_realm(): rr = RespectfulRequester() rr.register_realm("TEST123", max_requests=1000, timespan=5) request_func = lambda: requests.get("http://google.com") assert type(rr._perform_request(request_func, "TEST123")) == requests.Response rr.unregister_realm("TEST123")