Sha256: a965671f0d2f02734f734e16597083cac9a7b3b037dfc2d174a59c455620c4f8

Contents?: true

Size: 1.79 KB

Versions: 2

Compression:

Stored size: 1.79 KB

Contents

require File.expand_path("spec_helper", File.dirname(File.dirname(__FILE__)))

describe "static_path_info plugin" do 
  it "does not modify SCRIPT_NAME/PATH_INFO during routing" do
    app(:bare) do
      plugin :static_path_info
      plugin :pass

      route do |r|
        r.on "foo" do
          r.is "bar" do
            "bar|#{env['SCRIPT_NAME']}|#{env['PATH_INFO']}"
          end
          r.is "baz" do
            r.pass
          end
          "foo|#{env['SCRIPT_NAME']}|#{env['PATH_INFO']}"
        end
        "#{env['SCRIPT_NAME']}|#{env['PATH_INFO']}"
      end
    end

    body.should == '|/'
    body('SCRIPT_NAME'=>'/a').should == '/a|/'
    body('/foo').should == 'foo||/foo'
    body('/foo', 'SCRIPT_NAME'=>'/a').should == 'foo|/a|/foo'
    body('/foo/bar').should == 'bar||/foo/bar'
    body('/foo/bar', 'SCRIPT_NAME'=>'/a').should == 'bar|/a|/foo/bar'
    body('/foo/baz').should == 'foo||/foo/baz'
    body('/foo/baz', 'SCRIPT_NAME'=>'/a').should == 'foo|/a|/foo/baz'
  end

  it "modifies SCRIPT_NAME/PATH_INFO when calling run" do
    a = app{|r| "#{r.script_name}|#{r.path_info}"}
    app(:static_path_info){|r| r.on("a"){r.run a}}
    body("/a/b").should == "/a|/b"
  end

  it "restores SCRIPT_NAME/PATH_INFO before returning from run" do
    a = app{|r| "#{r.script_name}|#{r.path_info}"}
    app(:static_path_info){|r| s = catch(:halt){r.on("a"){r.run a}}; "#{s[2].join}%#{r.script_name}|#{r.path_info}"}
    body("/a/b").should == "/a|/b%|/a/b"
  end
end

describe "static_path_info request.path, .remaining_path, and .matched_path" do
  it "should return the script name and path_info as a string" do
    app(:static_path_info) do |r|
      r.on "foo" do
        "#{r.path}:#{r.matched_path}:#{r.remaining_path}"
      end
    end

    body("/foo/bar").should ==  "/foo/bar:/foo:/bar"
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
roda-2.0.0 spec/plugin/static_path_info_spec.rb
roda-1.3.0 spec/plugin/static_path_info_spec.rb