Opened 11 years ago

Closed 9 years ago

Last modified 9 years ago

#20609 closed Cleanup/optimization (fixed)

Document how to use request.user with RequestFactory

Reported by: michel@… Owned by: Susan Tan
Component: Documentation Version: 1.5
Severity: Normal Keywords:
Cc: timograham@… Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: yes UI/UX: no

Description

I had a lot of problems finding out why I cannot use request.user in my tests while using RequestFactory.

this line in the documentation (https://docs.djangoproject.com/en/1.4/topics/testing/#the-request-factory) seems to say it:

It does not support middleware. Session and authentication attributes must be supplied by the test itself if required for the view to function properly.

But it would be nice to have an example with a user added, like:

class TestCaseWithUser(TestCase):

def setUp(self):

# Every test needs access to the request factory.
self.factory = RequestFactory()
self.client = Client()
self.user_foo = User.objects.create_user('foo', 'foo@…', 'bar')

def tearDown(self):

# Delete those objects that are saved in setup
self.user_foo.delete()

def test_request_user(self):

self.client.login( username='foo', password='bar')
request = self.factory.post('/my/url/', {"somedata": "data"})
# add a user so in the view to test request.user works
request.user = self.user_foo
nt.assert_equal(request.user,self.user_foo)

Change History (10)

comment:1 by Tim Graham, 11 years ago

Cc: timograham@… added
Easy pickings: set
Summary: Documentation extensionDocument how to use request.user with RequestFactory
Triage Stage: UnreviewedAccepted
Type: UncategorizedCleanup/optimization

comment:2 by Susan Tan, 11 years ago

Owner: changed from nobody to Susan Tan
Status: newassigned

comment:3 by Susan Tan, 11 years ago

See https://github.com/django/django/pull/1319/files for PR. I edited the given doc patch. Please code review. Thanks.

comment:4 by Tim Graham <timograham@…>, 11 years ago

Resolution: fixed
Status: assignedclosed

In 067e0424ce8a0e15e2faac3f9f9fabe9b7667c72:

Fixed #20609 -- Documented how to use request.user with RequestFactory

Thanks michel@ for the suggestion.

comment:5 by Tim Graham <timograham@…>, 11 years ago

In 75041d5ea3821912abf8b9d1cd5477228a78cb23:

[1.6.x] Fixed #20609 -- Documented how to use request.user with RequestFactory

Thanks michel@ for the suggestion.

Backport of 067e0424ce from master.

comment:6 by Tim Graham <timograham@…>, 11 years ago

In 583f340d7dd52c6182530fd4ca798d01c4d93609:

[1.5.x] Fixed #20609 -- Documented how to use request.user with RequestFactory

Thanks michel@ for the suggestion.

Backport of 75041d5ea3 from stable/1.5.x.

comment:7 by Nicolas Bouliane, 9 years ago

Patch needs improvement: set

This is not sufficient. This still breaks when you need to test requests where there is no authenticated user.

comment:8 by Nicolas Bouliane, 9 years ago

Resolution: fixed
Status: closednew

comment:9 by Tim Graham <timograham@…>, 9 years ago

Resolution: fixed
Status: newclosed

In a39df37049c6b708924eed1521963929e0694b0c:

Fixed #20609 -- Added instructions for using AnonymousUser with RequestFactory.

comment:10 by Tim Graham <timograham@…>, 9 years ago

In 417923c69ee93f1737517156b13beaefc81f1e0e:

[1.7.x] Fixed #20609 -- Added instructions for using AnonymousUser with RequestFactory.

Backport of a39df37049 from master

Note: See TracTickets for help on using tickets.
Back to Top