Exemplo n.º 1
0
    def test_should_execute_before_every_request_when_initializes_app(self):
        mock_rule = MockRule(should_execute=True)
        http_limit = HttpLimit(None, self.mock_uid_provider, [mock_rule])
        http_limit.init_app(self.app)

        client = self.app.test_client()
        response = client.get("/")

        response.status_code | should.be.equal.to(HTTPStatus.OK)
        mock_rule.apply_called | should.be.true
        self.mock_uid_provider.get_uid_called | should.be.true
Exemplo n.º 2
0
    def test_should_return_error_status_code_when_limit_exceded(self):
        status_code = 400
        mock_rule = MockRule(should_execute=False, status_code=status_code)
        http_limit = HttpLimit(None, self.mock_uid_provider, [mock_rule])
        http_limit.init_app(self.app)

        client = self.app.test_client()
        response = client.get("/")

        response.status_code | should.be.equal.to(status_code)
        mock_rule.apply_called | should.be.true
        self.mock_uid_provider.get_uid_called | should.be.true
Exemplo n.º 3
0
    def test_should_ignore_rules_when_filters_do_not_match(self):
        mock_rule = MockRule(should_execute=True)
        mock_filter = MockFilter(ignore=True)
        http_limit = HttpLimit(None,
                               self.mock_uid_provider, [mock_rule],
                               filters=[mock_filter])
        http_limit.init_app(self.app)

        client = self.app.test_client()
        response = client.get("/")

        response.status_code | should.be.equal.to(HTTPStatus.OK)
        mock_filter.ignore_called | should.be.true
        mock_rule.apply_called | should.be.false
Exemplo n.º 4
0
 def init_http_limit(self, app):
     limit_by_time_rule = LimitByTimeRule(self.redis_client,
                                          self.time_limit,
                                          self.request_limit,
                                          logger=self.logger)
     ip_resolver = IpResolver(logger=self.logger)
     ip_uid_provider = IpUidProvider(ip_resolver, logger=self.logger)
     http_limit = HttpLimit(app,
                            ip_uid_provider, [limit_by_time_rule],
                            logger=self.logger)
Exemplo n.º 5
0
    def test_should_execute_before_every_request_when_app_in_constructor(self):
        mock_rule = MockRule(should_execute=True)
        HttpLimit(self.app, self.mock_uid_provider, [mock_rule])

        client = self.app.test_client()
        response = client.get("/")

        response.status_code | should.be.equal.to(HTTPStatus.OK)
        mock_rule.apply_called | should.be.true
        self.mock_uid_provider.get_uid_called | should.be.true
Exemplo n.º 6
0
 def init_http_limit(self, app):
     limit_by_time_rule = LimitByTimeRule(self.redis_client,
                                          self.time_limit,
                                          self.request_limit,
                                          logger=self.logger)
     ip_resolver = IpResolver(logger=self.logger)
     ip_uid_provider = IpUidProvider(ip_resolver, logger=self.logger)
     ip_filter = IpFilter(ip_resolver, ips=["127.0.0.1"])
     route_filter = RouteFilter("test", logger=self.logger)
     http_limit = HttpLimit(app,
                            ip_uid_provider, [limit_by_time_rule],
                            filters=[ip_filter, route_filter],
                            logger=self.logger)