Updated MSpec source to 1c3ee1c8.
[rbx.git] / test / mri / webrick / test_httputils.rb
blob9d39ff53abfff285e4a43535cc56bd818ab1e930
1 require "test/unit"
2 require "webrick/httputils"
4 class TestWEBrickHTTPUtils < Test::Unit::TestCase
5   include WEBrick::HTTPUtils
7   def test_normilize_path
8     assert_equal("/foo",       normalize_path("/foo"))
9     assert_equal("/foo/bar/",  normalize_path("/foo/bar/"))
11     assert_equal("/",          normalize_path("/foo/../"))
12     assert_equal("/",          normalize_path("/foo/.."))
13     assert_equal("/",          normalize_path("/foo/bar/../../"))
14     assert_equal("/",          normalize_path("/foo/bar/../.."))
15     assert_equal("/",          normalize_path("/foo/bar/../.."))
16     assert_equal("/baz",       normalize_path("/foo/bar/../../baz"))
17     assert_equal("/baz",       normalize_path("/foo/../bar/../baz"))
18     assert_equal("/baz/",      normalize_path("/foo/../bar/../baz/"))
19     assert_equal("/...",       normalize_path("/bar/../..."))
20     assert_equal("/.../",      normalize_path("/bar/../.../"))
22     assert_equal("/foo/",      normalize_path("/foo/./"))
23     assert_equal("/foo/",      normalize_path("/foo/."))
24     assert_equal("/foo/",      normalize_path("/foo/././"))
25     assert_equal("/foo/",      normalize_path("/foo/./."))
26     assert_equal("/foo/bar",   normalize_path("/foo/./bar"))
27     assert_equal("/foo/bar/",  normalize_path("/foo/./bar/."))
28     assert_equal("/foo/bar/",  normalize_path("/./././foo/./bar/."))
30     assert_equal("/foo/bar/",  normalize_path("//foo///.//bar/.///.//"))
31     assert_equal("/",          normalize_path("//foo///..///bar/.///..//.//"))
33     assert_raises(RuntimeError){ normalize_path("foo/bar") }
34     assert_raises(RuntimeError){ normalize_path("..") }
35     assert_raises(RuntimeError){ normalize_path("/..") }
36     assert_raises(RuntimeError){ normalize_path("/./..") }
37     assert_raises(RuntimeError){ normalize_path("/./../") }
38     assert_raises(RuntimeError){ normalize_path("/./../..") }
39     assert_raises(RuntimeError){ normalize_path("/./../../") }
40     assert_raises(RuntimeError){ normalize_path("/./../") }
41     assert_raises(RuntimeError){ normalize_path("/../..") }
42     assert_raises(RuntimeError){ normalize_path("/../../") }
43     assert_raises(RuntimeError){ normalize_path("/../../..") }
44     assert_raises(RuntimeError){ normalize_path("/../../../") }
45     assert_raises(RuntimeError){ normalize_path("/../foo/../") }
46     assert_raises(RuntimeError){ normalize_path("/../foo/../../") }
47     assert_raises(RuntimeError){ normalize_path("/foo/bar/../../../../") }
48     assert_raises(RuntimeError){ normalize_path("/foo/../bar/../../") }
49     assert_raises(RuntimeError){ normalize_path("/./../bar/") }
50     assert_raises(RuntimeError){ normalize_path("/./../") }
51   end
53   def test_split_header_value
54     assert_equal(['foo', 'bar'], split_header_value('foo, bar'))
55     assert_equal(['"foo"', 'bar'], split_header_value('"foo", bar'))
56     assert_equal(['foo', '"bar"'], split_header_value('foo, "bar"'))
57     assert_equal(['*'], split_header_value('*'))
58     assert_equal(['W/"xyzzy"', 'W/"r2d2xxxx"', 'W/"c3piozzzz"'],
59                  split_header_value('W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"'))
60   end
62   def test_escape
63     assert_equal("/foo/bar", escape("/foo/bar"))
64     assert_equal("/~foo/bar", escape("/~foo/bar"))
65     assert_equal("/~foo%20bar", escape("/~foo bar"))
66     assert_equal("/~foo%20bar", escape("/~foo bar"))
67     assert_equal("/~foo%09bar", escape("/~foo\tbar"))
68     assert_equal("/~foo+bar", escape("/~foo+bar"))
69   end
71   def test_escape_form
72     assert_equal("%2Ffoo%2Fbar", escape_form("/foo/bar"))
73     assert_equal("%2F~foo%2Fbar", escape_form("/~foo/bar"))
74     assert_equal("%2F~foo+bar", escape_form("/~foo bar"))
75     assert_equal("%2F~foo+%2B+bar", escape_form("/~foo + bar"))
76   end
78   def test_unescape
79     assert_equal("/foo/bar", unescape("%2ffoo%2fbar"))
80     assert_equal("/~foo/bar", unescape("/%7efoo/bar"))
81     assert_equal("/~foo/bar", unescape("%2f%7efoo%2fbar"))
82     assert_equal("/~foo+bar", unescape("/%7efoo+bar"))
83   end
85   def test_unescape_form
86     assert_equal("//foo/bar", unescape_form("/%2Ffoo/bar"))
87     assert_equal("//foo/bar baz", unescape_form("/%2Ffoo/bar+baz"))
88     assert_equal("/~foo/bar baz", unescape_form("/%7Efoo/bar+baz"))
89   end
91   def test_escape_path
92     assert_equal("/foo/bar", escape_path("/foo/bar"))
93     assert_equal("/foo/bar/", escape_path("/foo/bar/"))
94     assert_equal("/%25foo/bar/", escape_path("/%foo/bar/"))
95   end
96 end