This repository has been archived by the owner. It is now read-only.

Also allow the SSL port to be specified #7

Merged
merged 1 commit into from Jun 10, 2011
Jump to file or symbol
Failed to load files and symbols.
+16 −0
Split
View
@@ -18,6 +18,7 @@ def initialize(app, options = {})
@exclude = options[:exclude]
@host = options[:host]
+ @port = options[:port]
end
def call(env)
@@ -50,6 +51,7 @@ def redirect_to_https(env)
url = URI(req.url)
url.scheme = "https"
url.host = @host if @host
+ url.port = @port if @port
headers = hsts_headers.merge('Content-Type' => 'text/html',
'Location' => url.to_s)
View
@@ -124,6 +124,20 @@ def test_redirect_to_host
last_response.headers['Location']
end
+ def test_redirect_to_port
+ self.app = Rack::SSL.new(default_app, :port => 8443)
+ get "http://example.org/path?key=value"
+ assert_equal "https://example.org:8443/path?key=value",
+ last_response.headers['Location']
+ end
+
+ def test_redirect_to_host_and_port
+ self.app = Rack::SSL.new(default_app, :host => "ssl.example.org", :port => 8443)
+ get "http://example.org/path?key=value"
+ assert_equal "https://ssl.example.org:8443/path?key=value",
+ last_response.headers['Location']
+ end
+
def test_redirect_to_secure_host_when_on_subdomain
self.app = Rack::SSL.new(default_app, :host => "ssl.example.org")
get "http://ssl.example.org/path?key=value"