From 63d086ea11a0d7f713086a48e1c9da38aa300c6a Mon Sep 17 00:00:00 2001 From: markotibold Date: Fri, 10 Jun 2011 23:53:32 +0200 Subject: [PATCH] added some throttling tetst. Can't get per-user-throttling testing to work though. :( any help? --- djangorestframework/tests/throttling.py | 54 +++++++++++++++++-------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/djangorestframework/tests/throttling.py b/djangorestframework/tests/throttling.py index a8f08b184..189f33539 100644 --- a/djangorestframework/tests/throttling.py +++ b/djangorestframework/tests/throttling.py @@ -1,6 +1,9 @@ +import time + from django.conf.urls.defaults import patterns from django.test import TestCase from django.utils import simplejson as json +from django.contrib.auth.models import User from djangorestframework.compat import RequestFactory from djangorestframework.views import View @@ -18,21 +21,38 @@ urlpatterns = patterns('', (r'^$', MockView.as_view()), ) +class ThrottlingTests(TestCase): + urls = 'djangorestframework.tests.throttling' + + def setUp(self): + time.sleep(1) # make sure throttle is expired before next test + + def test_requests_are_throttled(self): + """Ensure request rate is limited""" + for dummy in range(3): + response = self.client.get('/') + response = self.client.get('/') + self.assertEqual(503, response.status_code) + + def DISABLEDtest_request_throttling_is_per_user(self): + #Can not login user.....Dunno why... + """Ensure request rate is only limited per user, not globally""" + User.objects.create_user('testuser', 'test', 'foo@bar.baz').save() + User.objects.create_user('another_testuser', 'test', 'foo@bar.baz').save() -#class ThrottlingTests(TestCase): -# """Basic authentication""" -# urls = 'djangorestframework.tests.throttling' -# -# def test_requests_are_throttled(self): -# """Ensure request rate is limited""" -# for dummy in range(3): -# response = self.client.get('/') -# response = self.client.get('/') -# -# def test_request_throttling_is_per_user(self): -# """Ensure request rate is only limited per user, not globally""" -# pass -# -# def test_request_throttling_expires(self): -# """Ensure request rate is limited for a limited duration only""" -# pass + self.assertTrue(self.client.login(username='testuser', password='test')) + for dummy in range(3): + response = self.client.get('/') + self.client.logout() + self.assertTrue(self.client.login(username='another_testuser', password='test')) + self.assertEqual(200, response.status_code) + + def test_request_throttling_expires(self): + """Ensure request rate is limited for a limited duration only""" + for dummy in range(3): + response = self.client.get('/') + response = self.client.get('/') + self.assertEqual(503, response.status_code) + time.sleep(1) + response = self.client.get('/') + self.assertEqual(200, response.status_code)