-
Notifications
You must be signed in to change notification settings - Fork 796
/
Copy pathtest_uri_utils.rb
191 lines (164 loc) · 8.93 KB
/
test_uri_utils.rb
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:[email protected]: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
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:[email protected]: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