mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-12 12:22:13 +00:00
[tests] Fix tests
This commit is contained in:
parent
e26d5b6aa8
commit
c99d3b4035
@ -71,6 +71,9 @@ class SimpleRateThrottle(BaseThrottle):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
if not getattr(self, 'rate', None):
|
if not getattr(self, 'rate', None):
|
||||||
self.rate = self.get_rate()
|
self.rate = self.get_rate()
|
||||||
|
print '000000000', self.THROTTLE_RATES
|
||||||
|
# print '-------', self.rate
|
||||||
|
# assert False
|
||||||
self.num_requests, self.duration = self.parse_rate(self.rate)
|
self.num_requests, self.duration = self.parse_rate(self.rate)
|
||||||
|
|
||||||
def get_cache_key(self, request, view):
|
def get_cache_key(self, request, view):
|
||||||
@ -116,13 +119,13 @@ class SimpleRateThrottle(BaseThrottle):
|
|||||||
On success calls `throttle_success`.
|
On success calls `throttle_success`.
|
||||||
On failure calls `throttle_failure`.
|
On failure calls `throttle_failure`.
|
||||||
"""
|
"""
|
||||||
|
print '-------', self.num_requests
|
||||||
if self.rate is None:
|
if self.rate is None:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if get_remote_ip(request) in \
|
if get_remote_ip(request) in settings.REST_FRAMEWORK_THROTTING_WHITELIST:
|
||||||
settings.REST_FRAMEWORK_THROTTING_WHITELIST:
|
|
||||||
return True
|
return True
|
||||||
else:
|
|
||||||
self.key = self.get_cache_key(request, view)
|
self.key = self.get_cache_key(request, view)
|
||||||
if self.key is None:
|
if self.key is None:
|
||||||
return True
|
return True
|
||||||
|
@ -1,30 +1,41 @@
|
|||||||
|
from mock import patch
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.conf import settings
|
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
|
|
||||||
|
from seahub.api2.throttling import SimpleRateThrottle
|
||||||
from seahub.test_utils import BaseTestCase
|
from seahub.test_utils import BaseTestCase
|
||||||
|
|
||||||
|
|
||||||
@override_settings(REST_FRAMEWORK = {'DEFAULT_THROTTLE_RATES':
|
|
||||||
{'ping': '600/minute', 'anon': '5000/minute', 'user': '10/minute',},})
|
|
||||||
class ThrottingsTest(BaseTestCase):
|
class ThrottingsTest(BaseTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
# clear cache between every test case to avoid cache issue in throtting
|
||||||
|
self.clear_cache()
|
||||||
|
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
def test_whitelist(self):
|
@patch.object(SimpleRateThrottle, 'get_rate')
|
||||||
WHITELIST = settings.REST_FRAMEWORK_THROTTING_WHITELIST
|
def test_default(self, mock_get_rate):
|
||||||
|
mock_get_rate.return_value = '10/minute'
|
||||||
|
|
||||||
for i in range(12):
|
for i in range(12):
|
||||||
time.sleep(0.1)
|
|
||||||
res = self.client.get(reverse('api2-pub-repos'))
|
res = self.client.get(reverse('api2-pub-repos'))
|
||||||
if i > 10:
|
if i >= 10:
|
||||||
assert res.status_code == 429
|
assert res.status_code == 429
|
||||||
WHITELIST.append('127.0.0.1')
|
else:
|
||||||
count = 0
|
|
||||||
for i in range(12):
|
|
||||||
time.sleep(0.1)
|
|
||||||
res = self.client.get(reverse('api2-pub-repos'))
|
|
||||||
if i > 10:
|
|
||||||
assert res.status_code == 200
|
assert res.status_code == 200
|
||||||
|
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
@override_settings(REST_FRAMEWORK_THROTTING_WHITELIST=['127.0.0.1'])
|
||||||
|
@patch.object(SimpleRateThrottle, 'get_rate')
|
||||||
|
def test_whitelist(self, mock_get_rate):
|
||||||
|
mock_get_rate.return_value = '10/minute'
|
||||||
|
|
||||||
|
for i in range(12):
|
||||||
|
res = self.client.get(reverse('api2-pub-repos'))
|
||||||
|
assert res.status_code == 200
|
||||||
|
|
||||||
|
time.sleep(0.1)
|
||||||
|
Loading…
Reference in New Issue
Block a user