avdi-rack_base_uri 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,9 +13,12 @@ module Rack
13
13
 
14
14
  def call(env)
15
15
  host = env.fetch('HTTP_HOST') {
16
- env['rack.url_scheme'] + '://' + env['SERVER_NAME'] + ':' + env['SERVER_PORT']
16
+ env['SERVER_NAME'] + ':' + env['SERVER_PORT']
17
17
  }
18
18
  base = host + env['SCRIPT_NAME']
19
+ unless base =~ %r[://]
20
+ base = (env['rack.url_scheme'] + '://' + base)
21
+ end
19
22
  result = @app.call(env)
20
23
  headers = result[1]
21
24
  doc = Hpricot(result[2].to_s)
@@ -23,12 +23,13 @@ describe Rack::BaseUri do
23
23
  @app = stub("app", :call => @result)
24
24
  @it = Rack::BaseUri.new(@app)
25
25
  @base = 'http://example.org/subdir'
26
+ @host = 'http://example.org'
26
27
  end
27
28
 
28
29
  def do_request
29
30
  @map = Rack::URLMap.new({@base => @it})
30
31
  @request = Rack::MockRequest.new(@map)
31
- @response = @request.get("/subdir/foo", 'HTTP_HOST' => 'http://example.org')
32
+ @response = @request.get("/subdir/foo", 'HTTP_HOST' => @host)
32
33
  @doc = Hpricot(@response.body)
33
34
  end
34
35
 
@@ -40,6 +41,19 @@ describe Rack::BaseUri do
40
41
  tag.should_not be_nil
41
42
  tag['href'].should == "http://example.org/subdir"
42
43
  end
44
+
45
+ describe "with a HTTP_HOST of example.org" do
46
+ before :each do
47
+ @host = "example.org"
48
+ end
49
+
50
+ it "should ensure base uri starts with URL scheme" do
51
+ do_request
52
+ @response.should be_ok
53
+ tag = @doc.at("head base")
54
+ tag['href'].should == "http://example.org/subdir"
55
+ end
56
+ end
43
57
  end
44
58
  describe "with application/xhtml+xml content type" do
45
59
  before :each do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avdi-rack_base_uri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Avdi Grimm
@@ -69,6 +69,6 @@ rubyforge_project:
69
69
  rubygems_version: 1.2.0
70
70
  signing_key:
71
71
  specification_version: 2
72
- summary: A Rack plugin for automatically setting document base URIs in [X]HTML
72
+ summary: A Rack middleware for automatically setting [X]HTML document base URIs.
73
73
  test_files: []
74
74