@@ -154,17 +154,24 @@ assertHttpRequestEquals "HEAD" "b/c/d.txt" "200"
154154assertHttpRequestEquals " HEAD" " b/c/../e.txt" " 200"
155155assertHttpRequestEquals " HEAD" " b/e.txt" " 200"
156156assertHttpRequestEquals " HEAD" " b//e.txt" " 200"
157+ assertHttpRequestEquals " HEAD" " a/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.txt" " 200"
157158
158159# Weird filenames
159160assertHttpRequestEquals " HEAD" " b/c/=" " 200"
160161assertHttpRequestEquals " HEAD" " b/c/@" " 200"
161162assertHttpRequestEquals " HEAD" " b/c/'(1).txt" " 200"
162163assertHttpRequestEquals " HEAD" " %D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B/%25bad%25file%25name%25" " 200"
164+ assertHttpRequestEquals " HEAD" ' a/plus+plus.txt' " 200"
163165if [ ${is_windows} == " 0" ]; then
164166 assertHttpRequestEquals " HEAD" " a/c/あ" " 200"
165167 assertHttpRequestEquals " HEAD" " b/クズ箱/ゴミ.txt" " 200"
166168 assertHttpRequestEquals " HEAD" " системы/system.txt" " 200"
167169 assertHttpRequestEquals " HEAD" " b/ブツブツ.txt" " 200"
170+ # The following two objects do not get encoded correctly by curl when requested using their
171+ # unicode names. The are provided as URL encoded as below. This is the same type of encoding
172+ # expected by S3 and divergence from it will not work with nginx either.
173+ assertHttpRequestEquals " HEAD" ' a/%25%40%21%2A%28%29%3D%24%23%5E%26%7C.txt' " 200"
174+ assertHttpRequestEquals " HEAD" ' a/%E3%81%93%E3%82%8C%E3%81%AF%E3%80%80This%20is%20ASCII%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20%20%D7%97%D7%9F%20.txt' " 200"
168175fi
169176
170177# Expected 400s
219226
220227# Verify GET is working
221228assertHttpRequestEquals " GET" " a.txt" " data/bucket-1/a.txt"
229+ assertHttpRequestEquals " GET" " a/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.txt" " data/bucket-1/a/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.txt"
222230assertHttpRequestEquals " GET" " a.txt?some=param&that=should&be=stripped#aaah" " data/bucket-1/a.txt"
223231assertHttpRequestEquals " GET" " b/c/d.txt" " data/bucket-1/b/c/d.txt"
224232assertHttpRequestEquals " GET" " b/c/=" " data/bucket-1/b/c/="
225233assertHttpRequestEquals " GET" " b/c/'(1).txt" " data/bucket-1/b/c/'(1).txt"
226234assertHttpRequestEquals " GET" " b/e.txt" " data/bucket-1/b/e.txt"
227235assertHttpRequestEquals " GET" " %D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B/%25bad%25file%25name%25" " data/bucket-1/системы/%bad%file%name%"
236+ assertHttpRequestEquals " GET" ' a/plus+plus.txt' " data/bucket-1/a/plus+plus.txt"
228237
229238if [ ${is_windows} == " 0" ]; then
230239 assertHttpRequestEquals " GET" " a/c/あ" " data/bucket-1/a/c/あ"
231240 assertHttpRequestEquals " GET" " b/ブツブツ.txt" " data/bucket-1/b/ブツブツ.txt"
232241 assertHttpRequestEquals " GET" " b/クズ箱/ゴミ.txt" " data/bucket-1/b/クズ箱/ゴミ.txt"
233242 assertHttpRequestEquals " GET" " системы/system.txt" " data/bucket-1/системы/system.txt"
243+ # The following two objects do not get encoded correctly by curl when requested using their
244+ # unicode names. The are provided as URL encoded as below. This is the same type of encoding
245+ # expected by S3 and divergence from it will not work with nginx either.
246+ assertHttpRequestEquals " GET" ' a/%25%40%21%2A%28%29%3D%24%23%5E%26%7C.txt' ' data/bucket-1/a/%@!*()=$#^&|.txt'
247+ assertHttpRequestEquals " GET" ' a/%E3%81%93%E3%82%8C%E3%81%AF%E3%80%80This%20is%20ASCII%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20%20%D7%97%D7%9F%20.txt' " data/bucket-1/a/これは This is ASCII системы חן .txt"
234248fi
235249
236250if [ " ${index_page} " == " 1" ]; then
0 commit comments