diff options
Diffstat (limited to 'test/uri')
-rw-r--r-- | test/uri/test_file.rb | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/test/uri/test_file.rb b/test/uri/test_file.rb new file mode 100644 index 0000000000..7e542b652d --- /dev/null +++ b/test/uri/test_file.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: false +require 'test/unit' +require 'uri/file' + +class URI::TestFile < Test::Unit::TestCase + def test_parse + u = URI("file://example.com/file") + assert_equal "/file", u.path + + u = URI("file://localhost/file") + assert_equal "/file", u.path + assert_equal "file:///file", u.to_s + + u = URI("file://localhost:30/file") + assert_equal "", u.host + assert_equal nil, u.port + assert_equal "/file", u.path + assert_equal "file:///file", u.to_s + + u = URI("file:///file") + assert_equal "/file", u.path + assert_equal "file:///file", u.to_s + + u = URI("file:/file") + assert_equal "/file", u.path + assert_equal "file:///file", u.to_s + + u = URI("file://foo:pass@example.com/file") + assert_equal "/file", u.path + assert_equal nil, u.user + assert_equal nil, u.password + + u = URI("file:///c:/path/to/file") + assert_equal "/c:/path/to/file", u.path + + # this form is not supported + u = URI("file:c:/path/to/file") + assert_equal "c:/path/to/file", u.opaque + + end + + def test_build + u = URI::File.build(scheme: "file", host: "example.com", path:"/file") + assert_equal "/file", u.path + assert_equal "file://example.com/file", u.to_s + assert_raise(URI::InvalidURIError){ u.user = "foo" } + assert_raise(URI::InvalidURIError){ u.password = "foo" } + assert_raise(URI::InvalidURIError){ u.userinfo = "foo" } + assert_raise(URI::InvalidURIError){ URI::File.build(scheme: "file", userinfo: "foo", host: "example.com", path:"/file") } + + u = URI::File.build(scheme: "file", path:"/file") + assert_equal "", u.host + assert_equal "/file", u.path + assert_equal "file:///file", u.to_s + + u = URI::File.build(scheme: "file", host: "localhost", path:"/file") + assert_equal "", u.host + assert_equal "/file", u.path + assert_equal "file:///file", u.to_s + + u = URI::File.build(scheme: "file", path:"/file", port: 30) + assert_equal "", u.host + assert_equal nil, u.port + assert_equal "/file", u.path + assert_equal "file:///file", u.to_s + end +end |