1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-06-29 08:27:55 +00:00
seahub/tests/api/test_throttings.py

42 lines
1.2 KiB
Python
Raw Normal View History

2017-06-05 10:09:03 +00:00
from mock import patch
2017-06-05 02:02:02 +00:00
import time
from django.core.urlresolvers import reverse
from django.test import override_settings
2017-06-05 10:09:03 +00:00
from seahub.api2.throttling import SimpleRateThrottle
2017-06-05 02:02:02 +00:00
from seahub.test_utils import BaseTestCase
class ThrottingsTest(BaseTestCase):
def setUp(self):
2017-06-05 10:09:03 +00:00
# clear cache between every test case to avoid cache issue in throtting
self.clear_cache()
2017-06-05 02:02:02 +00:00
self.login_as(self.user)
2017-06-05 10:09:03 +00:00
@patch.object(SimpleRateThrottle, 'get_rate')
def test_default(self, mock_get_rate):
mock_get_rate.return_value = '10/minute'
2017-06-05 02:02:02 +00:00
for i in range(12):
res = self.client.get(reverse('api2-pub-repos'))
2017-06-05 10:09:03 +00:00
if i >= 10:
2017-06-05 02:02:02 +00:00
assert res.status_code == 429
2017-06-05 10:09:03 +00:00
else:
assert res.status_code == 200
2017-06-05 02:02:02 +00:00
time.sleep(0.1)
2017-06-05 10:09:03 +00:00
@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):
2017-06-05 02:02:02 +00:00
res = self.client.get(reverse('api2-pub-repos'))
2017-06-05 10:09:03 +00:00
assert res.status_code == 200
time.sleep(0.1)