Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added paremeter user to MockHttpRequest. Added tests for http module. #12

Merged
merged 2 commits into from Mar 29, 2013
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,3 +3,4 @@
*.egg-info/
/dist
/build
*~
5 changes: 4 additions & 1 deletion mock_django/http.py
Expand Up @@ -40,7 +40,7 @@ def _set_raw_post_data(self, data):
raw_post_data = property(_get_raw_post_data, _set_raw_post_data)


def MockHttpRequest(path='/', method='GET', GET=None, POST=None, META=None):
def MockHttpRequest(path='/', method='GET', GET=None, POST=None, META=None, user=AnonymousUser):
if GET is None:
GET = {}
if POST is None:
Expand All @@ -54,11 +54,14 @@ def MockHttpRequest(path='/', method='GET', GET=None, POST=None, META=None):
'HTTP_REFERER': '',
'SERVER_NAME': 'testserver',
}
if user is not None:
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably makes more sense to set it to AnonymousUser() here :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing it from WsgiHttpRequest? I don't wanted to change the WsgiHttpRequest code. If it's safe I can doit.

user = user()
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't you want to be able to pass a user instance?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it's better a instance. I'm going to change it.


request = WsgiHttpRequest()
request.path = request.path_info = path
request.method = method
request.META = META
request.GET = GET
request.POST = POST
request.user = user
return request
Empty file.
78 changes: 78 additions & 0 deletions tests/mock_django/http/tests.py
@@ -0,0 +1,78 @@
from unittest2 import TestCase
from urllib import urlencode

from django.contrib.auth.models import AnonymousUser
from django.utils.datastructures import MergeDict

from mock import Mock

from mock_django.http import MockHttpRequest
from mock_django.http import WsgiHttpRequest


class WsgiHttpRequestTest(TestCase):
def test_instance(self):
wsgi_r = WsgiHttpRequest()

self.assertTrue(isinstance(wsgi_r.user, AnonymousUser))
self.assertEqual({}, wsgi_r.session)
self.assertEqual({}, wsgi_r.META)
self.assertEqual({}, wsgi_r.GET)
self.assertEqual({}, wsgi_r.POST)

def test__get_request(self):
wsgi_r = WsgiHttpRequest()
expected_items = MergeDict({}, {}).items()

wsgi_r.GET = {}
wsgi_r.POST = {}

self.assertListEqual(sorted(expected_items),
sorted(wsgi_r._get_request().items()))

def test_REQUEST_property(self):
self.assertTrue(isinstance(WsgiHttpRequest.REQUEST, property))

def test__get_raw_post_data(self):
wsgi_r = WsgiHttpRequest()

wsgi_r._get_raw_post_data()

self.assertEqual(urlencode({}), wsgi_r._raw_post_data)

def test__set_raw_post_data(self):
wsgi_r = WsgiHttpRequest()

wsgi_r._set_raw_post_data('')

self.assertEqual({}, wsgi_r.POST)
self.assertEqual(urlencode({}), wsgi_r._raw_post_data)

def test_raw_post_data_property(self):
self.assertTrue(isinstance(WsgiHttpRequest.raw_post_data, property))


class MockHttpRequestTest(TestCase):
def test_call(self):
result = MockHttpRequest()
meta = {
'REMOTE_ADDR': '127.0.0.1',
'SERVER_PORT': '8000',
'HTTP_REFERER': '',
'SERVER_NAME': 'testserver',
}

self.assertTrue(isinstance(result, WsgiHttpRequest))
self.assertEqual('/', result.path)
self.assertEqual('GET', result.method)
self.assertEqual(meta, result.META)
self.assertEqual({}, result.GET)
self.assertEqual({}, result.POST)
self.assertTrue(isinstance(result.user, AnonymousUser))

def test_call(self):
mock_user = Mock()

result = MockHttpRequest(user=mock_user)

self.assertTrue(isinstance(result.user, Mock))