valid_route 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +19 -0
- data/lib/tasks/valid_route_tasks.rake +4 -0
- data/lib/valid_route/all.rb +2 -0
- data/lib/valid_route/route_formatter.rb +36 -0
- data/lib/valid_route/route_validator.rb +154 -0
- data/lib/valid_route/version.rb +3 -0
- data/lib/valid_route.rb +1 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/javascripts/others.js +2 -0
- data/test/dummy/app/assets/javascripts/pages.js +2 -0
- data/test/dummy/app/assets/javascripts/users.js +2 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/assets/stylesheets/others.css +4 -0
- data/test/dummy/app/assets/stylesheets/pages.css +4 -0
- data/test/dummy/app/assets/stylesheets/scaffold.css +56 -0
- data/test/dummy/app/assets/stylesheets/users.css +4 -0
- data/test/dummy/app/constraints/page_constraint.rb +9 -0
- data/test/dummy/app/constraints/user_constraint.rb +9 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/others_controller.rb +58 -0
- data/test/dummy/app/controllers/pages_controller.rb +58 -0
- data/test/dummy/app/controllers/users_controller.rb +58 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/others_helper.rb +2 -0
- data/test/dummy/app/helpers/pages_helper.rb +2 -0
- data/test/dummy/app/helpers/users_helper.rb +2 -0
- data/test/dummy/app/models/other.rb +19 -0
- data/test/dummy/app/models/page.rb +22 -0
- data/test/dummy/app/models/user.rb +22 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/others/_form.html.erb +29 -0
- data/test/dummy/app/views/others/edit.html.erb +6 -0
- data/test/dummy/app/views/others/index.html.erb +31 -0
- data/test/dummy/app/views/others/new.html.erb +5 -0
- data/test/dummy/app/views/others/show.html.erb +19 -0
- data/test/dummy/app/views/pages/_form.html.erb +29 -0
- data/test/dummy/app/views/pages/edit.html.erb +6 -0
- data/test/dummy/app/views/pages/index.html.erb +31 -0
- data/test/dummy/app/views/pages/new.html.erb +5 -0
- data/test/dummy/app/views/pages/show.html.erb +19 -0
- data/test/dummy/app/views/users/_form.html.erb +29 -0
- data/test/dummy/app/views/users/edit.html.erb +6 -0
- data/test/dummy/app/views/users/index.html.erb +31 -0
- data/test/dummy/app/views/users/new.html.erb +5 -0
- data/test/dummy/app/views/users/show.html.erb +19 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config/application.rb +24 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +22 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20130504204336_create_pages.rb +13 -0
- data/test/dummy/db/migrate/20130505171048_create_users.rb +13 -0
- data/test/dummy/db/migrate/20130513145529_create_others.rb +11 -0
- data/test/dummy/db/schema.rb +40 -0
- data/test/dummy/db/seeds.rb +4 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +8038 -0
- data/test/dummy/log/test.log +26031 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/test/controllers/others_controller_test.rb +53 -0
- data/test/dummy/test/controllers/pages_controller_test.rb +54 -0
- data/test/dummy/test/controllers/users_controller_test.rb +52 -0
- data/test/dummy/test/helpers/others_helper_test.rb +4 -0
- data/test/dummy/test/helpers/pages_helper_test.rb +4 -0
- data/test/dummy/test/helpers/users_helper_test.rb +4 -0
- data/test/dummy/test/models/other_test.rb +7 -0
- data/test/dummy/test/models/page_test.rb +7 -0
- data/test/dummy/test/models/user_test.rb +7 -0
- data/test/dummy/test/valid_route/route_formatter_test.rb +48 -0
- data/test/dummy/test/valid_route/route_validator_test.rb +104 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/0204daa608dcc3d6010d17d5a3325dae +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/0800f54ee19cf3cee10b956fa9786799 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/0f1e224003d74d132651ab92f55c07cd +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/36a0c7121af098cc05c1eb1e9b05c6fc +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/371bf96e99717688ed7313a0c53f4212 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/4050a4e5062ab95c9f32e9b6940821ea +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/510da110ae528e2d22533be39ff696c5 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/58e369b37e5157ea746a485eea17e9f7 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/5f1a0d05e77ca8b9a1fc2a47e17a8174 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/6fc757c2c8329244ca95d6909865bbc2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7162e1034189ecdac520608cf2d65859 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/7ae10239eda2588a95fdcc7d871bef52 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/87b209c0c9da28094a8d5581a21262c6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/8d5d60255600aa010a32e1d1a9bc6db6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/b3d9b0e88cdded276ebdce333e338a85 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cebc6db0bbb8120f430da3970b173d2f +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/dd4918aca468e2fe7bf61814631a1758 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ebb095504f281d4e6bc39c4e574e25b2 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f56253b5f374fff1a33fbbc9881c9124 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f576841f662770908b35e6951e6900dd +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/ff05efaf31ab618d1eae2cd81fe67315 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/0204daa608dcc3d6010d17d5a3325dae +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/36a0c7121af098cc05c1eb1e9b05c6fc +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/371bf96e99717688ed7313a0c53f4212 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/3d6a697f5610f9f9e1d5af4ce5c9d618 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/4050a4e5062ab95c9f32e9b6940821ea +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/58e369b37e5157ea746a485eea17e9f7 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/5f1a0d05e77ca8b9a1fc2a47e17a8174 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/6fc757c2c8329244ca95d6909865bbc2 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/717ea0077fd0f73e5d956e4902250d3a +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/7ae10239eda2588a95fdcc7d871bef52 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/8733c94f79979ec907253d4bff6714a6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/87b209c0c9da28094a8d5581a21262c6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/8d5d60255600aa010a32e1d1a9bc6db6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/b3d9b0e88cdded276ebdce333e338a85 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/c9f51f5d854353b135800b3f119d5a2f +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f56253b5f374fff1a33fbbc9881c9124 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f576841f662770908b35e6951e6900dd +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/ff05efaf31ab618d1eae2cd81fe67315 +0 -0
- data/test/factories/others.rb +11 -0
- data/test/factories/pages.rb +23 -0
- data/test/factories/users.rb +34 -0
- data/test/test_helper.rb +17 -0
- metadata +401 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
5
|
+
<style>
|
6
|
+
body {
|
7
|
+
background-color: #EFEFEF;
|
8
|
+
color: #2E2F30;
|
9
|
+
text-align: center;
|
10
|
+
font-family: arial, sans-serif;
|
11
|
+
}
|
12
|
+
|
13
|
+
div.dialog {
|
14
|
+
width: 25em;
|
15
|
+
margin: 4em auto 0 auto;
|
16
|
+
border: 1px solid #CCC;
|
17
|
+
border-right-color: #999;
|
18
|
+
border-left-color: #999;
|
19
|
+
border-bottom-color: #BBB;
|
20
|
+
border-top: #B00100 solid 4px;
|
21
|
+
border-top-left-radius: 9px;
|
22
|
+
border-top-right-radius: 9px;
|
23
|
+
background-color: white;
|
24
|
+
padding: 7px 4em 0 4em;
|
25
|
+
}
|
26
|
+
|
27
|
+
h1 {
|
28
|
+
font-size: 100%;
|
29
|
+
color: #730E15;
|
30
|
+
line-height: 1.5em;
|
31
|
+
}
|
32
|
+
|
33
|
+
body > p {
|
34
|
+
width: 33em;
|
35
|
+
margin: 0 auto 1em;
|
36
|
+
padding: 1em 0;
|
37
|
+
background-color: #F7F7F7;
|
38
|
+
border: 1px solid #CCC;
|
39
|
+
border-right-color: #999;
|
40
|
+
border-bottom-color: #999;
|
41
|
+
border-bottom-left-radius: 4px;
|
42
|
+
border-bottom-right-radius: 4px;
|
43
|
+
border-top-color: #DADADA;
|
44
|
+
color: #666;
|
45
|
+
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
46
|
+
}
|
47
|
+
</style>
|
48
|
+
</head>
|
49
|
+
|
50
|
+
<body>
|
51
|
+
<!-- This file lives in public/404.html -->
|
52
|
+
<div class="dialog">
|
53
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
54
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
55
|
+
</div>
|
56
|
+
<p>If you are the application owner check the logs for more information.</p>
|
57
|
+
</body>
|
58
|
+
</html>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
5
|
+
<style>
|
6
|
+
body {
|
7
|
+
background-color: #EFEFEF;
|
8
|
+
color: #2E2F30;
|
9
|
+
text-align: center;
|
10
|
+
font-family: arial, sans-serif;
|
11
|
+
}
|
12
|
+
|
13
|
+
div.dialog {
|
14
|
+
width: 25em;
|
15
|
+
margin: 4em auto 0 auto;
|
16
|
+
border: 1px solid #CCC;
|
17
|
+
border-right-color: #999;
|
18
|
+
border-left-color: #999;
|
19
|
+
border-bottom-color: #BBB;
|
20
|
+
border-top: #B00100 solid 4px;
|
21
|
+
border-top-left-radius: 9px;
|
22
|
+
border-top-right-radius: 9px;
|
23
|
+
background-color: white;
|
24
|
+
padding: 7px 4em 0 4em;
|
25
|
+
}
|
26
|
+
|
27
|
+
h1 {
|
28
|
+
font-size: 100%;
|
29
|
+
color: #730E15;
|
30
|
+
line-height: 1.5em;
|
31
|
+
}
|
32
|
+
|
33
|
+
body > p {
|
34
|
+
width: 33em;
|
35
|
+
margin: 0 auto 1em;
|
36
|
+
padding: 1em 0;
|
37
|
+
background-color: #F7F7F7;
|
38
|
+
border: 1px solid #CCC;
|
39
|
+
border-right-color: #999;
|
40
|
+
border-bottom-color: #999;
|
41
|
+
border-bottom-left-radius: 4px;
|
42
|
+
border-bottom-right-radius: 4px;
|
43
|
+
border-top-color: #DADADA;
|
44
|
+
color: #666;
|
45
|
+
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
46
|
+
}
|
47
|
+
</style>
|
48
|
+
</head>
|
49
|
+
|
50
|
+
<body>
|
51
|
+
<!-- This file lives in public/422.html -->
|
52
|
+
<div class="dialog">
|
53
|
+
<h1>The change you wanted was rejected.</h1>
|
54
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
55
|
+
</div>
|
56
|
+
<p>If you are the application owner check the logs for more information.</p>
|
57
|
+
</body>
|
58
|
+
</html>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
5
|
+
<style>
|
6
|
+
body {
|
7
|
+
background-color: #EFEFEF;
|
8
|
+
color: #2E2F30;
|
9
|
+
text-align: center;
|
10
|
+
font-family: arial, sans-serif;
|
11
|
+
}
|
12
|
+
|
13
|
+
div.dialog {
|
14
|
+
width: 25em;
|
15
|
+
margin: 4em auto 0 auto;
|
16
|
+
border: 1px solid #CCC;
|
17
|
+
border-right-color: #999;
|
18
|
+
border-left-color: #999;
|
19
|
+
border-bottom-color: #BBB;
|
20
|
+
border-top: #B00100 solid 4px;
|
21
|
+
border-top-left-radius: 9px;
|
22
|
+
border-top-right-radius: 9px;
|
23
|
+
background-color: white;
|
24
|
+
padding: 7px 4em 0 4em;
|
25
|
+
}
|
26
|
+
|
27
|
+
h1 {
|
28
|
+
font-size: 100%;
|
29
|
+
color: #730E15;
|
30
|
+
line-height: 1.5em;
|
31
|
+
}
|
32
|
+
|
33
|
+
body > p {
|
34
|
+
width: 33em;
|
35
|
+
margin: 0 auto 1em;
|
36
|
+
padding: 1em 0;
|
37
|
+
background-color: #F7F7F7;
|
38
|
+
border: 1px solid #CCC;
|
39
|
+
border-right-color: #999;
|
40
|
+
border-bottom-color: #999;
|
41
|
+
border-bottom-left-radius: 4px;
|
42
|
+
border-bottom-right-radius: 4px;
|
43
|
+
border-top-color: #DADADA;
|
44
|
+
color: #666;
|
45
|
+
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
46
|
+
}
|
47
|
+
</style>
|
48
|
+
</head>
|
49
|
+
|
50
|
+
<body>
|
51
|
+
<!-- This file lives in public/500.html -->
|
52
|
+
<div class="dialog">
|
53
|
+
<h1>We're sorry, but something went wrong.</h1>
|
54
|
+
</div>
|
55
|
+
<p>If you are the application owner check the logs for more information.</p>
|
56
|
+
</body>
|
57
|
+
</html>
|
File without changes
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class OthersControllerTest < ActionController::TestCase
|
4
|
+
|
5
|
+
test "should get index" do
|
6
|
+
@other = FactoryGirl.create(:other)
|
7
|
+
get :index
|
8
|
+
assert_response :success
|
9
|
+
assert_not_nil assigns(:others)
|
10
|
+
end
|
11
|
+
|
12
|
+
test "should get new" do
|
13
|
+
@other = Other.new
|
14
|
+
get :new
|
15
|
+
assert_response :success
|
16
|
+
end
|
17
|
+
|
18
|
+
test "should create other" do
|
19
|
+
@other = FactoryGirl.build(:other)
|
20
|
+
assert_difference('Other.count') do
|
21
|
+
post :create, other: { content: @other.content, name: @other.name, permalink: @other.permalink }
|
22
|
+
end
|
23
|
+
|
24
|
+
assert_redirected_to other_path(assigns(:other))
|
25
|
+
end
|
26
|
+
|
27
|
+
test "should show other" do
|
28
|
+
@other = FactoryGirl.create(:other)
|
29
|
+
get :show, id: @other
|
30
|
+
assert_response :success
|
31
|
+
end
|
32
|
+
|
33
|
+
test "should get edit" do
|
34
|
+
@other = FactoryGirl.create(:other)
|
35
|
+
get :edit, id: @other
|
36
|
+
assert_response :success
|
37
|
+
end
|
38
|
+
|
39
|
+
test "should update other" do
|
40
|
+
@other = FactoryGirl.create(:other)
|
41
|
+
patch :update, id: @other, other: { content: @other.content, name: @other.name, permalink: @other.permalink }
|
42
|
+
assert_redirected_to other_path(assigns(:other))
|
43
|
+
end
|
44
|
+
|
45
|
+
test "should destroy other" do
|
46
|
+
@other = FactoryGirl.create(:other)
|
47
|
+
assert_difference('Other.count', -1) do
|
48
|
+
delete :destroy, id: @other
|
49
|
+
end
|
50
|
+
|
51
|
+
assert_redirected_to others_path
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PagesControllerTest < ActionController::TestCase
|
4
|
+
test "should get index" do
|
5
|
+
get :index
|
6
|
+
assert_response :success
|
7
|
+
assert_not_nil assigns(:pages)
|
8
|
+
end
|
9
|
+
|
10
|
+
test "should get new" do
|
11
|
+
@page = Page.new
|
12
|
+
get :new
|
13
|
+
assert_response :success
|
14
|
+
end
|
15
|
+
|
16
|
+
test "should create page" do
|
17
|
+
@built_page = FactoryGirl.build(:page)
|
18
|
+
assert @built_page.valid?, @built_page.inspect
|
19
|
+
assert_difference('Page.count') do
|
20
|
+
post :create, page: { content: @built_page.content, name: @built_page.name, permalink: @built_page.permalink }
|
21
|
+
end
|
22
|
+
|
23
|
+
assert_redirected_to page_path(assigns(:page))
|
24
|
+
end
|
25
|
+
|
26
|
+
test "should show page" do
|
27
|
+
@page = FactoryGirl.create(:page)
|
28
|
+
|
29
|
+
get :show, id: @page
|
30
|
+
assert_response :success
|
31
|
+
end
|
32
|
+
|
33
|
+
test "should get edit" do
|
34
|
+
@page = FactoryGirl.create(:page)
|
35
|
+
get :edit, id: @page
|
36
|
+
assert_response :success
|
37
|
+
end
|
38
|
+
|
39
|
+
test "should update page" do
|
40
|
+
@page = FactoryGirl.create(:page)
|
41
|
+
|
42
|
+
patch :update, id: @page, page: { content: @page.content, name: @page.name, permalink: @page.permalink }
|
43
|
+
assert_redirected_to page_path(assigns(:page))
|
44
|
+
end
|
45
|
+
|
46
|
+
test "should destroy page" do
|
47
|
+
@page = FactoryGirl.create(:page)
|
48
|
+
assert_difference('Page.count', -1) do
|
49
|
+
delete :destroy, id: @page
|
50
|
+
end
|
51
|
+
|
52
|
+
assert_redirected_to pages_path
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class UsersControllerTest < ActionController::TestCase
|
4
|
+
|
5
|
+
test "should get index" do
|
6
|
+
get :index
|
7
|
+
assert_response :success
|
8
|
+
assert_not_nil assigns(:users)
|
9
|
+
end
|
10
|
+
|
11
|
+
test "should get new" do
|
12
|
+
@user = User.new
|
13
|
+
get :new
|
14
|
+
assert_response :success
|
15
|
+
end
|
16
|
+
|
17
|
+
test "should create user" do
|
18
|
+
@user = FactoryGirl.build(:user)
|
19
|
+
assert_difference('User.count') do
|
20
|
+
post :create, user: { first_name: @user.first_name, password: @user.password, username: @user.username }
|
21
|
+
end
|
22
|
+
|
23
|
+
assert_redirected_to user_path(assigns(:user))
|
24
|
+
end
|
25
|
+
|
26
|
+
test "should show user" do
|
27
|
+
@user = FactoryGirl.create(:user)
|
28
|
+
get :show, id: @user
|
29
|
+
assert_response :success
|
30
|
+
end
|
31
|
+
|
32
|
+
test "should get edit" do
|
33
|
+
@user = FactoryGirl.create(:user)
|
34
|
+
get :edit, id: @user
|
35
|
+
assert_response :success
|
36
|
+
end
|
37
|
+
|
38
|
+
test "should update user" do
|
39
|
+
@user = FactoryGirl.create(:user)
|
40
|
+
patch :update, id: @user, user: { first_name: @user.first_name, password: @user.password, username: @user.username }
|
41
|
+
assert_redirected_to user_path(assigns(:user))
|
42
|
+
end
|
43
|
+
|
44
|
+
test "should destroy user" do
|
45
|
+
@user = FactoryGirl.create(:user)
|
46
|
+
assert_difference('User.count', -1) do
|
47
|
+
delete :destroy, id: @user
|
48
|
+
end
|
49
|
+
|
50
|
+
assert_redirected_to users_path
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RouteFormatterTest < ActionController::TestCase
|
4
|
+
|
5
|
+
test "routes returned as an array" do
|
6
|
+
expected_results = []
|
7
|
+
expected_results.push({path: '/pages', verb: 'GET', reqs: 'pages#index'})
|
8
|
+
expected_results.push({path: '/pages/new', verb: 'GET', reqs: 'pages#new'})
|
9
|
+
expected_results.push({path: '/pages/:id/edit', verb: 'GET', reqs: 'pages#edit'})
|
10
|
+
expected_results.push({path: '/pages/:id', verb: 'GET', reqs: 'pages#show'})
|
11
|
+
expected_results.push({path: '/:id', verb: 'GET', reqs: 'pages#show'})
|
12
|
+
expected_results.push({path: '/', verb: 'GET', reqs: 'pages#show {:id=>"home"}'})
|
13
|
+
expected_results.push({path: '/home', verb: 'GET', reqs: 'redirect(301, /)'})
|
14
|
+
expected_results.push({path: '/contact_us', verb: 'GET', reqs: 'pages#show {:id=>"contact"}'})
|
15
|
+
|
16
|
+
expected_results.push({:path=>"/users", :verb=>"GET", :reqs=>"users#index"})
|
17
|
+
expected_results.push({:path=>"/users/new", :verb=>"GET", :reqs=>"users#new"})
|
18
|
+
expected_results.push({:path=>"/users/:id/edit", :verb=>"GET", :reqs=>"users#edit"})
|
19
|
+
expected_results.push({:path=>"/users/:id", :verb=>"GET", :reqs=>"users#show"})
|
20
|
+
expected_results.push({:path=>"/:id", :verb=>"GET", :reqs=>"users#show"})
|
21
|
+
expected_results.push({:path=>"/all_users", :verb=>"GET", :reqs=>"users#index"})
|
22
|
+
|
23
|
+
expected_results.push({:path=>"/others", :verb=>"GET", :reqs=>"others#index"})
|
24
|
+
expected_results.push({:path=>"/others/new", :verb=>"GET", :reqs=>"others#new"})
|
25
|
+
expected_results.push({:path=>"/others/:id/edit", :verb=>"GET", :reqs=>"others#edit"})
|
26
|
+
expected_results.push({:path=>"/others/:id", :verb=>"GET", :reqs=>"others#show"})
|
27
|
+
expected_results.push({:path=>"/:id", :verb=>"GET", :reqs=>"others#show"})
|
28
|
+
|
29
|
+
|
30
|
+
inspector = ActionDispatch::Routing::RoutesInspector.new(Rails.application.routes.routes)
|
31
|
+
actual_results = inspector.format(ValidRoute::RouteFormatter.new)
|
32
|
+
|
33
|
+
actual_results.delete_if { |route|
|
34
|
+
route[:verb] != "GET"
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
unexpected_routes = actual_results - expected_results
|
39
|
+
expected_routes_missing = expected_results - actual_results
|
40
|
+
|
41
|
+
|
42
|
+
assert unexpected_routes.empty?, "\n" + "unexpected_routes:" + "\n" + "#{unexpected_routes}"
|
43
|
+
assert expected_routes_missing.empty?, "\n" + "expected_routes_missing:" + "\n" + "#{expected_routes_missing}"
|
44
|
+
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RouteValidatorTest < ActionController::TestCase
|
4
|
+
|
5
|
+
test "existing routes should not be allowed to conflict" do
|
6
|
+
|
7
|
+
FactoryGirl.create(:page, permalink: "home")
|
8
|
+
assert Page.exists?("home")
|
9
|
+
FactoryGirl.create(:page, permalink: "contact")
|
10
|
+
assert Page.exists?("contact")
|
11
|
+
|
12
|
+
FactoryGirl.create(:user, username: "vjm")
|
13
|
+
assert User.exists?("vjm")
|
14
|
+
|
15
|
+
assert_routing '/contact_us', { :controller => "pages", :action => "show", :id => "contact" }
|
16
|
+
assert_routing '/pages/home/edit', { :controller => "pages", :action => "edit", :id => "home" }
|
17
|
+
assert_routing '/pages/new', { :controller => "pages", :action => "new" }
|
18
|
+
assert_routing '/pages', { :controller => "pages", :action => "index" }
|
19
|
+
assert_routing "/", { :controller => "pages", :action => "show", :id => "home" }
|
20
|
+
|
21
|
+
# assert_recognizes({:controller => 'pages', :action => 'show', :id => 'random_page'}, '/random_page')
|
22
|
+
|
23
|
+
assert_routing '/users/vjm', { :controller => "users", :action => "show", :id => "vjm" }
|
24
|
+
assert_routing '/users/vjm/edit', { :controller => "users", :action => "edit", :id => "vjm" }
|
25
|
+
assert_routing '/users/new', { :controller => "users", :action => "new" }
|
26
|
+
assert_routing '/users', { :controller => "users", :action => "index" }
|
27
|
+
|
28
|
+
assert_recognizes({:controller => 'users', :action => 'index'}, '/all_users')
|
29
|
+
# assert_recognizes page_permalink_path, '/'
|
30
|
+
# assert_routing '/all_users', { :controller => "users", :action => "index" }
|
31
|
+
|
32
|
+
# assert_recognizes {:controller => 'users', :action => 'show', :id => 'vjm'}, '/vjm'
|
33
|
+
|
34
|
+
|
35
|
+
users_page = FactoryGirl.build(:page, permalink: "users")
|
36
|
+
assert !users_page.valid?
|
37
|
+
assert users_page.errors.full_messages.include?("Permalink route is taken"), users_page.errors.full_messages.inspect
|
38
|
+
|
39
|
+
pages_page = FactoryGirl.build(:page, permalink: "pages")
|
40
|
+
assert !pages_page.valid?, pages_page.errors.inspect
|
41
|
+
assert pages_page.errors.full_messages.include?("Permalink route is taken"), pages_page.errors.full_messages.inspect
|
42
|
+
|
43
|
+
vjm_page = FactoryGirl.build(:page, permalink: "vjm")
|
44
|
+
assert !vjm_page.valid?, vjm_page.errors.inspect
|
45
|
+
assert vjm_page.errors.full_messages.include?("Permalink route is taken"), vjm_page.errors.full_messages.inspect
|
46
|
+
|
47
|
+
|
48
|
+
home_user = FactoryGirl.build(:user, username: "home")
|
49
|
+
assert !home_user.valid?, home_user.errors.inspect
|
50
|
+
assert home_user.errors.full_messages.include?("Username route is taken"), home_user.errors.full_messages.inspect
|
51
|
+
|
52
|
+
contact_user = FactoryGirl.build(:user, username: "contact")
|
53
|
+
assert !contact_user.valid?, contact_user.errors.inspect
|
54
|
+
assert contact_user.errors.full_messages.include?("Username route is taken"), contact_user.errors.full_messages.inspect
|
55
|
+
|
56
|
+
pages_user = FactoryGirl.build(:user, username: "pages")
|
57
|
+
assert !pages_user.valid?, pages_user.errors.inspect
|
58
|
+
assert pages_user.errors.full_messages.include?("Username route is taken"), pages_user.errors.full_messages.inspect
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
test "additional reserved routes option" do
|
66
|
+
|
67
|
+
inspector = ActionDispatch::Routing::RoutesInspector.new(Rails.application.routes.routes)
|
68
|
+
actual_results = inspector.format(ValidRoute::RouteFormatter.new)
|
69
|
+
|
70
|
+
tommy_page = FactoryGirl.build(:page, permalink: "tommy")
|
71
|
+
assert !tommy_page.valid?, actual_results
|
72
|
+
assert tommy_page.errors.full_messages.include?("Permalink route is taken"), tommy_page.errors.full_messages.inspect
|
73
|
+
|
74
|
+
reserved_page = FactoryGirl.build(:page, permalink: "reserved")
|
75
|
+
assert !reserved_page.valid?, reserved_page.errors.inspect
|
76
|
+
assert reserved_page.errors.full_messages.include?("Permalink route is taken"), reserved_page.errors.full_messages.inspect
|
77
|
+
|
78
|
+
about_user = FactoryGirl.build(:user, username: "about")
|
79
|
+
assert !about_user.valid?, about_user.errors.inspect
|
80
|
+
assert about_user.errors.full_messages.include?("Username route is taken"), about_user.errors.full_messages.inspect
|
81
|
+
|
82
|
+
admin_user = FactoryGirl.build(:user, username: "admin")
|
83
|
+
assert !admin_user.valid?, admin_user.errors.inspect
|
84
|
+
assert admin_user.errors.full_messages.include?("Username route is taken"), admin_user.errors.full_messages.inspect
|
85
|
+
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
test "unreserved routes option" do
|
90
|
+
|
91
|
+
pages_user = FactoryGirl.build(:user, username: "pages")
|
92
|
+
assert !pages_user.valid?, pages_user.errors.inspect
|
93
|
+
assert pages_user.errors.full_messages.include?("Username route is taken"), pages_user.errors.full_messages.inspect
|
94
|
+
|
95
|
+
pages_other = FactoryGirl.build(:other, permalink: "pages")
|
96
|
+
assert pages_other.valid?
|
97
|
+
# assert pages_other.errors.full_messages.include?("Permalink route is taken"), pages_other.errors.full_messages.inspect
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|