diff options
Diffstat (limited to 'actionpack')
| -rw-r--r-- | actionpack/lib/action_controller/metal/force_ssl.rb | 7 | ||||
| -rw-r--r-- | actionpack/test/controller/force_ssl_test.rb | 22 | 
2 files changed, 26 insertions, 3 deletions
| diff --git a/actionpack/lib/action_controller/metal/force_ssl.rb b/actionpack/lib/action_controller/metal/force_ssl.rb index ed693c5967..0fd42f9d8a 100644 --- a/actionpack/lib/action_controller/metal/force_ssl.rb +++ b/actionpack/lib/action_controller/metal/force_ssl.rb @@ -24,12 +24,15 @@ module ActionController        # * <tt>only</tt>   - The callback should be run only for this action        # * <tt>except<tt>  - The callback should be run for all actions except this action        def force_ssl(options = {}) +        host = options.delete(:host)          before_filter(options) do            if !request.ssl? && !Rails.env.development? -            redirect_to :protocol => 'https://', :status => :moved_permanently +            redirect_options = {:protocol => 'https://', :status => :moved_permanently} +            redirect_options.merge!(:host => host) if host +            redirect_to redirect_options            end          end        end      end    end -end
\ No newline at end of file +end diff --git a/actionpack/test/controller/force_ssl_test.rb b/actionpack/test/controller/force_ssl_test.rb index 3e723e20d9..43b20fdead 100644 --- a/actionpack/test/controller/force_ssl_test.rb +++ b/actionpack/test/controller/force_ssl_test.rb @@ -14,6 +14,10 @@ class ForceSSLControllerLevel < ForceSSLController    force_ssl  end +class ForceSSLCustomDomain < ForceSSLController +  force_ssl :host => "secure.test.host" +end +  class ForceSSLOnlyAction < ForceSSLController    force_ssl :only => :cheeseburger  end @@ -38,6 +42,22 @@ class ForceSSLControllerLevelTest < ActionController::TestCase    end  end +class ForceSSLCustomDomainTest < ActionController::TestCase +  tests ForceSSLCustomDomain + +  def test_banana_redirects_to_https_with_custom_host +    get :banana +    assert_response 301 +    assert_equal "https://secure.test.host/force_ssl_custom_domain/banana", redirect_to_url +  end +   +  def test_cheeseburger_redirects_to_https_with_custom_host +    get :cheeseburger +    assert_response 301 +    assert_equal "https://secure.test.host/force_ssl_custom_domain/cheeseburger", redirect_to_url +  end +end +  class ForceSSLOnlyActionTest < ActionController::TestCase    tests ForceSSLOnlyAction @@ -80,4 +100,4 @@ class ForceSSLExcludeDevelopmentTest < ActionController::TestCase      get :banana      assert_response 200    end -end
\ No newline at end of file +end | 
