59 lines
1.3 KiB
Ruby
59 lines
1.3 KiB
Ruby
|
require File.expand_path('../helper', __FILE__)
|
||
|
|
||
|
class TestUtils < Faraday::TestCase
|
||
|
def setup
|
||
|
@url = "http://example.com/abc"
|
||
|
end
|
||
|
|
||
|
# emulates ActiveSupport::SafeBuffer#gsub
|
||
|
FakeSafeBuffer = Struct.new(:string) do
|
||
|
def to_s() self end
|
||
|
def gsub(regex)
|
||
|
string.gsub(regex) {
|
||
|
match, = $&, '' =~ /a/
|
||
|
yield(match)
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_escaping_safe_buffer
|
||
|
str = FakeSafeBuffer.new('$32,000.00')
|
||
|
assert_equal '%2432%2C000.00', Faraday::Utils.escape(str)
|
||
|
end
|
||
|
|
||
|
def test_parses_with_default
|
||
|
with_default_uri_parser(nil) do
|
||
|
uri = normalize(@url)
|
||
|
assert_equal 'example.com', uri.host
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_parses_with_URI
|
||
|
with_default_uri_parser(::URI) do
|
||
|
uri = normalize(@url)
|
||
|
assert_equal 'example.com', uri.host
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_parses_with_block
|
||
|
with_default_uri_parser(lambda {|u| "booya#{"!" * u.size}" }) do
|
||
|
assert_equal 'booya!!!!!!!!!!!!!!!!!!!!!!', normalize(@url)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def normalize(url)
|
||
|
Faraday::Utils::URI(url)
|
||
|
end
|
||
|
|
||
|
def with_default_uri_parser(parser)
|
||
|
old_parser = Faraday::Utils.default_uri_parser
|
||
|
begin
|
||
|
Faraday::Utils.default_uri_parser = parser
|
||
|
yield
|
||
|
ensure
|
||
|
Faraday::Utils.default_uri_parser = old_parser
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|