barkest_core 1.5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +254 -0
- data/MIT-LICENSE +20 -0
- data/README.md +364 -0
- data/Rakefile +37 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Bold.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-BoldItalic.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Italic.ttf +0 -0
- data/app/assets/fonts/barkest_core/ArchivoNarrow-Regular.ttf +0 -0
- data/app/assets/images/barkest_core/.keep +0 -0
- data/app/assets/images/barkest_core/barcode-B.svg +181 -0
- data/app/assets/javascripts/barkest_core/.keep +0 -0
- data/app/assets/javascripts/barkest_core/application.js +22 -0
- data/app/assets/javascripts/barkest_core/bootstrap-datepicker.js +1800 -0
- data/app/assets/javascripts/barkest_core/field_init.js +7 -0
- data/app/assets/javascripts/barkest_core/jquery.doubleScroll.js +112 -0
- data/app/assets/javascripts/barkest_core/masked_edit.js +25 -0
- data/app/assets/javascripts/barkest_core/system_status.js.erb +201 -0
- data/app/assets/stylesheets/barkest_core/.keep +0 -0
- data/app/assets/stylesheets/barkest_core/application.css +17 -0
- data/app/assets/stylesheets/barkest_core/custom.css.scss +264 -0
- data/app/assets/stylesheets/barkest_core/datepicker3.css +790 -0
- data/app/controllers/.keep +0 -0
- data/app/controllers/access_groups_controller.rb +74 -0
- data/app/controllers/account_activations_controller.rb +29 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/barkest_core/application_controller_base.rb +113 -0
- data/app/controllers/barkest_core/engine_controller_base.rb +15 -0
- data/app/controllers/barkest_core/testsub_controller.rb +21 -0
- data/app/controllers/contact_controller.rb +32 -0
- data/app/controllers/log_view_controller.rb +31 -0
- data/app/controllers/password_resets_controller.rb +126 -0
- data/app/controllers/sessions_controller.rb +64 -0
- data/app/controllers/status_controller.rb +150 -0
- data/app/controllers/system_config_controller.rb +238 -0
- data/app/controllers/system_update_controller.rb +164 -0
- data/app/controllers/test_access_controller.rb +44 -0
- data/app/controllers/test_report_controller.rb +75 -0
- data/app/controllers/users_controller.rb +218 -0
- data/app/helpers/.keep +0 -0
- data/app/helpers/barkest_core/application_helper.rb +134 -0
- data/app/helpers/barkest_core/form_helper.rb +469 -0
- data/app/helpers/barkest_core/html_helper.rb +70 -0
- data/app/helpers/barkest_core/misc_helper.rb +68 -0
- data/app/helpers/barkest_core/pdf_helper.rb +180 -0
- data/app/helpers/barkest_core/recaptcha_helper.rb +115 -0
- data/app/helpers/barkest_core/sessions_helper.rb +94 -0
- data/app/helpers/barkest_core/status_helper.rb +118 -0
- data/app/helpers/barkest_core/users_helper.rb +32 -0
- data/app/mailers/.keep +0 -0
- data/app/mailers/application_mailer.rb +5 -0
- data/app/mailers/barkest_core/application_mailer_base.rb +30 -0
- data/app/mailers/barkest_core/contact_form.rb +20 -0
- data/app/mailers/barkest_core/user_mailer.rb +44 -0
- data/app/models/.keep +0 -0
- data/app/models/access_group.rb +121 -0
- data/app/models/access_group_group_member.rb +13 -0
- data/app/models/access_group_user_member.rb +11 -0
- data/app/models/barkest_core/auth_config.rb +95 -0
- data/app/models/barkest_core/authorize_failure.rb +7 -0
- data/app/models/barkest_core/contact_message.rb +37 -0
- data/app/models/barkest_core/database_config.rb +223 -0
- data/app/models/barkest_core/db_table.rb +21 -0
- data/app/models/barkest_core/email_config.rb +132 -0
- data/app/models/barkest_core/global_status.rb +267 -0
- data/app/models/barkest_core/log_entry.rb +101 -0
- data/app/models/barkest_core/log_view_options.rb +51 -0
- data/app/models/barkest_core/ms_sql_db_definition.rb +441 -0
- data/app/models/barkest_core/ms_sql_definition.rb +221 -0
- data/app/models/barkest_core/ms_sql_function.rb +423 -0
- data/app/models/barkest_core/not_logged_in.rb +7 -0
- data/app/models/barkest_core/pdf_table_builder.rb +407 -0
- data/app/models/barkest_core/self_update_config.rb +37 -0
- data/app/models/barkest_core/user_alert.rb +29 -0
- data/app/models/barkest_core/user_alert_generators.rb +58 -0
- data/app/models/barkest_core/user_manager.rb +404 -0
- data/app/models/barkest_core/work_path.rb +74 -0
- data/app/models/disable_user.rb +18 -0
- data/app/models/ldap_access_group.rb +15 -0
- data/app/models/system_config.rb +99 -0
- data/app/models/user.rb +405 -0
- data/app/models/user_login_history.rb +11 -0
- data/app/views/.keep +0 -0
- data/app/views/access_groups/_form.html.erb +19 -0
- data/app/views/access_groups/edit.html.erb +2 -0
- data/app/views/access_groups/index.html.erb +32 -0
- data/app/views/access_groups/new.html.erb +2 -0
- data/app/views/access_groups/show.html.erb +4 -0
- data/app/views/barkest_core/contact_form/contact.html.erb +16 -0
- data/app/views/barkest_core/contact_form/contact.text.erb +13 -0
- data/app/views/barkest_core/testsub/_links.html.erb +5 -0
- data/app/views/barkest_core/testsub/page1.html.erb +3 -0
- data/app/views/barkest_core/testsub/page2.html.erb +2 -0
- data/app/views/barkest_core/testsub/page3.html.erb +2 -0
- data/app/views/barkest_core/user_mailer/account_activation.html.erb +7 -0
- data/app/views/barkest_core/user_mailer/account_activation.text.erb +6 -0
- data/app/views/barkest_core/user_mailer/invalid_password_reset.html.erb +3 -0
- data/app/views/barkest_core/user_mailer/invalid_password_reset.text.erb +5 -0
- data/app/views/barkest_core/user_mailer/password_reset.html.erb +8 -0
- data/app/views/barkest_core/user_mailer/password_reset.text.erb +7 -0
- data/app/views/contact/index.html.erb +24 -0
- data/app/views/layouts/_footer_copyright.html.erb +1 -0
- data/app/views/layouts/_menu_admin.html.erb +5 -0
- data/app/views/layouts/_menu_anon.html.erb +0 -0
- data/app/views/layouts/_menu_auth.html.erb +3 -0
- data/app/views/layouts/_menu_footer.html.erb +1 -0
- data/app/views/layouts/_nav_logo.html.erb +1 -0
- data/app/views/layouts/application.html.erb +2 -0
- data/app/views/layouts/barkest_core/_application.html.erb +24 -0
- data/app/views/layouts/barkest_core/_footer.html.erb +18 -0
- data/app/views/layouts/barkest_core/_header.html.erb +38 -0
- data/app/views/layouts/barkest_core/_html_mailer.html.erb +11 -0
- data/app/views/layouts/barkest_core/_menu_account.html.erb +14 -0
- data/app/views/layouts/barkest_core/_menu_sample.html.erb +1 -0
- data/app/views/layouts/barkest_core/_messages.html.erb +4 -0
- data/app/views/layouts/barkest_core/_shim.html.erb +4 -0
- data/app/views/layouts/barkest_core/_subheader.html.erb +1 -0
- data/app/views/layouts/barkest_core/_text_mailer.text.erb +4 -0
- data/app/views/layouts/mailer.html.erb +1 -0
- data/app/views/layouts/mailer.text.erb +1 -0
- data/app/views/log_view/index.html.erb +100 -0
- data/app/views/password_resets/edit.html.erb +20 -0
- data/app/views/password_resets/new.html.erb +14 -0
- data/app/views/sessions/new.html.erb +27 -0
- data/app/views/shared/_error_messages.html.erb +29 -0
- data/app/views/shared/_generic_user_alert.html.erb +4 -0
- data/app/views/status/current.html.erb +34 -0
- data/app/views/status/test.html.erb +50 -0
- data/app/views/system_config/index.html.erb +25 -0
- data/app/views/system_config/show_auth.html.erb +28 -0
- data/app/views/system_config/show_database.html.erb +36 -0
- data/app/views/system_config/show_email.html.erb +21 -0
- data/app/views/system_config/show_self_update.html.erb +13 -0
- data/app/views/system_update/index.html.erb +31 -0
- data/app/views/system_update/new.html.erb +2 -0
- data/app/views/test_access/allow_anon.html.erb +2 -0
- data/app/views/test_access/require_admin.html.erb +2 -0
- data/app/views/test_access/require_group_x.html.erb +2 -0
- data/app/views/test_access/require_user.html.erb +2 -0
- data/app/views/test_report/index.csv.csvrb +23 -0
- data/app/views/test_report/index.html.erb +6 -0
- data/app/views/test_report/index.pdf.prawn +50 -0
- data/app/views/test_report/index.xlsx.axlsx +28 -0
- data/app/views/users/_user.html.erb +57 -0
- data/app/views/users/_user_details.html.erb +15 -0
- data/app/views/users/_user_details_for_list.html.erb +1 -0
- data/app/views/users/_user_form.html.erb +13 -0
- data/app/views/users/disable_confirm.html.erb +19 -0
- data/app/views/users/edit.html.erb +15 -0
- data/app/views/users/index.html.erb +9 -0
- data/app/views/users/new.html.erb +10 -0
- data/app/views/users/show.html.erb +46 -0
- data/bin/rails +12 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20160617172539_create_access_groups.rb +10 -0
- data/db/migrate/20160617172725_create_users.rb +26 -0
- data/db/migrate/20160617172833_create_user_login_histories.rb +12 -0
- data/db/migrate/20160622151720_create_access_group_user_members.rb +9 -0
- data/db/migrate/20160622151925_create_access_group_group_members.rb +9 -0
- data/db/migrate/20160701005706_create_ldap_access_groups.rb +11 -0
- data/db/migrate/20161108155029_create_system_configs.rb +11 -0
- data/db/seeds/barkest_core_01_create_users.rb +42 -0
- data/db/seeds.rb +53 -0
- data/lib/barkest_core/concerns/association_with_defaults.rb +55 -0
- data/lib/barkest_core/concerns/boolean_parser.rb +88 -0
- data/lib/barkest_core/concerns/date_parser.rb +181 -0
- data/lib/barkest_core/concerns/email_tester.rb +55 -0
- data/lib/barkest_core/concerns/encrypted_fields.rb +156 -0
- data/lib/barkest_core/concerns/named_model.rb +73 -0
- data/lib/barkest_core/concerns/number_parser.rb +145 -0
- data/lib/barkest_core/concerns/utc_conversion.rb +60 -0
- data/lib/barkest_core/engine.rb +105 -0
- data/lib/barkest_core/extensions/active_record_extensions.rb +120 -0
- data/lib/barkest_core/extensions/application_configuration_extensions.rb +38 -0
- data/lib/barkest_core/extensions/application_extensions.rb +50 -0
- data/lib/barkest_core/extensions/axlsx_extenstions.rb +157 -0
- data/lib/barkest_core/extensions/fixture_set_extensions.rb +107 -0
- data/lib/barkest_core/extensions/generator_extensions.rb +271 -0
- data/lib/barkest_core/extensions/main_app_extensions.rb +35 -0
- data/lib/barkest_core/extensions/prawn_document_extensions.rb +367 -0
- data/lib/barkest_core/extensions/prawn_table_extensions.rb +131 -0
- data/lib/barkest_core/extensions/router_extensions.rb +106 -0
- data/lib/barkest_core/extensions/simple_formatter_extensions.rb +66 -0
- data/lib/barkest_core/extensions/test_case_extensions.rb +348 -0
- data/lib/barkest_core/extensions/time_extensions.rb +164 -0
- data/lib/barkest_core/handlers/csv_handler.rb +30 -0
- data/lib/barkest_core/version.rb +3 -0
- data/lib/barkest_core.rb +324 -0
- data/lib/generators/barkest/install_generator.rb +102 -0
- data/lib/generators/barkest_core/actions/01_patch_application_controller.rb +55 -0
- data/lib/generators/barkest_core/actions/02_patch_application_mailer.rb +56 -0
- data/lib/generators/barkest_core/actions/03_patch_assets.rb +62 -0
- data/lib/generators/barkest_core/actions/04_patch_layouts.rb +36 -0
- data/lib/generators/barkest_core/actions/05_patch_routes.rb +93 -0
- data/lib/generators/barkest_core/actions/06_patch_seeds.rb +60 -0
- data/lib/generators/barkest_core/actions/07_copy_migrations.rb +51 -0
- data/lib/generators/barkest_core/actions/08_configure_database.rb +52 -0
- data/lib/generators/barkest_core/actions/09_configure_secrets.rb +29 -0
- data/lib/generators/barkest_core/actions/99_patch_gitignore.rb +57 -0
- data/lib/generators/barkest_core/install_generator.rb +17 -0
- data/test/barkest_core_test.rb +83 -0
- data/test/controllers/access_groups_controller_test.rb +53 -0
- data/test/controllers/contact_controller_test.rb +10 -0
- data/test/controllers/sessions_controller_test.rb +10 -0
- data/test/controllers/users_controller_test.rb +10 -0
- data/test/dummy/.gitignore +10 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +14 -0
- data/test/dummy/app/assets/stylesheets/application.css +16 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/mailers/application_mailer.rb +3 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +1 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +1 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/app/views/system_config/show_fake.html.erb +3 -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/bin/setup +29 -0
- data/test/dummy/config/application.rb +27 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +47 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +44 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/db_updater_ext.rb +33 -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 +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/sys_config_ext.rb +12 -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 +60 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/schema.rb +95 -0
- data/test/dummy/db/seeds/barkest_core_01_create_users.rb +42 -0
- data/test/dummy/db/seeds.rb +51 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/sql/my_test_view.sql +3 -0
- data/test/fixtures/access_groups.yml +21 -0
- data/test/fixtures/users.yml +71 -0
- data/test/helpers/barkest_core/sessions_helper_test.rb +22 -0
- data/test/integration/access_group_mgmt_test.rb +33 -0
- data/test/integration/access_test.rb +24 -0
- data/test/integration/account_activations_access_test.rb +12 -0
- data/test/integration/contact_test.rb +98 -0
- data/test/integration/extra_partial_test.rb +41 -0
- data/test/integration/log_view_access_test.rb +12 -0
- data/test/integration/password_resets_test.rb +101 -0
- data/test/integration/reports_test.rb +53 -0
- data/test/integration/status_access_test.rb +27 -0
- data/test/integration/system_config_access_test.rb +24 -0
- data/test/integration/system_update_access_test.rb +19 -0
- data/test/integration/users_access_test.rb +34 -0
- data/test/integration/users_edit_test.rb +178 -0
- data/test/integration/users_index_test.rb +62 -0
- data/test/integration/users_login_test.rb +67 -0
- data/test/integration/users_signup_test.rb +54 -0
- data/test/mailers/.keep +0 -0
- data/test/mailers/barkest_core/contact_form_test.rb +28 -0
- data/test/mailers/barkest_core/user_mailer_test.rb +43 -0
- data/test/mailers/previews/barkest_core/contact_form_preview.rb +17 -0
- data/test/mailers/previews/barkest_core/user_mailer_preview.rb +26 -0
- data/test/models/access_group_group_member_test.rb +28 -0
- data/test/models/access_group_test.rb +114 -0
- data/test/models/access_group_user_member_test.rb +28 -0
- data/test/models/barkest_core/auth_config_test.rb +57 -0
- data/test/models/barkest_core/bool_parser_test.rb +28 -0
- data/test/models/barkest_core/contact_message_test.rb +61 -0
- data/test/models/barkest_core/database_config_test.rb +33 -0
- data/test/models/barkest_core/date_parser_test.rb +110 -0
- data/test/models/barkest_core/email_config_test.rb +57 -0
- data/test/models/barkest_core/global_status_test.rb +50 -0
- data/test/models/barkest_core/ms_sql_db_updater_test.rb +115 -0
- data/test/models/barkest_core/ms_sql_definition_test.rb +102 -0
- data/test/models/barkest_core/ms_sql_function_test.rb +131 -0
- data/test/models/barkest_core/number_parser_test.rb +29 -0
- data/test/models/barkest_core/self_update_config_test.rb +29 -0
- data/test/models/barkest_core/user_alert_test.rb +19 -0
- data/test/models/barkest_core/user_manager_test.rb +34 -0
- data/test/models/barkest_core/work_path_test.rb +26 -0
- data/test/models/disable_user_test.rb +27 -0
- data/test/models/generic_time_test.rb +66 -0
- data/test/models/ldap_access_group_test.rb +31 -0
- data/test/models/pdf_table_builder_test.rb +6 -0
- data/test/models/system_config_test.rb +78 -0
- data/test/models/user_login_history_test.rb +37 -0
- data/test/models/user_test.rb +130 -0
- data/test/test_helper.rb +63 -0
- metadata +798 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class UsersSignupTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
ActionMailer::Base.deliveries.clear
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
test 'invalid signup information' do
|
|
10
|
+
get signup_path
|
|
11
|
+
assert_no_difference 'User.count' do
|
|
12
|
+
post signup_path, user: {
|
|
13
|
+
name: '',
|
|
14
|
+
email: 'user@invalid',
|
|
15
|
+
password: 'foo',
|
|
16
|
+
password_confirmation: 'baz'
|
|
17
|
+
}
|
|
18
|
+
end
|
|
19
|
+
assert_template 'users/new'
|
|
20
|
+
assert_select 'div#error_explanation'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
test 'valid signup information' do
|
|
24
|
+
get signup_path
|
|
25
|
+
assert_difference 'User.count', 1 do
|
|
26
|
+
post signup_path, user: {
|
|
27
|
+
name: 'Example User',
|
|
28
|
+
email: 'new-user@example.com',
|
|
29
|
+
password: 'password',
|
|
30
|
+
password_confirmation: 'password'
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
assert_not is_logged_in?
|
|
34
|
+
assert_equal 1, ActionMailer::Base.deliveries.size
|
|
35
|
+
user = assigns(:user)
|
|
36
|
+
assert_not user.activated?
|
|
37
|
+
token = user.activation_token
|
|
38
|
+
assert_not_nil token
|
|
39
|
+
# try logging in before activation
|
|
40
|
+
log_in_as user
|
|
41
|
+
assert_not is_logged_in?
|
|
42
|
+
# invalid activation token
|
|
43
|
+
get edit_account_activation_url('invalid token', email: user.email)
|
|
44
|
+
assert_not is_logged_in?
|
|
45
|
+
assert_not user.reload.activated?
|
|
46
|
+
# valid activation token
|
|
47
|
+
get edit_account_activation_url(token, email: user.email)
|
|
48
|
+
assert user.reload.activated?
|
|
49
|
+
follow_redirect!
|
|
50
|
+
assert_template 'users/show'
|
|
51
|
+
assert is_logged_in?
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
data/test/mailers/.keep
ADDED
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class BarkestCore::ContactFormTest < ActionMailer::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@msg = BarkestCore::ContactMessage.new(
|
|
6
|
+
your_name: 'John Doe',
|
|
7
|
+
your_email: 'jdoe@example.com',
|
|
8
|
+
related_to: 'Other',
|
|
9
|
+
subject: 'Hello world',
|
|
10
|
+
body: 'Hello world from the contact form.',
|
|
11
|
+
remote_ip: '127.0.0.1'
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "contact" do
|
|
16
|
+
mail = BarkestCore::ContactForm.contact(@msg)
|
|
17
|
+
assert_equal @msg.full_subject, mail.subject
|
|
18
|
+
|
|
19
|
+
assert_equal [BarkestCore::ContactForm.default_recipient], mail.to, 'Recipient is wrong.'
|
|
20
|
+
assert_equal [BarkestCore::ContactForm.default_sender], mail.from, 'Sender is wrong.'
|
|
21
|
+
|
|
22
|
+
assert_match @msg.your_name, mail.body.encoded
|
|
23
|
+
assert_match @msg.your_email, mail.body.encoded
|
|
24
|
+
assert_match @msg.body, mail.body.encoded
|
|
25
|
+
assert_match @msg.remote_ip, mail.body.encoded
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module BarkestCore
|
|
4
|
+
class UserMailerTest < ActionMailer::TestCase
|
|
5
|
+
|
|
6
|
+
def sender_address
|
|
7
|
+
BarkestCore.email_config[:default_sender]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test 'account_activation' do
|
|
11
|
+
user = users(:standard)
|
|
12
|
+
user.activation_token = User.new_token
|
|
13
|
+
mail = BarkestCore::UserMailer.account_activation(user: user)
|
|
14
|
+
assert_equal 'Account activation', mail.subject
|
|
15
|
+
assert_equal [user.email], mail.to
|
|
16
|
+
assert_equal [sender_address], mail.from
|
|
17
|
+
assert_match user.name, mail.body.encoded
|
|
18
|
+
assert_match user.activation_token, mail.body.encoded
|
|
19
|
+
assert_match CGI::escape(user.email), mail.body.encoded
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
test 'password_reset' do
|
|
23
|
+
user = users(:standard)
|
|
24
|
+
user.reset_token = User.new_token
|
|
25
|
+
mail = BarkestCore::UserMailer.password_reset(user: user)
|
|
26
|
+
assert_equal 'Password reset request', mail.subject
|
|
27
|
+
assert_equal [user.email], mail.to
|
|
28
|
+
assert_equal [sender_address], mail.from
|
|
29
|
+
assert_match user.reset_token, mail.body.encoded
|
|
30
|
+
assert_match CGI::escape(user.email), mail.body.encoded
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
test 'invalid_password_reset' do
|
|
34
|
+
email = 'sombody@example.com'
|
|
35
|
+
mail = BarkestCore::UserMailer.invalid_password_reset(email: email)
|
|
36
|
+
assert_equal 'Password reset request', mail.subject
|
|
37
|
+
assert_equal [email], mail.to
|
|
38
|
+
assert_equal [sender_address], mail.from
|
|
39
|
+
assert_match email, mail.body.encoded
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Preview all emails at http://localhost:3000/rails/mailers/barkest_core/contact_form
|
|
2
|
+
class BarkestCore::ContactFormPreview < ActionMailer::Preview
|
|
3
|
+
|
|
4
|
+
# Preview this email at http://localhost:3000/rails/mailers/barkest_core/contact_form/contact
|
|
5
|
+
def contact
|
|
6
|
+
msg = BarkestCore::ContactMessage.new(
|
|
7
|
+
your_name: 'John Doe',
|
|
8
|
+
your_email: 'jdoe@example.com',
|
|
9
|
+
related_to: 'Other',
|
|
10
|
+
subject: 'Hello world',
|
|
11
|
+
body: 'Hello world from the contact form.',
|
|
12
|
+
remote_ip: '127.0.0.1'
|
|
13
|
+
)
|
|
14
|
+
BarkestCore::ContactForm.contact msg
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module BarkestCore
|
|
2
|
+
# Preview all emails at http://localhost:3000/rails/mailers/barkest_core/user_mailer
|
|
3
|
+
class UserMailerPreview < ActionMailer::Preview
|
|
4
|
+
|
|
5
|
+
# Preview this email at http://localhost:3000/rails/mailers/barkest_core/user_mailer/account_activation
|
|
6
|
+
def account_activation
|
|
7
|
+
user = User.first
|
|
8
|
+
user.activation_token = User.new_token
|
|
9
|
+
UserMailer.account_activation user: user
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Preview this email at http://localhost:3000/rails/mailers/barkest_core/user_mailer/password_reset
|
|
13
|
+
def password_reset
|
|
14
|
+
user = User.first
|
|
15
|
+
user.reset_token = User.new_token
|
|
16
|
+
UserMailer.password_reset user: user
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Preview this email at http://localhost:3000/rails/mailers/barkest_core/user_mailer/invalid_password_reset
|
|
20
|
+
def invalid_password_reset
|
|
21
|
+
email = 'nobody@example.com'
|
|
22
|
+
UserMailer.invalid_password_reset email: email
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class AccessGroupGroupMemberTest < ActiveSupport::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@group1 = access_groups(:one)
|
|
7
|
+
@group2 = access_groups(:two)
|
|
8
|
+
@group3 = access_groups(:three)
|
|
9
|
+
@item = AccessGroupGroupMember.new(group_id: @group1.id, member_id: @group2.id)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
test 'should be valid' do
|
|
13
|
+
assert @item.valid?
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test 'should require group_id' do
|
|
17
|
+
assert_required @item, :group_id
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test 'should require member_id' do
|
|
21
|
+
assert_required @item, :member_id
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test 'should require unique member_id per group_id' do
|
|
25
|
+
assert_uniqueness @item, :member_id, false, group_id: @group3.id
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class AccessGroupTest < ActiveSupport::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@group = AccessGroup.new(name: 'Group X')
|
|
7
|
+
@group1 = access_groups(:one)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test 'should be valid' do
|
|
11
|
+
assert @group.valid?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
test 'should require name' do
|
|
15
|
+
assert_required @group, :name
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test 'name should not be too long' do
|
|
19
|
+
assert_max_length @group, :name, 100
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
test 'name should be unique' do
|
|
23
|
+
assert_uniqueness @group, :name
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
test 'should allow members' do
|
|
27
|
+
# must save before adding.
|
|
28
|
+
@group.save!
|
|
29
|
+
@group.reload
|
|
30
|
+
|
|
31
|
+
@group.members << @group1
|
|
32
|
+
|
|
33
|
+
assert @group.valid?
|
|
34
|
+
|
|
35
|
+
@group.save!
|
|
36
|
+
|
|
37
|
+
# group-x should have one member and group-1 should belong to one group.
|
|
38
|
+
assert_equal 1, @group.members(true).count
|
|
39
|
+
assert_equal 1, @group1.memberships(true).count
|
|
40
|
+
|
|
41
|
+
# group-x has group-1 as a member and group-1 is a member of group-x.
|
|
42
|
+
assert @group.members.include?(@group1)
|
|
43
|
+
assert @group1.memberships.include?(@group)
|
|
44
|
+
|
|
45
|
+
# group-1 equates to both group-1 and group-x for effective groups.
|
|
46
|
+
assert @group1.effective_groups.include?(@group1)
|
|
47
|
+
assert @group1.effective_groups.include?(@group)
|
|
48
|
+
|
|
49
|
+
# group-x equates to group-x but not group-1 for effective groups.
|
|
50
|
+
assert @group.effective_groups.include?(@group)
|
|
51
|
+
assert_not @group.effective_groups.include?(@group1)
|
|
52
|
+
|
|
53
|
+
# group-1 belongs to group-x but group-x does not belong to group-1.
|
|
54
|
+
assert @group1.belongs_to?(@group)
|
|
55
|
+
assert_not @group.belongs_to?(@group1)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test 'should allow ldap group assignment' do
|
|
59
|
+
|
|
60
|
+
# group must be saved first.
|
|
61
|
+
@group.save!
|
|
62
|
+
@group.reload
|
|
63
|
+
|
|
64
|
+
assert @group.valid?
|
|
65
|
+
|
|
66
|
+
assert @group.ldap_group_list.blank?
|
|
67
|
+
|
|
68
|
+
other_ldap_count = LdapAccessGroup.count
|
|
69
|
+
|
|
70
|
+
list1 = [ 'GROUP A', 'GROUP B', 'GROUP C', 'GROUP D' ]
|
|
71
|
+
list2 = [ 'GROUP E', 'GROUP F', 'GROUP G' ]
|
|
72
|
+
|
|
73
|
+
[list1, list2].each do |list|
|
|
74
|
+
|
|
75
|
+
assert @group.valid?
|
|
76
|
+
|
|
77
|
+
# Assign to the list.
|
|
78
|
+
@group.ldap_group_list = list.join("\n")
|
|
79
|
+
assert @group.save
|
|
80
|
+
|
|
81
|
+
# the list should no longer be blank.
|
|
82
|
+
assert_not @group.ldap_group_list.blank?
|
|
83
|
+
|
|
84
|
+
# and the ldap_groups count should match the list count.
|
|
85
|
+
assert_equal list.length, @group.ldap_groups.count
|
|
86
|
+
assert_equal other_ldap_count + list.count, LdapAccessGroup.count
|
|
87
|
+
|
|
88
|
+
# first pass to ensure all the groups we provided exist.
|
|
89
|
+
list.each do |name|
|
|
90
|
+
assert_equal 1, @group.ldap_groups.where(name: name).count, "Missing '#{name}' LDAP group."
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# second pass to ensure all the groups in the list were provided by us.
|
|
94
|
+
@group.ldap_groups.each do |group|
|
|
95
|
+
assert list.include?(group.name), "Extra '#{group.name}' LDAP group."
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# reset the list.
|
|
101
|
+
@group.ldap_group_list = nil
|
|
102
|
+
assert @group.ldap_group_list.blank?
|
|
103
|
+
|
|
104
|
+
# assignment of arrays should also work.
|
|
105
|
+
@group.ldap_group_list = []
|
|
106
|
+
assert @group.ldap_group_list.blank?
|
|
107
|
+
|
|
108
|
+
@group.ldap_group_list = list1
|
|
109
|
+
assert_not @group.ldap_group_list.blank?
|
|
110
|
+
assert_equal list1.length, @group.ldap_groups.count
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class AccessGroupUserMemberTest < ActiveSupport::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@group1 = access_groups(:one)
|
|
7
|
+
@group2 = access_groups(:two)
|
|
8
|
+
@user5 = users(:user_5)
|
|
9
|
+
@item = AccessGroupUserMember.new(group_id: @group1.id, member_id: @user5.id)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
test 'should be valid' do
|
|
13
|
+
assert @item.valid?
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test 'should require group_id' do
|
|
17
|
+
assert_required @item, :group_id
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test 'should require member_id' do
|
|
21
|
+
assert_required @item, :member_id
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test 'should require unique member_id per group_id' do
|
|
25
|
+
assert_uniqueness @item, :member_id, false, group_id: @group2.id
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module BarkestCore
|
|
4
|
+
class AuthConfigTest < ActiveSupport::TestCase
|
|
5
|
+
def setup
|
|
6
|
+
@item = BarkestCore::AuthConfig.new(enable_db_auth: true)
|
|
7
|
+
@item2 = BarkestCore::AuthConfig.new(
|
|
8
|
+
enable_ldap_auth: true,
|
|
9
|
+
ldap_host: 'localhost',
|
|
10
|
+
ldap_port: 389,
|
|
11
|
+
ldap_base_dn: 'DC=localhost',
|
|
12
|
+
ldap_browse_user: 'xyz',
|
|
13
|
+
ldap_browse_password: 'abc',
|
|
14
|
+
ldap_system_admin_groups: 'none'
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test 'should be valid' do
|
|
20
|
+
assert @item.valid?
|
|
21
|
+
assert @item2.valid?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test 'should require enable_x_auth' do
|
|
25
|
+
@item.enable_db_auth = false
|
|
26
|
+
assert_not @item.valid?
|
|
27
|
+
@item2.enable_ldap_auth = false
|
|
28
|
+
assert_not @item.valid?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test 'should require ldap_host' do
|
|
32
|
+
assert_required @item2, :ldap_host
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
test 'should require ldap_port' do
|
|
36
|
+
assert_required @item2, :ldap_port
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
test 'should require ldap_base_dn' do
|
|
40
|
+
assert_required @item2, :ldap_base_dn
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
test 'should require ldap_browse_user' do
|
|
44
|
+
assert_required @item2, :ldap_browse_user
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
test 'should require ldap_browse_password' do
|
|
48
|
+
assert_required @item2, :ldap_browse_password
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
test 'should require ldap_system_admin_groups' do
|
|
52
|
+
assert_required @item2, :ldap_system_admin_groups
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
module BarkestCore
|
|
4
|
+
class BoolParserTest < ActiveSupport::TestCase
|
|
5
|
+
|
|
6
|
+
test 'should parse true values' do
|
|
7
|
+
%w(TRUE true True YES yes Yes ON on On 1 -1 T t Y y).each do |val|
|
|
8
|
+
assert BarkestCore::BooleanParser.parse_for_boolean_column(val), "#{val.inspect} should be true"
|
|
9
|
+
assert_equal "1", BarkestCore::BooleanParser.parse_for_boolean_filter(val), "#{val.inspect} should be true"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test 'should parse false values' do
|
|
14
|
+
%w(FALSE false False NO no No OFF off Off 0 F f N n).each do |val|
|
|
15
|
+
assert_not BarkestCore::BooleanParser.parse_for_boolean_column(val), "#{val.inspect} should be false"
|
|
16
|
+
assert_equal "0", BarkestCore::BooleanParser.parse_for_boolean_filter(val), "#{val.inspect} should be false"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
test 'should parse nil values' do
|
|
21
|
+
[ nil, '', ' ' ].each do |val|
|
|
22
|
+
assert_nil BarkestCore::BooleanParser.parse_for_boolean_column(val), "#{val.inspect} should be nil"
|
|
23
|
+
assert_equal "NULL", BarkestCore::BooleanParser.parse_for_boolean_filter(val), "#{val.inspect} should be nil"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
module BarkestCore
|
|
2
|
+
class ContactMessageTest < ActiveSupport::TestCase
|
|
3
|
+
|
|
4
|
+
def setup
|
|
5
|
+
@item = BarkestCore::ContactMessage.new(
|
|
6
|
+
your_name: 'John Doe',
|
|
7
|
+
your_email: 'jdoe@example.com',
|
|
8
|
+
related_to: 'Nothing Important',
|
|
9
|
+
body: 'This is my message.',
|
|
10
|
+
)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test 'should be valid' do
|
|
14
|
+
assert @item.valid?
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
test 'should require subject for other' do
|
|
18
|
+
# if related_to == 'other' then subject should now be required.
|
|
19
|
+
@item.related_to = 'Other'
|
|
20
|
+
assert_not @item.valid?
|
|
21
|
+
@item.subject = 'Nothing Important'
|
|
22
|
+
assert @item.valid?
|
|
23
|
+
assert_required @item, :subject
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
test 'should require your_name' do
|
|
27
|
+
assert_required @item, :your_name
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
test 'should require your_email' do
|
|
31
|
+
assert_required @item, :your_email
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
test 'should require related_to' do
|
|
35
|
+
assert_required @item, :related_to
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
test 'should require body' do
|
|
39
|
+
assert_required @item, :body
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
test 'email validation should accept valid addresses' do
|
|
43
|
+
valid = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org first.last@foo.jp alice+bob@bax.cn]
|
|
44
|
+
|
|
45
|
+
valid.each do |address|
|
|
46
|
+
@item.your_email = address
|
|
47
|
+
assert @item.valid?, "#{address.inspect} should be valid"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
test 'email validation should reject invalid addresses' do
|
|
52
|
+
invalid = %w[user@example,com user_at_foo.org user.name@example. foo@bar_baz.com foo@bar+baz.com @example.com user@ user user@..com user@example..com]
|
|
53
|
+
invalid.each do |address|
|
|
54
|
+
@item.your_email = address
|
|
55
|
+
assert_not @item.valid?, "#{address.inspect} should be invalid"
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
end
|