This one had me frustrated for the past hour. I've been writing integration tests for a Rails project and got stuck on an error when I was trying to test that a file upload worked successfully and asserted a redirection was occuring correctly, but ran into the following error:
Expected response to be a <:redirect>, but was <500>
<"No HTTP_REFERER was set in the request to this action, so
redirect_to :back could not be called successfully. If this
is a test, make sure to specify
request.env[\"HTTP_REFERER\"].">
What a lovely error message to send me on a goose chase trying to set HTTP_REFERER directly on the @request as instructed.
Did Not Work
@request.env["HTTP_REFERER"] = '/'
post upload_path, { :file => fixture_file_upload("worddoc.docx", "application/msword") },
{ :html => {:multipart => true} }
assert_redirected_to '/', 'index'
This continued to spit out the same error. I finally stumbled across a post back from 2006 that held the answer. The HTTP_REFERER is not set the same way in an integration test:
Success!
post upload_path, { :file => fixture_file_upload("worddoc.docx", "application/msword") },
{ :html => {:multipart => true}, :referer => '/' }
assert_redirected_to '/', 'index'
Hope that saves anyone else some time if you encounter this error.