From c1eb806bbbdeb11c3ac319545b856482f1df9a7b Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Sun, 16 Jan 2011 17:31:39 +0100 Subject: [PATCH] Treat missing User Agent like an empty User Agent. Fixes #164. --- lib/sinatra/base.rb | 2 +- test/routing_test.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/sinatra/base.rb b/lib/sinatra/base.rb index 0e72e1a1..179b7d0e 100644 --- a/lib/sinatra/base.rb +++ b/lib/sinatra/base.rb @@ -990,7 +990,7 @@ module Sinatra # Will set params[:agent]. def user_agent(pattern) condition do - if request.user_agent =~ pattern + if request.user_agent.to_s =~ pattern @params[:agent] = $~[1..-1] true else diff --git a/test/routing_test.rb b/test/routing_test.rb index 795de34c..0da34306 100644 --- a/test/routing_test.rb +++ b/test/routing_test.rb @@ -611,6 +611,18 @@ class RoutingTest < Test::Unit::TestCase assert_equal 'Hello World', body end + it "treats missing user agent like an empty string" do + mock_app do + user_agent(/.*/) + get '/' do + "Hello World" + end + end + get '/' + assert_equal 200, status + assert_equal 'Hello World', body + end + it "makes captures in user agent pattern available in params[:agent]" do mock_app { user_agent(/Foo (.*)/)