goldberg_generator 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/USAGE +34 -0
- data/goldberg_generator.rb +463 -0
- data/templates/README_GOLDBERG +22 -0
- data/templates/app/views/layouts/application.rhtml +80 -0
- data/templates/layouts/ewnf/README +8 -0
- data/templates/layouts/ewnf/app/views/layouts/application.rhtml +74 -0
- data/templates/layouts/ewnf/public/images/bg.gif +0 -0
- data/templates/layouts/ewnf/public/images/daddy_rightarrow.gif +0 -0
- data/templates/layouts/ewnf/public/images/sample.jpg +0 -0
- data/templates/layouts/ewnf/public/images/title_img.jpg +0 -0
- data/templates/layouts/ewnf/public/stylesheets/layout.css +223 -0
- data/templates/layouts/snooker/app/views/layouts/application.rhtml +74 -0
- data/templates/layouts/snooker/public/images/column_200.png +0 -0
- data/templates/layouts/snooker/public/images/daddy_rightarrow.gif +0 -0
- data/templates/layouts/snooker/public/images/footer_bg.png +0 -0
- data/templates/layouts/snooker/public/images/logo.jpg +0 -0
- data/templates/layouts/snooker/public/stylesheets/layout.css +183 -0
- data/templates/layouts/spoiled_brat/LICENSE.txt +211 -0
- data/templates/layouts/spoiled_brat/README +8 -0
- data/templates/layouts/spoiled_brat/app/views/layouts/application.rhtml +71 -0
- data/templates/layouts/spoiled_brat/public/images/blockquote-bg.gif +0 -0
- data/templates/layouts/spoiled_brat/public/images/body-bg.jpg +0 -0
- data/templates/layouts/spoiled_brat/public/images/centerColumn-bg.jpg +0 -0
- data/templates/layouts/spoiled_brat/public/images/daddy_leftarrow.gif +0 -0
- data/templates/layouts/spoiled_brat/public/images/h2-bg.gif +0 -0
- data/templates/layouts/spoiled_brat/public/images/h3-bg.gif +0 -0
- data/templates/layouts/spoiled_brat/public/images/header-bg.jpg +0 -0
- data/templates/layouts/spoiled_brat/public/images/hr-bg.jpg +0 -0
- data/templates/layouts/spoiled_brat/public/images/logo.jpg +0 -0
- data/templates/layouts/spoiled_brat/public/stylesheets/layout.css +379 -0
- data/templates/public/goldberg/images/action.png +0 -0
- data/templates/public/goldberg/images/add.png +0 -0
- data/templates/public/goldberg/images/bodybg.jpg +0 -0
- data/templates/public/goldberg/images/delete.png +0 -0
- data/templates/public/goldberg/images/down.png +0 -0
- data/templates/public/goldberg/images/footerbg.jpg +0 -0
- data/templates/public/goldberg/images/logo_right.jpg +0 -0
- data/templates/public/goldberg/images/menuhover.jpg +0 -0
- data/templates/public/goldberg/images/page.png +0 -0
- data/templates/public/goldberg/images/permission.png +0 -0
- data/templates/public/goldberg/images/role.png +0 -0
- data/templates/public/goldberg/images/up.png +0 -0
- data/templates/public/goldberg/javascripts/suckerfish.js +12 -0
- data/templates/public/goldberg/stylesheets/goldberg.css +142 -0
- data/templates/public/goldberg/stylesheets/layout.css +321 -0
- data/templates/public/goldberg/stylesheets/suckerfish.css +124 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/auth_controller.rb +104 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/content_pages_controller.rb +197 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/controller_actions_controller.rb +134 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/menu_items_controller.rb +184 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/permissions_controller.rb +60 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/roles_controller.rb +85 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/roles_permissions_controller.rb +65 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/site_controllers_controller.rb +157 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/system_settings_controller.rb +75 -0
- data/templates/vendor/plugins/goldberg/app/controllers/goldberg/users_controller.rb +293 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/auth_helper.rb +4 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/content_pages_helper.rb +23 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/controller_actions_helper.rb +5 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/menu_items_helper.rb +4 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/permissions_helper.rb +4 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/roles_helper.rb +4 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/roles_permissions_helper.rb +4 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/site_controllers_helper.rb +4 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/system_settings_helper.rb +4 -0
- data/templates/vendor/plugins/goldberg/app/helpers/goldberg/users_helper.rb +4 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/content_page.rb +134 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/controller_action.rb +86 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/credentials.rb +128 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/menu.rb +198 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/menu_item.rb +127 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/permission.rb +37 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/role.rb +68 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/roles_permission.rb +18 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/site_controller.rb +59 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/system_settings.rb +112 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/user.rb +69 -0
- data/templates/vendor/plugins/goldberg/app/models/goldberg/user_mailer.rb +43 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/_login.rhtml +15 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/login.rhtml +22 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/logout.rhtml +2 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_create_folder.rxml +6 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_files.rxml +19 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_form.rhtml +32 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/edit.rhtml +10 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/fck_speller_pages.rhtml +58 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/list.rhtml +22 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/new.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/show.rhtml +57 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/view.rhtml +1 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/view_default.rhtml +1 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/_form.rhtml +53 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/edit.rhtml +9 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/list.rhtml +27 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/new.rhtml +10 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/show.rhtml +13 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_js.rhtml +52 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_list.rhtml +7 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_breadcrumbs.rhtml +5 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_form.rhtml +42 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_list.rhtml +52 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_parent_list.rhtml +15 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_menubar.rhtml +21 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_suckerfish.rhtml +14 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/edit.rhtml +10 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/list-original.rhtml +27 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/list.rhtml +16 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/new.rhtml +9 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/show.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/_form.rhtml +7 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/edit.rhtml +9 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/list.rhtml +14 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/new.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/show.rhtml +38 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/_form.rhtml +18 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/edit.rhtml +9 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/list.rhtml +21 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/new.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/show.rhtml +79 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/_form.rhtml +13 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/edit.rhtml +9 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/list.rhtml +24 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new_permission_for_role.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/show.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_form.rhtml +15 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_list.rhtml +26 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/edit.rhtml +9 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/list.rhtml +107 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/new.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/show.rhtml +38 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/_form.rhtml +71 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/edit.rhtml +9 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/list.rhtml +27 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/new.rhtml +8 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/show.rhtml +189 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/confirmation_request.rhtml +19 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password.rhtml +17 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password_request.rhtml +23 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/_form.rhtml +53 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration.rhtml +26 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration_submit.rhtml +4 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/create.rhtml +19 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/edit.rhtml +11 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password.rhtml +27 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password_submit.rhtml +4 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/list.rhtml +18 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/new.rhtml +19 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/reset_password.rhtml +11 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/reset_password_submit.rhtml +3 -0
- data/templates/vendor/plugins/goldberg/app/views/goldberg/users/show.rhtml +33 -0
- data/templates/vendor/plugins/goldberg/db/ContentPage.yml +466 -0
- data/templates/vendor/plugins/goldberg/db/ControllerAction.yml +162 -0
- data/templates/vendor/plugins/goldberg/db/MenuItem.yml +109 -0
- data/templates/vendor/plugins/goldberg/db/Permission.yml +21 -0
- data/templates/vendor/plugins/goldberg/db/Role.yml +493 -0
- data/templates/vendor/plugins/goldberg/db/RolesPermission.yml +26 -0
- data/templates/vendor/plugins/goldberg/db/SiteController.yml +61 -0
- data/templates/vendor/plugins/goldberg/db/SystemSettings.yml +21 -0
- data/templates/vendor/plugins/goldberg/db/User.yml +15 -0
- data/templates/vendor/plugins/goldberg/db/migrate/001_initial_setup.rb +128 -0
- data/templates/vendor/plugins/goldberg/db/migrate/002_menu_rest_items_users_cached_content_pages.rb +26 -0
- data/templates/vendor/plugins/goldberg/db/migrate/003_self_registration.rb +54 -0
- data/templates/vendor/plugins/goldberg/db/migrate/004_column_fixes.rb +119 -0
- data/templates/vendor/plugins/goldberg/init.rb +13 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg.rb +37 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg/controller.rb +11 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg/filters.rb +197 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg/helper.rb +66 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg/migration.rb +113 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg/migrator.rb +128 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg/model.rb +110 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg/routes.rb +49 -0
- data/templates/vendor/plugins/goldberg/lib/goldberg/test_helper.rb +82 -0
- data/templates/vendor/plugins/goldberg/tasks/goldberg_tasks.rake +47 -0
- data/templates/vendor/plugins/goldberg/test/functional/content_pages_controller_test.rb +31 -0
- data/templates/vendor/plugins/goldberg/test/integration/security_test.rb +134 -0
- data/templates/vendor/plugins/goldberg/test/test_helper.rb +40 -0
- data/templates/vendor/plugins/goldberg/test/unit/content_page_test.rb +87 -0
- data/templates/vendor/plugins/goldberg/test/unit/controller_action_test.rb +85 -0
- data/templates/vendor/plugins/goldberg/test/unit/menu_item_test.rb +46 -0
- data/templates/vendor/plugins/goldberg/test/unit/permission_test.rb +35 -0
- data/templates/vendor/plugins/goldberg/test/unit/site_controller_test.rb +53 -0
- data/templates/vendor/plugins/goldberg/test/unit/system_settings_test.rb +71 -0
- data/templates/vendor/plugins/goldberg/test/unit/user_test.rb +104 -0
- metadata +310 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
2
|
+
require File.expand_path(File.dirname(__FILE__) +
|
3
|
+
"/../../../../config/environment")
|
4
|
+
|
5
|
+
require 'test_help'
|
6
|
+
|
7
|
+
class Test::Unit::TestCase
|
8
|
+
# Transactional fixtures accelerate your tests by wrapping each test method
|
9
|
+
# in a transaction that's rolled back on completion. This ensures that the
|
10
|
+
# test database remains unchanged so your fixtures don't have to be reloaded
|
11
|
+
# between every test method. Fewer database queries means faster tests.
|
12
|
+
#
|
13
|
+
# Read Mike Clark's excellent walkthrough at
|
14
|
+
# http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
|
15
|
+
#
|
16
|
+
# Every Active Record database supports transactions except MyISAM tables
|
17
|
+
# in MySQL. Turn off transactional fixtures in this case; however, if you
|
18
|
+
# don't care one way or the other, switching from MyISAM to InnoDB tables
|
19
|
+
# is recommended.
|
20
|
+
#
|
21
|
+
# The only drawback to using transactional fixtures is when you actually
|
22
|
+
# need to test transactions. Since your test is bracketed by a transaction,
|
23
|
+
# any transactions started in your code will be automatically rolled back.
|
24
|
+
self.use_transactional_fixtures = true
|
25
|
+
|
26
|
+
# Instantiated fixtures are slow, but give you @david where otherwise you
|
27
|
+
# would need people(:david). If you don't want to migrate your existing
|
28
|
+
# test cases which use the @david style and don't mind the speed hit (each
|
29
|
+
# instantiated fixtures translates to a database query per test method),
|
30
|
+
# then set this back to true.
|
31
|
+
self.use_instantiated_fixtures = false
|
32
|
+
|
33
|
+
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
34
|
+
#
|
35
|
+
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
36
|
+
# -- they do not yet inherit this setting
|
37
|
+
# fixtures :all
|
38
|
+
|
39
|
+
# Add more helper methods to be used by all tests here...
|
40
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class ContentPageTest < Test::Unit::TestCase
|
4
|
+
include Goldberg::TestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@permission = Goldberg::Permission.find :first
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_all_fields
|
11
|
+
page = Goldberg::ContentPage.new(:name => 'test', :title => 'A test')
|
12
|
+
page.permission = @permission
|
13
|
+
page.markup_style = 'Raw HTML'
|
14
|
+
page.content = 'This is a test'
|
15
|
+
assert page.save
|
16
|
+
end
|
17
|
+
|
18
|
+
# Test that HTML content is generated when it's accessed
|
19
|
+
def test_content_cached_on_access
|
20
|
+
page = new_page()
|
21
|
+
page.content = 'This is a test'
|
22
|
+
# No content yet
|
23
|
+
assert_nil page.content_cache
|
24
|
+
# Calling #content_html triggers HTML generation
|
25
|
+
assert_not_nil page.content_html
|
26
|
+
assert_not_nil page.content_cache
|
27
|
+
end
|
28
|
+
|
29
|
+
# Test that HTML content is generated when the page is saved
|
30
|
+
def test_content_cached_on_save
|
31
|
+
page = new_page()
|
32
|
+
page.content = 'This is a test'
|
33
|
+
# No content yet
|
34
|
+
assert_nil page.content_cache
|
35
|
+
page.save
|
36
|
+
# Saving triggers HTML generation
|
37
|
+
assert_not_nil page.content_cache
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_minimal_fields
|
41
|
+
page = Goldberg::ContentPage.new(:name => 'test', :title => 'A test')
|
42
|
+
page.permission = @permission
|
43
|
+
assert page.save
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_no_fields
|
47
|
+
page = Goldberg::ContentPage.new
|
48
|
+
assert !page.valid?
|
49
|
+
# name, title and permission_id are compulsory
|
50
|
+
[:name, :title, :permission_id].each do |attr|
|
51
|
+
assert page.errors.on(attr)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Test that name is unique
|
56
|
+
def test_uniqueness_of
|
57
|
+
# Create a page named 'test' and save it
|
58
|
+
page1 = new_page()
|
59
|
+
assert page1.save
|
60
|
+
|
61
|
+
# Duplicate page name won't work
|
62
|
+
page2 = new_page()
|
63
|
+
assert !page2.save
|
64
|
+
assert page2.errors.on(:name)
|
65
|
+
|
66
|
+
# Fix name and it should work
|
67
|
+
page2.name = 'test2'
|
68
|
+
assert page2.save
|
69
|
+
end
|
70
|
+
|
71
|
+
# Test that the URL generated for the page equals the name preceded
|
72
|
+
# with a slash
|
73
|
+
def test_url_generation
|
74
|
+
page = new_page()
|
75
|
+
assert_equal page.url, '/test'
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
protected
|
80
|
+
|
81
|
+
def new_page
|
82
|
+
page = Goldberg::ContentPage.new(:name => 'test',
|
83
|
+
:title => 'This is a test')
|
84
|
+
page.permission = @permission
|
85
|
+
return page
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class ControllerActionTest < Test::Unit::TestCase
|
4
|
+
include Goldberg::TestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
# Some associated records (two of each will do)
|
8
|
+
(@sc1, @sc2) = Goldberg::SiteController.find :all
|
9
|
+
(@p1, @p2) = Goldberg::Permission.find :all
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_no_fields
|
13
|
+
ca = Goldberg::ControllerAction.new
|
14
|
+
assert !ca.valid?
|
15
|
+
# name, and site_controller_id are compulsory
|
16
|
+
[:name, :site_controller_id].each do |attr|
|
17
|
+
assert ca.errors.on(attr)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_minimal_fields
|
22
|
+
ca = Goldberg::ControllerAction.new(:name => 'test')
|
23
|
+
ca.site_controller = @sc1
|
24
|
+
assert ca.save
|
25
|
+
|
26
|
+
# All fields
|
27
|
+
ca.permission = @p1
|
28
|
+
assert ca.save
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_all_fields
|
32
|
+
ca = Goldberg::ControllerAction.new(:name => 'test')
|
33
|
+
ca.site_controller = @sc1
|
34
|
+
ca.permission = @p1
|
35
|
+
assert ca.save
|
36
|
+
end
|
37
|
+
|
38
|
+
# The name of the controller action should be unique within the
|
39
|
+
# scope of the site controller.
|
40
|
+
def test_name_unique_within_scope_of_site_controller
|
41
|
+
ca1 = Goldberg::ControllerAction.new(:name => 'test')
|
42
|
+
ca2 = Goldberg::ControllerAction.new(:name => 'test')
|
43
|
+
ca1.site_controller = @sc1
|
44
|
+
ca2.site_controller = @sc1
|
45
|
+
ca1.save
|
46
|
+
|
47
|
+
# Error: name not unique within scope of controller
|
48
|
+
assert !ca2.save
|
49
|
+
assert ca2.errors.on(:name)
|
50
|
+
|
51
|
+
# Should work: same name, different controllers
|
52
|
+
ca2.site_controller = @sc2
|
53
|
+
assert ca2.save
|
54
|
+
|
55
|
+
# Should work: different names, same controller
|
56
|
+
ca2.name = 'test2'
|
57
|
+
ca2.site_controller = @sc1
|
58
|
+
assert ca2.save
|
59
|
+
end
|
60
|
+
|
61
|
+
# The effective permission is the permission of the controller
|
62
|
+
# action, if specified; otherwise it is the permission of the
|
63
|
+
# action's site controller.
|
64
|
+
def test_effective_permission
|
65
|
+
# Make sure we know the permission on the site controller
|
66
|
+
@sc1.permission = @p1
|
67
|
+
@sc1.save!
|
68
|
+
|
69
|
+
ca = Goldberg::ControllerAction.new(:name => 'test')
|
70
|
+
ca.site_controller = @sc1
|
71
|
+
ca.save!
|
72
|
+
|
73
|
+
# No explicit permission: effective permission should be the same
|
74
|
+
# as site controller
|
75
|
+
assert_nil ca.permission
|
76
|
+
assert_equal @p1.id, ca.effective_permission.id
|
77
|
+
|
78
|
+
# Explicit permission: should override permission of site
|
79
|
+
# controller
|
80
|
+
ca.permission = @p2
|
81
|
+
ca.save!
|
82
|
+
assert_not_nil ca.permission
|
83
|
+
assert_equal @p2.id, ca.effective_permission.id
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class MenuItemTest < Test::Unit::TestCase
|
4
|
+
include Goldberg::TestHelper
|
5
|
+
|
6
|
+
def test_name_is_unique
|
7
|
+
name_1 = 'THIS_IS_NAME_1'
|
8
|
+
name_2 = 'THIS_IS_NAME_2'
|
9
|
+
name_1.freeze
|
10
|
+
name_2.freeze
|
11
|
+
|
12
|
+
menu_item_1 = Goldberg::MenuItem.new(:content_page_id => 1)
|
13
|
+
menu_item_2 = Goldberg::MenuItem.new(:content_page_id => 1)
|
14
|
+
|
15
|
+
menu_item_1.name = name_1
|
16
|
+
menu_item_1.label = 'This is name 1'
|
17
|
+
menu_item_2.name = name_2
|
18
|
+
menu_item_2.label = 'This is name 2'
|
19
|
+
|
20
|
+
assert(menu_item_1.save)
|
21
|
+
assert(menu_item_2.save)
|
22
|
+
|
23
|
+
menu_item_2.name = name_1
|
24
|
+
|
25
|
+
assert(!menu_item_2.save)
|
26
|
+
assert(menu_item_2.errors.invalid?(:name))
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def test_name_is_required
|
31
|
+
mi = Goldberg::MenuItem.new(:content_page_id => 1)
|
32
|
+
assert(!mi.valid?)
|
33
|
+
assert(mi.errors.invalid?(:name))
|
34
|
+
assert(!mi.save)
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def test_must_have_content_page_or_controller_action
|
39
|
+
mi = Goldberg::MenuItem.new(:name => 'test', :label => 'Test')
|
40
|
+
assert(!mi.valid?)
|
41
|
+
assert(mi.errors.invalid?(:content_page_id))
|
42
|
+
assert(mi.errors.invalid?(:controller_action_id))
|
43
|
+
assert(!mi.save)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class PermissionTest < Test::Unit::TestCase
|
4
|
+
include Goldberg::TestHelper
|
5
|
+
|
6
|
+
def test_invalid_without_name
|
7
|
+
permission = Goldberg::Permission.new
|
8
|
+
assert(!permission.valid?)
|
9
|
+
assert(permission.errors.invalid?(:name))
|
10
|
+
assert(!permission.save)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def test_uniqueness_of_name
|
15
|
+
name_1 = 'THIS_IS_NAME_1'
|
16
|
+
name_2 = 'THIS_IS_NAME_2'
|
17
|
+
name_1.freeze
|
18
|
+
name_2.freeze
|
19
|
+
|
20
|
+
permission_1 = Goldberg::Permission.new
|
21
|
+
permission_2 = Goldberg::Permission.new
|
22
|
+
|
23
|
+
permission_1.name = name_1
|
24
|
+
permission_2.name = name_2
|
25
|
+
|
26
|
+
assert(permission_1.save)
|
27
|
+
assert(permission_2.save)
|
28
|
+
|
29
|
+
permission_2.name = name_1
|
30
|
+
|
31
|
+
assert(!permission_2.save)
|
32
|
+
assert(permission_2.errors.invalid?(:name))
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class SiteControllerTest < Test::Unit::TestCase
|
4
|
+
include Goldberg::TestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@p = Goldberg::Permission.find :first
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_invalid_without_name
|
11
|
+
site_controller = Goldberg::SiteController.new
|
12
|
+
assert(!site_controller.valid?)
|
13
|
+
assert(site_controller.errors.invalid?(:name))
|
14
|
+
assert(!site_controller.save)
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def test_uniqueness_of_name
|
19
|
+
name_1 = 'THIS_IS_NAME_1'
|
20
|
+
name_2 = 'THIS_IS_NAME_2'
|
21
|
+
name_1.freeze
|
22
|
+
name_2.freeze
|
23
|
+
|
24
|
+
site_controller_1 = Goldberg::SiteController.new
|
25
|
+
site_controller_1.permission = @p
|
26
|
+
site_controller_2 = Goldberg::SiteController.new
|
27
|
+
site_controller_2.permission = @p
|
28
|
+
|
29
|
+
site_controller_1.name = name_1
|
30
|
+
site_controller_2.name = name_2
|
31
|
+
|
32
|
+
assert(site_controller_1.save)
|
33
|
+
assert(site_controller_2.save)
|
34
|
+
|
35
|
+
site_controller_2.name = name_1
|
36
|
+
|
37
|
+
assert(!site_controller_2.save)
|
38
|
+
assert(site_controller_2.errors.invalid?(:name))
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
#create so the classes method can be tested...
|
43
|
+
class ThereShouldBeNoSuchRealClassNameGoldbergTestController < ApplicationController
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def test_classes_finds_direct_controller_derivatives
|
48
|
+
classes = Goldberg::SiteController.classes
|
49
|
+
assert(classes.has_value?(SiteControllerTest::ThereShouldBeNoSuchRealClassNameGoldbergTestController))
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class SystemSettingsTest < Test::Unit::TestCase
|
4
|
+
include Goldberg::TestHelper
|
5
|
+
|
6
|
+
def test_public_role
|
7
|
+
public_role = Goldberg::Role.find :first
|
8
|
+
ss = Goldberg::SystemSettings.create(:public_role_id => public_role.id)
|
9
|
+
assert_equal(public_role, ss.public_role)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_public_role_raises_when_role_not_found
|
13
|
+
ss = Goldberg::SystemSettings.create
|
14
|
+
assert_raise(ActiveRecord::RecordNotFound) {ss.public_role}
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_site_default_page
|
18
|
+
page = Goldberg::ContentPage.find :first
|
19
|
+
ss = Goldberg::SystemSettings.create(:site_default_page_id => page.id)
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def test_site_default_page_raises_when_page_not_found
|
24
|
+
ss = Goldberg::SystemSettings.create
|
25
|
+
assert_raise(ActiveRecord::RecordNotFound) {ss.site_default_page}
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
def test_not_found_page
|
30
|
+
page = Goldberg::ContentPage.find :first
|
31
|
+
ss = Goldberg::SystemSettings.create(:not_found_page_id => page.id)
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def test_not_found_page_raises_when_page_not_found
|
36
|
+
ss = Goldberg::SystemSettings.create
|
37
|
+
assert_raise(ActiveRecord::RecordNotFound) {ss.not_found_page}
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def test_permission_denied_page
|
42
|
+
page = Goldberg::ContentPage.find :first
|
43
|
+
ss = Goldberg::SystemSettings.create(:permission_denied_page_id => page.id)
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def test_permission_denied_page_raises_when_page_permission_denied
|
48
|
+
ss = Goldberg::SystemSettings.create
|
49
|
+
assert_raise(ActiveRecord::RecordNotFound) {ss.permission_denied_page}
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
def test_session_expired_page
|
54
|
+
page = Goldberg::ContentPage.find :first
|
55
|
+
ss = Goldberg::SystemSettings.create(:session_expired_page_id => page.id)
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
def test_session_expired_page_raises_when_page_session_expired
|
60
|
+
ss = Goldberg::SystemSettings.create
|
61
|
+
assert_raise(ActiveRecord::RecordNotFound) {ss.session_expired_page}
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
def test_system_pages_returns_nil_when_tested_page_not_system_page
|
66
|
+
ss = Goldberg::SystemSettings.create
|
67
|
+
page = Goldberg::ContentPage.find :first
|
68
|
+
assert_nil(ss.system_pages(page.id))
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class UserTest < Test::Unit::TestCase
|
4
|
+
include Goldberg::TestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@role = Goldberg::Role.find :first
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_requires_name
|
11
|
+
user = Goldberg::User.new
|
12
|
+
assert(!user.valid?)
|
13
|
+
assert(user.errors.invalid?(:name))
|
14
|
+
assert(!user.save)
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def test_name_unique
|
19
|
+
name_1 = 'NAME1'
|
20
|
+
name_2 = 'NAME2'
|
21
|
+
name_1.freeze
|
22
|
+
name_2.freeze
|
23
|
+
|
24
|
+
user_1 = Goldberg::User.new(:name => name_1)
|
25
|
+
user_1.role = @role
|
26
|
+
user_1.clear_password = 'fred'
|
27
|
+
user_2 = Goldberg::User.new(:name => name_2)
|
28
|
+
user_2.role = @role
|
29
|
+
user_2.clear_password = 'fred'
|
30
|
+
|
31
|
+
assert(user_1.save)
|
32
|
+
assert(user_2.save)
|
33
|
+
|
34
|
+
user_2.name = name_1
|
35
|
+
assert(!user_2.save)
|
36
|
+
assert(!user_2.valid?)
|
37
|
+
assert(user_2.errors.invalid?(:name))
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def test_password_updated_on_save_when_clear_password_set
|
42
|
+
user = Goldberg::User.new(:name => 'name')
|
43
|
+
user.role = @role
|
44
|
+
user.clear_password = 'fred'
|
45
|
+
assert(user.save)
|
46
|
+
|
47
|
+
saved_password = user.password
|
48
|
+
saved_salt = user.password_salt
|
49
|
+
|
50
|
+
user.clear_password = 'test123'
|
51
|
+
assert(user.save)
|
52
|
+
|
53
|
+
assert_not_equal(saved_password, user.password)
|
54
|
+
assert_not_equal(saved_salt, user.password_salt)
|
55
|
+
|
56
|
+
saved_password = user.password
|
57
|
+
saved_salt = user.password_salt
|
58
|
+
|
59
|
+
user.name = 'haha'
|
60
|
+
assert(user.name)
|
61
|
+
|
62
|
+
assert_equal(saved_password, user.password)
|
63
|
+
assert_equal(saved_salt, user.password_salt)
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
def test_clear_password_set_nil_on_save
|
68
|
+
new_pass = 'test123'
|
69
|
+
new_pass.freeze
|
70
|
+
|
71
|
+
user = Goldberg::User.new(:name => 'name')
|
72
|
+
user.role = @role
|
73
|
+
assert(!user.save)
|
74
|
+
|
75
|
+
user.clear_password = new_pass
|
76
|
+
assert_equal(new_pass, user.clear_password)
|
77
|
+
assert(user.save)
|
78
|
+
assert_nil(user.clear_password)
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
def test_check_password
|
83
|
+
first_pass = 'test'
|
84
|
+
new_pass = 'test1'
|
85
|
+
first_pass.freeze
|
86
|
+
new_pass.freeze
|
87
|
+
|
88
|
+
assert_not_equal(first_pass, new_pass)
|
89
|
+
|
90
|
+
user = Goldberg::User.new(:name => 'user')
|
91
|
+
user.role = @role
|
92
|
+
user.clear_password = first_pass
|
93
|
+
assert(user.save)
|
94
|
+
|
95
|
+
assert(user.check_password(first_pass))
|
96
|
+
assert(!user.check_password(new_pass))
|
97
|
+
|
98
|
+
user.clear_password = new_pass
|
99
|
+
assert(user.save)
|
100
|
+
|
101
|
+
assert(user.check_password(new_pass))
|
102
|
+
assert(!user.check_password(first_pass))
|
103
|
+
end
|
104
|
+
end
|