http_router 0.8.10 → 0.8.11
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +2 -0
- data/Rakefile +16 -1
- data/http_router.gemspec +1 -0
- data/lib/http_router.rb +2 -1
- data/lib/http_router/version.rb +1 -1
- data/test/common/generate.txt +87 -0
- data/test/common/recognize.txt +263 -0
- data/test/generation.rb +119 -0
- data/test/recognition.rb +142 -0
- data/test/{test_arbitrary.rb → test_recognition.rb} +37 -2
- metadata +23 -64
- data/test/test_generate.rb +0 -110
- data/test/test_greedy.rb +0 -24
- data/test/test_interstitial.rb +0 -47
- data/test/test_recognize.rb +0 -106
- data/test/test_request.rb +0 -102
- data/test/test_variable.rb +0 -163
data/test/test_greedy.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
class TestGreedy < MiniTest::Unit::TestCase
|
2
|
-
def test_mix_regex_with_greedy
|
3
|
-
regex, greedy = router {
|
4
|
-
add("/:test/number").matching(:test => /\d+/)
|
5
|
-
add("/:test/anything")
|
6
|
-
}
|
7
|
-
assert_route regex, '/123/number', {:test => '123'}
|
8
|
-
assert_route greedy, '/123/anything', {:test => '123'}
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_trailing_slash
|
12
|
-
assert_route router.add("/:test").matching(:test => /.*/), '/test/', {:test => 'test/'}
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_extension
|
16
|
-
assert_route router.add("/:test").matching(:test => /.*/), '/test.html', {:test => 'test.html'}
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_match_at_beginning
|
20
|
-
r = router { add(':test', :test => /\d+/)}
|
21
|
-
assert_route r, '/123', {:test => '123'}
|
22
|
-
assert_route nil, '/a123'
|
23
|
-
end
|
24
|
-
end
|
data/test/test_interstitial.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
class TestInterstitial < MiniTest::Unit::TestCase
|
2
|
-
def test_recognize
|
3
|
-
assert_route '/one-:variable-time', '/one-value-time', {:variable => 'value'}
|
4
|
-
end
|
5
|
-
|
6
|
-
def test_regex
|
7
|
-
r = router { add('/one-:variable-time').matching(:variable => /\d+/) }
|
8
|
-
assert_route r, '/one-123-time', {:variable => '123'}
|
9
|
-
assert_route nil, '/one-value-time'
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_regex_as_options
|
13
|
-
r = router { add('/one-:variable-time', :variable => /\d+/) }
|
14
|
-
assert_route r, '/one-123-time', {:variable => '123'}
|
15
|
-
assert_route nil, '/one-value-time'
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_extension
|
19
|
-
assert_route 'hey.:greed.html', '/hey.greedybody.html', {:greed => 'greedybody'}
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_multi
|
23
|
-
r6, r5, r4, r3, r2, r1 = router {
|
24
|
-
add('/:var1-:var2-:var3-:var4-:var5-:var6')
|
25
|
-
add('/:var1-:var2-:var3-:var4-:var5')
|
26
|
-
add('/:var1-:var2-:var3-:var4')
|
27
|
-
add('/:var1-:var2-:var3')
|
28
|
-
add('/:var1-:var2')
|
29
|
-
add('/:var1')
|
30
|
-
}
|
31
|
-
assert_route r1, '/one', {:var1 => 'one'}
|
32
|
-
assert_route r2, '/one-value', {:var1 => 'one', :var2 => 'value'}
|
33
|
-
assert_route r3, '/one-value-time', {:var1 => 'one', :var2 => 'value', :var3 => 'time'}
|
34
|
-
assert_route r4, '/one-value-time-one', {:var1 => 'one', :var2 => 'value', :var3 => 'time', :var4 => 'one'}
|
35
|
-
assert_route r5, '/one-value-time-one-variable', {:var1 => 'one', :var2 => 'value', :var3 => 'time', :var4 => 'one', :var5 => 'variable'}
|
36
|
-
assert_route r6, '/one-value-time-one-value-time', {:var1 => 'one', :var2 => 'value', :var3 => 'time', :var4 => 'one', :var5 => 'value', :var6 => 'time'}
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_regex_with_mutliple_variables
|
40
|
-
with_regex, without_regex = router {
|
41
|
-
add("/:common_variable.:matched").matching(:matched => /\d+/)
|
42
|
-
add("/:common_variable.:unmatched")
|
43
|
-
}
|
44
|
-
assert_route with_regex, '/common.123', {:common_variable => 'common', :matched => '123'}
|
45
|
-
assert_route without_regex, '/common.other', {:common_variable => 'common', :unmatched => 'other'}
|
46
|
-
end
|
47
|
-
end
|
data/test/test_recognize.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class TestRecognition < MiniTest::Unit::TestCase
|
3
|
-
def test_empty
|
4
|
-
assert_route router.add(''), '/'
|
5
|
-
end
|
6
|
-
|
7
|
-
def test_simple1
|
8
|
-
assert_route router.add('/'), '/'
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_simple2
|
12
|
-
assert_route router.add('/test'), '/test'
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_simple3
|
16
|
-
assert_route router.add('/test/one'), '/test/one'
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_simple4
|
20
|
-
assert_route router.add('/test/one/two'), '/test/one/two'
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_simple5
|
24
|
-
assert_route router.add('/test.html'), '/test.html'
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_simple6
|
28
|
-
assert_route router.add('/.html'), '/.html'
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_passing
|
32
|
-
passed, working = router {
|
33
|
-
add('/').to { |env| throw :pass; [200, {}, ['pass']] }
|
34
|
-
add('/').to { |env| [200, {}, ['working']] }
|
35
|
-
}
|
36
|
-
assert_body 'working', router.call(Rack::MockRequest.env_for('/'))
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_passing_with_cascade
|
40
|
-
passed, working = router {
|
41
|
-
add('/').to { |env| [200, {'X-Cascade' => 'pass'}, ['pass']] }
|
42
|
-
add('/').to { |env| [200, {}, ['working']] }
|
43
|
-
}
|
44
|
-
assert_body 'working', router.call(Rack::MockRequest.env_for('/'))
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_optional
|
48
|
-
route = router {
|
49
|
-
add 'one(/two(/three(/four)(/five)))'
|
50
|
-
}
|
51
|
-
assert_route route, '/one'
|
52
|
-
assert_route route, '/one/two'
|
53
|
-
assert_route route, '/one/two/three'
|
54
|
-
assert_route route, '/one/two/three/four'
|
55
|
-
assert_route route, '/one/two/three/five'
|
56
|
-
assert_route route, '/one/two/three/four/five'
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_escape_paren
|
60
|
-
assert_route router.add('/test\(:variable\)'), '/test(hello)', {:variable => 'hello'}
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_escape_colon
|
64
|
-
assert_route router.add('/test\:variable'), '/test:variable'
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_escape_star
|
68
|
-
assert_route router.add('/test\*variable'), '/test*variable'
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_unicode
|
72
|
-
assert_route router.add('/føø'), '/f%C3%B8%C3%B8'
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_partial
|
76
|
-
router.add("/test*").to { |env| Rack::Response.new(env['PATH_INFO']).finish }
|
77
|
-
assert_body '/optional', router.call(Rack::MockRequest.env_for('/test/optional'))
|
78
|
-
assert_body '/', router.call(Rack::MockRequest.env_for('/test'))
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_partial_root
|
82
|
-
router.add("/*").to { |env| Rack::Response.new(env['PATH_INFO']).finish }
|
83
|
-
assert_body '/optional', router.call(Rack::MockRequest.env_for('/optional'))
|
84
|
-
assert_body '/', router.call(Rack::MockRequest.env_for('/'))
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_request_mutation
|
88
|
-
got_this_far = false
|
89
|
-
non_matching, matching = router {
|
90
|
-
add("/test/:var/:var2/*glob").matching(:var2 => /123/, :glob => /[a-z]+/).get.arbitrary{|env, params| got_this_far = true; false}
|
91
|
-
add("/test/:var/:var2/*glob").matching(:var2 => /123/, :glob => /[a-z]+/).get
|
92
|
-
}
|
93
|
-
assert_route matching, '/test/123/123/asd/aasd/zxcqwe/asdzxc', {:var => '123', :var2 => '123', :glob => %w{asd aasd zxcqwe asdzxc}}
|
94
|
-
assert got_this_far, "matching should have gotten this far"
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_multiple_partial
|
98
|
-
test, root = router {
|
99
|
-
add("/test").partial.to{|env| [200, {}, ['/test',env['PATH_INFO']]]}
|
100
|
-
add("/").partial.to{|env| [200, {}, ['/',env['PATH_INFO']]]}
|
101
|
-
}
|
102
|
-
assert_body ['/test', '/optional'], router.call(Rack::MockRequest.env_for('/test/optional'))
|
103
|
-
assert_body ['/test', '/optional/'], router.call(Rack::MockRequest.env_for('/test/optional/'))
|
104
|
-
assert_body ['/', '/testing/optional'], router.call(Rack::MockRequest.env_for('/testing/optional'))
|
105
|
-
end
|
106
|
-
end
|
data/test/test_request.rb
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
class TestRequest < MiniTest::Unit::TestCase
|
2
|
-
def test_simple_case
|
3
|
-
r = router { add('test').post }
|
4
|
-
assert_route r, Rack::MockRequest.env_for('/test', :method => 'POST')
|
5
|
-
assert_header({'Allow' => 'POST'}, Rack::MockRequest.env_for('/test', :method => 'GET'))
|
6
|
-
assert_status(405, Rack::MockRequest.env_for('/test', :method => 'GET'))
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_simple_case_with_array
|
10
|
-
r = router { add('test', :conditions => {:request_method => ['POST', 'GET']}) }
|
11
|
-
assert_route r, Rack::MockRequest.env_for('/test', :method => 'POST')
|
12
|
-
assert_route r, Rack::MockRequest.env_for('/test', :method => 'GET')
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_simple_case_with_non_array
|
16
|
-
r = router { add('test', :conditions => {:request_method => 'GET'}) }
|
17
|
-
assert_route r, Rack::MockRequest.env_for('/test', :method => 'GET')
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_single_app_with_404
|
21
|
-
r = router { add('test').post.to{|env| [404, {}, []]} }
|
22
|
-
assert_route nil, Rack::MockRequest.env_for('/test', :method => 'POST')
|
23
|
-
assert_status(404, Rack::MockRequest.env_for('/test', :method => 'POST'))
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_with_optional_parts_and_405
|
27
|
-
get, post, delete = router {
|
28
|
-
get('test(.:format)')
|
29
|
-
post('test(.:format)')
|
30
|
-
delete('test(.:format)')
|
31
|
-
}
|
32
|
-
assert_route get, Rack::MockRequest.env_for('/test', :method => 'GET')
|
33
|
-
assert_route post, Rack::MockRequest.env_for('/test', :method => 'POST')
|
34
|
-
assert_route delete, Rack::MockRequest.env_for('/test', :method => 'DELETE')
|
35
|
-
assert_route get, Rack::MockRequest.env_for('/test.html', :method => 'GET'), {:format => 'html'}
|
36
|
-
assert_route post, Rack::MockRequest.env_for('/test.html', :method => 'POST'), {:format => 'html'}
|
37
|
-
assert_route delete, Rack::MockRequest.env_for('/test.html', :method => 'DELETE'), {:format => 'html'}
|
38
|
-
put = router.call(Rack::MockRequest.env_for('/test', :method => 'PUT'))
|
39
|
-
assert_status 405, put
|
40
|
-
assert_equal %w{DELETE GET POST}, put[1]['Allow'].split(/\s*,\s*/).sort
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_deeply
|
44
|
-
test_post, test_post_post, test_get, test_post_get, test_post_catchall, test_catchall = router {
|
45
|
-
post("/test")
|
46
|
-
post("/test/post")
|
47
|
-
get("/test")
|
48
|
-
get("/test/post")
|
49
|
-
add("/test/post")
|
50
|
-
add("/test")
|
51
|
-
}
|
52
|
-
assert_route test_post, Rack::MockRequest.env_for('/test', :method => 'POST')
|
53
|
-
assert_route test_get, Rack::MockRequest.env_for('/test', :method => 'GET')
|
54
|
-
assert_route test_catchall, Rack::MockRequest.env_for('/test', :method => 'PUT')
|
55
|
-
assert_route test_post_post, Rack::MockRequest.env_for('/test/post', :method => 'POST')
|
56
|
-
assert_route test_post_get, Rack::MockRequest.env_for('/test/post', :method => 'GET')
|
57
|
-
assert_route test_post_catchall, Rack::MockRequest.env_for('/test/post', :method => 'PUT')
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_move_node
|
61
|
-
post, general = router {
|
62
|
-
post("/test").default_destination
|
63
|
-
add("/test").default_destination
|
64
|
-
}
|
65
|
-
assert_route post, Rack::MockRequest.env_for('/test', :method => 'POST')
|
66
|
-
assert_route general, Rack::MockRequest.env_for('/test', :method => 'PUT')
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_complex_routing
|
70
|
-
host2_post, host2_get, host2, post = router {
|
71
|
-
add("/test").post.host('host2')
|
72
|
-
add("/test").host('host2').get
|
73
|
-
add("/test").host('host2')
|
74
|
-
add("/test").post
|
75
|
-
}
|
76
|
-
assert_route host2, Rack::MockRequest.env_for('http://host2/test', :method => 'PUT')
|
77
|
-
assert_route post, Rack::MockRequest.env_for('http://host1/test', :method => 'POST')
|
78
|
-
assert_route host2_get, Rack::MockRequest.env_for('http://host2/test', :method => 'GET')
|
79
|
-
assert_route host2_post, Rack::MockRequest.env_for('http://host2/test', :method => 'POST')
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_regexp
|
83
|
-
with, without = router {
|
84
|
-
get("/test").host(/host1/)
|
85
|
-
get("/test")
|
86
|
-
}
|
87
|
-
assert_route without, 'http://host2/test'
|
88
|
-
assert_route with, 'http://host2.host1.com/test'
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_all_routes
|
92
|
-
router {
|
93
|
-
post("/test").host('host1')
|
94
|
-
}
|
95
|
-
assert_route router.add("/test").host('host2'), Rack::MockRequest.env_for('http://host2/test', :method => 'POST')
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_match_on_scheme
|
99
|
-
http, https = router { get("/test").scheme('http'); get("/test").scheme('https') }
|
100
|
-
assert_status 405, Rack::MockRequest.env_for('https://example.org/test', :method => 'POST')
|
101
|
-
end
|
102
|
-
end
|
data/test/test_variable.rb
DELETED
@@ -1,163 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
class TestVariable < MiniTest::Unit::TestCase
|
3
|
-
def test_variable
|
4
|
-
assert_route ':one', '/two', {:one => 'two'}
|
5
|
-
assert_route 'test/:one', '/test/three', {:one => 'three'}
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_variable_vs_static
|
9
|
-
static, dynamic = router { add 'one'; add ':one' }
|
10
|
-
assert_route dynamic, '/two', {:one => 'two'}
|
11
|
-
assert_route static, '/one'
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_variable_with_static_after
|
15
|
-
variable, static = router {
|
16
|
-
add '/:var/one'
|
17
|
-
add 'one'
|
18
|
-
}
|
19
|
-
assert_route variable, '/two/one', {:var => 'two'}
|
20
|
-
assert_route static, '/one'
|
21
|
-
assert_route nil, '/two'
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_variable_and_static
|
25
|
-
dynamic, static = router {
|
26
|
-
add("/foo/:id")
|
27
|
-
add("/foo")
|
28
|
-
}
|
29
|
-
assert_route dynamic, '/foo/id', {:id => 'id'}
|
30
|
-
assert_route static, '/foo'
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_variable_mixed_with_static
|
34
|
-
static, dynamic = router {
|
35
|
-
add("/foo/foo")
|
36
|
-
add("/:foo/foo2")
|
37
|
-
}
|
38
|
-
assert_route dynamic, '/foo/foo2', {:foo => 'foo'}
|
39
|
-
assert_route static, '/foo/foo'
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_encoding
|
43
|
-
assert_route '/:var', '/%E6%AE%BA%E3%81%99', {:var => "\346\256\272\343\201\231"}
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_match_path
|
47
|
-
r = router { add %r{/(test123|\d+)} }
|
48
|
-
assert_route r, '/test123'
|
49
|
-
assert_route r, '/123'
|
50
|
-
assert_route nil, '/test123andmore'
|
51
|
-
assert_route nil, '/lesstest123'
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_format
|
55
|
-
assert_route '/test.:format', '/test.html', {:format => 'html'}
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_optional_format
|
59
|
-
r = router {add('/test(.:format)')}
|
60
|
-
assert_route r, '/test.html', {:format => 'html'}
|
61
|
-
assert_route r, '/test'
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_bare_optional_format
|
65
|
-
r = router {add('(.:format)')}
|
66
|
-
assert_route r, '/.html', {:format => 'html'}
|
67
|
-
assert_route r, '/'
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_var_with_format
|
71
|
-
assert_route '/:test.:format', '/foo.bar', {:test => 'foo', :format => 'bar'}
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_var_with_optional_format
|
75
|
-
r = router { add('/:test(.:format)') }
|
76
|
-
assert_route r, '/foo.bar', {:test => 'foo', :format => 'bar'}
|
77
|
-
assert_route r, '/foo', {:test => 'foo'}
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_var_with_optional_format_and_regex
|
81
|
-
r = router { add('/:test(.:format)', :format => /[^\.]+/) }
|
82
|
-
assert_route r, '/asd@asd.com.json', {:test => 'asd@asd.com', :format => 'json'}
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_glob
|
86
|
-
assert_route '/test/*variable', 'test/one/two/three', {:variable => ['one', 'two', 'three']}
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_glob_with_static
|
90
|
-
assert_route '/test/*variable/test', '/test/one/two/three/test', {:variable => ['one', 'two', 'three']}
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_double_glob_all_the_way
|
94
|
-
assert_route '/test/*variable/test/*variable2', '/test/one/two/three/test/four/five/six', {:variable => ['one', 'two', 'three'], :variable2 => ['four', 'five', 'six']}
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_var_glob_var
|
98
|
-
assert_route '/test/:test-*variable.:format', '/test/one-two/three/four/five.six', {:test=> 'one', :variable => ['two', 'three', 'four', 'five'], :format => 'six'}
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_glob_with_regexp
|
102
|
-
r = router { add('/test/*variable', :variable => /[a-z]+/) }
|
103
|
-
assert_route nil, '/test/asd/123'
|
104
|
-
assert_route nil, '/test/asd/asd123'
|
105
|
-
assert_route r, '/test/asd/qwe', :variable => ['asd', 'qwe']
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_glob_with_regexp_and_static
|
109
|
-
r = router { add('/test/*variable/test', :variable => /[a-z]+/) }
|
110
|
-
assert_route nil, '/test/asd/123/test'
|
111
|
-
assert_route r, '/test/asd/qwe/test', :variable => ['asd', 'qwe']
|
112
|
-
end
|
113
|
-
|
114
|
-
def test_glob_with_variable
|
115
|
-
assert_route '/test/*variable/:test', '/test/one/two/three', {:variable => ['one', 'two'], :test => 'three'}
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_glob_with_format
|
119
|
-
assert_route '/test/*variable.:format', 'test/one/two/three.html', {:variable => ['one', 'two', 'three'], :format => 'html'}
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_glob_regexp_with_format
|
123
|
-
r = router { add('/test/*variable.:format', :variable => /[a-z]+/, :format => 'html') }
|
124
|
-
assert_route nil, 'test/one/2/three.html'
|
125
|
-
assert_route nil, 'test/one/two/three.xml'
|
126
|
-
assert_route r, 'test/one/two/three.html', {:variable => ['one', 'two', 'three'], :format => 'html'}
|
127
|
-
end
|
128
|
-
|
129
|
-
def test_glob_with_optional_format
|
130
|
-
assert_route '/test/*variable(.:format)', 'test/one/two/three.html', {:variable => ['one', 'two', 'three'], :format => 'html'}
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_glob_with_literal
|
134
|
-
assert_route '/test/*variable.html', 'test/one/two/three.html', {:variable => ['one', 'two', 'three']}
|
135
|
-
end
|
136
|
-
|
137
|
-
def test_glob_with_regex
|
138
|
-
r = router { add('/test/*variable/anymore')}
|
139
|
-
assert_route r, '/test/123/345/567/anymore', {:variable => ['123', '345', '567']}
|
140
|
-
assert_route nil, '/test/123/345/567'
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_regex_and_greedy
|
144
|
-
with_regex, with_post, without_regex = router {
|
145
|
-
add("/:common_variable/:matched").matching(:matched => /\d+/)
|
146
|
-
post("/:common_variable/:unmatched")
|
147
|
-
add("/:common_variable/:unmatched")
|
148
|
-
}
|
149
|
-
assert_route with_regex, '/common/123', {:common_variable => 'common', :matched => '123'}
|
150
|
-
assert_route without_regex, '/common/other', {:common_variable => 'common', :unmatched => 'other'}
|
151
|
-
assert_route with_regex, Rack::MockRequest.env_for('/common/123', :method => 'POST'), {:common_variable => 'common', :matched => '123'}
|
152
|
-
assert_route with_post, Rack::MockRequest.env_for('/common/other', :method => 'POST'), {:common_variable => 'common', :unmatched => 'other'}
|
153
|
-
end
|
154
|
-
|
155
|
-
if //.respond_to?(:names)
|
156
|
-
eval "
|
157
|
-
def test_match_path_with_groups
|
158
|
-
r = router { add(%r{/(?<year>\\d{4})/(?<month>\\d{2})/(?<day>\\d{2})/?}) }
|
159
|
-
assert_route r, '/1234/23/56', {:year => '1234', :month => '23', :day => '56'}
|
160
|
-
end
|
161
|
-
"
|
162
|
-
end
|
163
|
-
end
|