Unit Test: Mocking the User-Agent


Im trying to test the following method:

def notice
65 userAgent = request.env['HTTP_USER_AGENT']
67 if userAgent.index('MSIE 7.0;') != nil
68 @ie7 = true
69 elsif userAgent.index('MSIE 6.0;') != nil
70 @ie6 = true
71 end
73 if (@ie6)
74 render :action=> "notice", :layout => false
75 else
76 redirect_to :controller => "home", :action => "index"
77 end
78 end

the problem im having is that i cant seem to find a way of setting the
user agent before it goes into the method and checks the type of browser
being used.

im sure this is something trivial involving a mock but its just proving
to be a bit illusive to me :frowning:


If you're in a functional test and have a TestRequest object named
@request, you could do this:

    @request.env["User-Agent"] = "whutever" # I think that header
name is right...

You can set arbitrary headers like that.


Hi Jeremy,

thanks for the reply.

How exactly do i build a testRequest? ive never come across such a


You need to read up on Rails' functional testing. Google has a lot of
good resources! :slight_smile: