diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-10-11 15:09:59 -0400 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2012-10-11 15:09:59 -0400 |
commit | 18de3b9d5d8fadff635867d1b3cd635c23ff0b51 (patch) | |
tree | e56b83789add18ae1681e17bbbbb2bed3ddd7e67 /askbot/tests/user_views_tests.py | |
parent | 6c1fbbfefed9e3b684821fe8150c7e46e326f129 (diff) | |
download | askbot-18de3b9d5d8fadff635867d1b3cd635c23ff0b51.tar.gz askbot-18de3b9d5d8fadff635867d1b3cd635c23ff0b51.tar.bz2 askbot-18de3b9d5d8fadff635867d1b3cd635c23ff0b51.zip |
made owner_or_moderator_required decorator pass url parameters to the next url
Diffstat (limited to 'askbot/tests/user_views_tests.py')
-rw-r--r-- | askbot/tests/user_views_tests.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/askbot/tests/user_views_tests.py b/askbot/tests/user_views_tests.py new file mode 100644 index 00000000..489cf76a --- /dev/null +++ b/askbot/tests/user_views_tests.py @@ -0,0 +1,39 @@ +from askbot.tests.utils import AskbotTestCase +from askbot.views.users import owner_or_moderator_required +from django.contrib.auth.models import AnonymousUser +from django.core.urlresolvers import reverse +from django.http import HttpResponseRedirect +from mock import Mock +import urllib +import urlparse + +class UserViewsTests(AskbotTestCase): + + def test_owner_or_mod_required_passes_url_parameters(self): + @owner_or_moderator_required + def mock_view(request, user, context): + return None + + request = Mock(spec=('path', 'REQUEST', 'user')) + request.user = AnonymousUser() + request.REQUEST = {'abra': 'cadabra', 'foo': 'bar'} + request.path = '/some/path/' + user = self.create_user('user') + response = mock_view(request, user, {}) + self.assertEqual(isinstance(response, HttpResponseRedirect), True) + + url = response['location'] + parsed_url = urlparse.urlparse(url) + + self.assertEqual(parsed_url.path, reverse('user_signin')) + + next = dict(urlparse.parse_qsl(parsed_url.query))['next'] + next_url = urllib.unquote(next) + parsed_url = urlparse.urlparse(next_url) + + self.assertEqual(parsed_url.path, request.path) + + query = dict(urlparse.parse_qsl(parsed_url.query)) + self.assertEqual(set(query.keys()), set(['foo', 'abra'])) + self.assertEqual(set(query.values()), set(['bar', 'cadabra'])) + self.assertEqual(query['abra'], 'cadabra') |