﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
12571	Test client doesn't set WSGIRequest instance on response	rvdrijst	Unai Zalakain	"When you call {{{get()}}} or {{{post()}}} on the {{{Client}}} instance in a testcase, the returned response contains a {{{request}}} attribute that is a simple {{{dict}}} created by the client to simulate a request. This can be useful, but it is not the request instance that is used in views and middleware.

It would be very useful to have the request instance as seen (and possibly modified) by the view and middleware. This is the {{{WSGIRequest}}} instance created in the {{{ClientHandler}}}, used by the {{{Client}}}. This instance is based on the simple {{{dict}}} that is currently set on the response as the request.

I came across this problem before and worked around it, but now with the new messages framework, a clear usecase presents itself. You cannot get to the messages set by a tested view, simply because the {{{response.request}}} is not the {{{WSGIRequest}}} instance that was used for setting the messages.

A (backwards compatible) solution is to let the {{{ClientHandler}}} add this {{{WSGIRequest}}} instance as an attribute called {{{wsgi_request}}} to the {{{response}}} before it returns it.

Using this solution, you can get to the message storage by doing {{{messages.get_messages(response.wsgi_request)}}}. It can also be useful for testing middleware, decorators and other functionalities that modify the request in any way.

Attached is the extremely simple patch that makes this one-line addition.

"	Bug	closed	Testing framework	dev	Normal	fixed	test client request response WSGIRequest	rvdrijst@…	Ready for checkin	1	0	0	0	0	0
