require 'uri'

describe "URI::FTP#path=" do
  before :each do
    @url = URI.parse('ftp://example.com')
  end

  ruby_version_is "1.8.6"..."1.8.7" do
    it "does not strip the leading /" do
      @url.path = '/foo'
      @url.path.should == '/foo'
    end
  end

  ruby_version_is "1.8.7"..."1.9" do
    it "requires a leading /" do
      lambda { @url.path = 'foo' }.should raise_error(URI::InvalidComponentError)
    end

    it "strips the leading /" do
      @url.path = '/foo'
      @url.path.should == 'foo'
    end
  end

  ruby_version_is "1.9" do
    it "does not require a leading /" do
      @url.path = 'foo'
      @url.path.should == 'foo'
    end

    it "does not strip the leading /" do
      @url.path = '/foo'
      @url.path.should == '/foo'
    end
  end
end

describe "URI::FTP#path" do
  ruby_version_is "1.8.6"..."1.8.7" do
    it "copies the path section of the URI without modification" do
      url = URI.parse('ftp://example.com/%2Ffoo')

      url.path.should == '/%2Ffoo'
    end
  end

  ruby_version_is "1.8.7" do
    it "unescapes the leading /" do
      url = URI.parse('ftp://example.com/%2Ffoo')

      url.path.should == '/foo'
    end
  end
end
