Opened 3 years ago

Closed 2 years ago

Last modified 2 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 Changed 3 years ago by Tim Graham

Cc: timograham@… added
Easy pickings: set
Needs documentation: unset
Needs tests: unset
Patch needs improvement: unset
Summary: Documentation extensionDocument how to use request.user with RequestFactory
Triage Stage: UnreviewedAccepted
Type: UncategorizedCleanup/optimization

comment:2 Changed 3 years ago by Susan Tan

Owner: changed from nobody to Susan Tan
Status: newassigned

comment:3 Changed 3 years ago by Susan Tan

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

comment:4 Changed 3 years ago by Tim Graham <timograham@…>

Resolution: fixed
Status: assignedclosed

In 067e0424ce8a0e15e2faac3f9f9fabe9b7667c72:

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

Thanks michel@ for the suggestion.

comment:5 Changed 3 years ago by Tim Graham <timograham@…>

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 Changed 3 years ago by Tim Graham <timograham@…>

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 Changed 2 years ago by Nicolas Bouliane

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 Changed 2 years ago by Nicolas Bouliane

Resolution: fixed
Status: closednew

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

Resolution: fixed
Status: newclosed

In a39df37049c6b708924eed1521963929e0694b0c:

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

comment:10 Changed 2 years ago by Tim Graham <timograham@…>

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