1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
|
# frozen_string_literal: true
require 'minitest/autorun'
require 'sprockets/uri_utils'
class TestURIUtils < Minitest::Test
include Sprockets::URIUtils
DOSISH = File::ALT_SEPARATOR != nil
DOSISH_DRIVE_LETTER = File.dirname("A:") == "A:."
DOSISH_UNC = File.dirname("//") == "//"
def test_split_uri
parts = split_uri("https://josh:Passw0rd1@github.com:433/sstephenson/sprockets/issues?author=josh#issue1")
assert_equal ["https", "josh:Passw0rd1", "github.com", "433", nil, "/sstephenson/sprockets/issues", nil, "author=josh", "issue1"], parts
end
def test_join_uri
assert_equal "https://josh:Passw0rd1@github.com:433/sstephenson/sprockets/issues?author=josh#issue1",
join_uri("https", "josh:Passw0rd1", "github.com", "433", nil, "/sstephenson/sprockets/issues", nil, "author=josh", "issue1")
end
def test_inverse_uri_functions
[
"http://github.com",
"http://github.com:8080",
"https://github.com/",
"https://github.com/home",
"https://github.com#logo",
"https://josh:Passw0rd1@github.com:433/sstephenson/sprockets/issues?author=josh#issue1",
"urn:md5:68b329da9893e34099c7d8ad5cb9c940",
].each do |uri|
assert parts = split_uri(uri)
assert_equal uri, join_uri(*parts)
end
end
def test_split_file_uri
parts = split_file_uri("file://localhost/etc/fstab")
assert_equal ['file', 'localhost', '/etc/fstab', nil], parts
parts = split_file_uri("file:///etc/fstab")
assert_equal ['file', '', '/etc/fstab', nil], parts
parts = split_file_uri("file:///usr/local/bin/ruby%20on%20rails")
assert_equal ['file', '', '/usr/local/bin/ruby on rails', nil], parts
parts = split_file_uri("file:///usr/local/var/github/app/assets/javascripts/application.js")
assert_equal ['file', '', '/usr/local/var/github/app/assets/javascripts/application.js', nil], parts
if DOSISH
parts = split_file_uri("file:///C:/Documents%20and%20Settings/davris/FileSchemeURIs.doc")
assert_equal ['file', '', 'C:/Documents and Settings/davris/FileSchemeURIs.doc', nil], parts
parts = split_file_uri("file:///D:/Program%20Files/Viewer/startup.htm")
assert_equal ['file', '', 'D:/Program Files/Viewer/startup.htm', nil], parts
parts = split_file_uri("file:///C:/Program%20Files/Music/Web%20Sys/main.html?REQUEST=RADIO")
assert_equal ['file', '', 'C:/Program Files/Music/Web Sys/main.html', 'REQUEST=RADIO'], parts
end
end
def test_join_uri_path
assert_equal "file://localhost/etc/fstab",
join_file_uri('file', 'localhost', '/etc/fstab', nil)
assert_equal "file:///etc/fstab",
join_file_uri('file', nil, '/etc/fstab', nil)
assert_equal "file:///usr/local/bin/ruby%20on%20rails",
join_file_uri('file', nil, '/usr/local/bin/ruby on rails', nil)
end
def test_inverse_file_uri_functions
uris = [
"file://localhost/etc/fstab",
"file:///etc/fstab",
"file:///usr/local/bin/ruby%20on%20rails",
"file:///usr/local/var/github/app/assets/javascripts/application.js",
"file:///usr/local/var/github/app/assets/javascripts/application.coffee?type=application/javascript"
]
if DOSISH
uris.concat([
"file:///C:/Documents%20and%20Settings/davris/FileSchemeURIs.doc",
"file:///D:/Program%20Files/Viewer/startup.htm"
])
end
uris.each do |uri|
assert parts = split_file_uri(uri)
assert_equal uri, join_file_uri(*parts)
end
end
def test_validate
assert valid_asset_uri?("file:///usr/local/var/github/app/assets/javascripts/application.js")
if DOSISH
assert valid_asset_uri?("file:///C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js")
end
refute valid_asset_uri?("http:///usr/local/var/github/app/assets/javascripts/application.js")
refute valid_asset_uri?("/usr/local/var/github/app/assets/javascripts/application.js")
end
def test_validate_with_invalid_uri_error
refute valid_asset_uri?("file:///[]")
end
def test_parse_file_paths
assert_equal ["/usr/local/var/github/app/assets/javascripts/application.js", {}],
parse_asset_uri("file:///usr/local/var/github/app/assets/javascripts/application.js")
assert_equal ["/usr/local/var/github/app/assets/javascripts/foo bar.js", {}],
parse_asset_uri("file:///usr/local/var/github/app/assets/javascripts/foo%20bar.js")
if DOSISH
assert_equal ["C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js", {}],
parse_asset_uri("file:///C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js")
end
end
def test_parse_query_params
assert_equal ["/usr/local/var/github/app/assets/javascripts/application.coffee", {type: 'application/javascript'}],
parse_asset_uri("file:///usr/local/var/github/app/assets/javascripts/application.coffee?type=application/javascript")
assert_equal ["/usr/local/var/github/app/assets/stylesheets/users.css", {type: 'text/css', flag: true}],
parse_asset_uri("file:///usr/local/var/github/app/assets/stylesheets/users.css?type=text/css&flag")
assert_equal ["/usr/local/var/github/app/assets/views/users.html", {type: 'text/html; charset=utf-8'}],
parse_asset_uri("file:///usr/local/var/github/app/assets/views/users.html?type=text/html;%20charset=utf-8")
end
def test_asset_uri_raise_erorr_when_invalid_uri_scheme
assert_raises URI::InvalidURIError do
parse_asset_uri("http:///usr/local/var/github/app/assets/javascripts/application.js")
end
end
def test_build_file_path
assert_equal "file:///usr/local/var/github/app/assets/javascripts/application.js",
build_asset_uri("/usr/local/var/github/app/assets/javascripts/application.js")
assert_equal "file:///usr/local/var/github/app/assets/javascripts/foo%20bar.js",
build_asset_uri("/usr/local/var/github/app/assets/javascripts/foo bar.js")
if DOSISH
assert_equal "file:///C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js",
build_asset_uri("C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js")
end
end
def test_build_query_params
assert_equal "file:///usr/local/var/github/app/assets/javascripts/application.coffee?type=application/javascript",
build_asset_uri("/usr/local/var/github/app/assets/javascripts/application.coffee", type: 'application/javascript')
assert_equal "file:///usr/local/var/github/app/assets/images/logo.svg?type=image/svg+xml",
build_asset_uri("/usr/local/var/github/app/assets/images/logo.svg", type: 'image/svg+xml')
assert_equal "file:///usr/local/var/github/app/assets/stylesheets/users.css?type=text/css&flag",
build_asset_uri("/usr/local/var/github/app/assets/stylesheets/users.css", type: 'text/css', flag: true)
assert_equal "file:///usr/local/var/github/app/assets/stylesheets/users.css?type=text/css",
build_asset_uri("/usr/local/var/github/app/assets/stylesheets/users.css", type: 'text/css', flag: false)
assert_equal "file:///usr/local/var/github/app/assets/stylesheets/users.css?type=css",
build_asset_uri("/usr/local/var/github/app/assets/stylesheets/users.css", type: :css)
assert_equal "file:///usr/local/var/github/app/assets/views/users.html?type=text/html;%20charset=utf-8",
build_asset_uri("/usr/local/var/github/app/assets/views/users.html", type: 'text/html; charset=utf-8')
end
def test_raise_error_when_invalid_param_value
assert_raises TypeError do
build_asset_uri("/usr/local/var/github/app/assets/images/logo.png", encodings: ['gzip', 'deflate'])
end
end
def test_parse_file_digest_uri
assert_equal "/usr/local/var/github/app/assets/javascripts/application.js",
parse_file_digest_uri("file-digest:///usr/local/var/github/app/assets/javascripts/application.js")
assert_equal "/usr/local/var/github/app/assets/javascripts/foo bar.js",
parse_file_digest_uri("file-digest:///usr/local/var/github/app/assets/javascripts/foo%20bar.js")
if DOSISH
assert_equal "C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js",
parse_file_digest_uri("file-digest:///C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js")
end
end
def test_build_file_digest_uri
assert_equal "file-digest:///usr/local/var/github/app/assets/javascripts/application.js",
build_file_digest_uri("/usr/local/var/github/app/assets/javascripts/application.js")
assert_equal "file-digest:///usr/local/var/github/app/assets/javascripts/foo%20bar.js",
build_file_digest_uri("/usr/local/var/github/app/assets/javascripts/foo bar.js")
if DOSISH
assert_equal "file-digest:///C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js",
build_file_digest_uri("C:/Users/IEUser/Documents/github/app/assets/javascripts/application.js")
end
end
def test_file_digest_raise_erorr_when_invalid_uri_scheme
assert_raises URI::InvalidURIError do
parse_file_digest_uri("http:///usr/local/var/github/app/assets/javascripts/application.js")
end
end
end
|