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,53 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'digest/sha1'
|
|
3
|
+
|
|
4
|
+
class ReportsTest < ActionDispatch::IntegrationTest
|
|
5
|
+
|
|
6
|
+
access_tests_for :index,
|
|
7
|
+
url_helper: 'barkest_core_test_report_path',
|
|
8
|
+
allow_anon: false,
|
|
9
|
+
allow_any_user: false,
|
|
10
|
+
allow_admin: true
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
@admin = users(:admin)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# CSV is easy, it's content won't change.
|
|
17
|
+
test 'should get csv' do
|
|
18
|
+
log_in_as @admin
|
|
19
|
+
get barkest_core_test_report_path(format: :csv)
|
|
20
|
+
|
|
21
|
+
assert_equal 'text/csv', response.content_type.to_s
|
|
22
|
+
|
|
23
|
+
valid_csv = "Code,Name,Email,Date of Birth,Hire Date,Pay Rate,Hours\nSMIJOH,John Smith,j.smith@example.com,01/01/1980,05/01/2010,15.5,2260\n"
|
|
24
|
+
assert_equal valid_csv, response.body
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# PDF is a bit more complex, but we try our damnedest to make it consistent, even going so far as forging the creation_date.
|
|
28
|
+
# The SHA1 should match up.
|
|
29
|
+
test 'should get pdf' do
|
|
30
|
+
log_in_as @admin
|
|
31
|
+
get barkest_core_test_report_path(format: :pdf)
|
|
32
|
+
|
|
33
|
+
assert_equal 'application/pdf', response.content_type.to_s
|
|
34
|
+
|
|
35
|
+
valid_sha1 = '5aba48603c5e93674e67022b38524dd5d1a953c4'
|
|
36
|
+
computed_sha1 = Digest::SHA1.hexdigest(response.body)
|
|
37
|
+
assert_equal valid_sha1, computed_sha1
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# XLSX is the same as PDF as far as testing goes.
|
|
41
|
+
test 'should get xlsx' do
|
|
42
|
+
log_in_as @admin
|
|
43
|
+
get barkest_core_test_report_path(format: :xlsx)
|
|
44
|
+
|
|
45
|
+
assert_equal 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', response.content_type.to_s
|
|
46
|
+
|
|
47
|
+
valid_sha1 = 'e6292ab2ea16a209ccd985a00d823d15c6c6a947'
|
|
48
|
+
computed_sha1 = Digest::SHA1.hexdigest(response.body)
|
|
49
|
+
assert_equal valid_sha1, computed_sha1
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class StatusAccessTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
access_tests_for :first,
|
|
6
|
+
controller: 'status',
|
|
7
|
+
url_helper: 'status_first_path',
|
|
8
|
+
allow_anon: false,
|
|
9
|
+
allow_any_user: false,
|
|
10
|
+
allow_admin: true
|
|
11
|
+
|
|
12
|
+
access_tests_for :more,
|
|
13
|
+
controller: 'status',
|
|
14
|
+
url_helper: 'status_more_path',
|
|
15
|
+
allow_anon: false,
|
|
16
|
+
allow_any_user: false,
|
|
17
|
+
allow_admin: true
|
|
18
|
+
|
|
19
|
+
access_tests_for :current,
|
|
20
|
+
controller: 'status',
|
|
21
|
+
url_helper: 'status_current_path',
|
|
22
|
+
allow_anon: false,
|
|
23
|
+
allow_any_user: false,
|
|
24
|
+
allow_admin: true
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class SystemConfigAccessTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
COMMON_ACCESS = {
|
|
6
|
+
controller: 'system_config',
|
|
7
|
+
allow_anon: false,
|
|
8
|
+
allow_any_user: false,
|
|
9
|
+
allow_admin: true
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
access_tests_for :index, COMMON_ACCESS.merge(url_helper: 'system_config_path')
|
|
13
|
+
|
|
14
|
+
access_tests_for :restart, COMMON_ACCESS.merge(url_helper: 'system_config_restart_path', success: 'system_config_url', method: :post)
|
|
15
|
+
|
|
16
|
+
access_tests_for :show_auth, COMMON_ACCESS.merge(url_helper: 'system_config_auth_path')
|
|
17
|
+
|
|
18
|
+
access_tests_for :show_database, COMMON_ACCESS.merge(url_helper: 'system_config_database_path(\'test-123\')')
|
|
19
|
+
|
|
20
|
+
access_tests_for :show_email, COMMON_ACCESS.merge(url_helper: 'system_config_email_path')
|
|
21
|
+
|
|
22
|
+
access_tests_for :show_self_update, COMMON_ACCESS.merge(url_helper: 'system_config_self_update_path')
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class SystemUpdateAccessTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
access_tests_for :index,
|
|
6
|
+
url_helper: 'system_update_path',
|
|
7
|
+
allow_anon: false,
|
|
8
|
+
allow_any_user: false,
|
|
9
|
+
allow_admin: true
|
|
10
|
+
|
|
11
|
+
access_tests_for :new,
|
|
12
|
+
url_helper: 'system_update_new_path',
|
|
13
|
+
allow_anon: false,
|
|
14
|
+
allow_any_user: false,
|
|
15
|
+
allow_admin: true,
|
|
16
|
+
success: 'status_current_url'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class UsersAccessTest < ActionDispatch::IntegrationTest
|
|
4
|
+
access_tests_for [ :index, :show ],
|
|
5
|
+
controller: 'users',
|
|
6
|
+
allow_anon: false,
|
|
7
|
+
allow_any_user: !BarkestCore.lock_down_users,
|
|
8
|
+
allow_admin: true
|
|
9
|
+
|
|
10
|
+
access_tests_for :new,
|
|
11
|
+
controller: 'users',
|
|
12
|
+
allow_anon: true,
|
|
13
|
+
allow_any_user: false,
|
|
14
|
+
allow_admin: false
|
|
15
|
+
|
|
16
|
+
# the user can edit themselves, however the test should try to get the standard user to edit another user.
|
|
17
|
+
# that should fail. the other integration tests should truly test out the editing of one's self.
|
|
18
|
+
access_tests_for :edit,
|
|
19
|
+
controller: 'users',
|
|
20
|
+
allow_anon: false,
|
|
21
|
+
allow_any_user: false,
|
|
22
|
+
allow_admin: true
|
|
23
|
+
|
|
24
|
+
access_tests_for :disable,
|
|
25
|
+
controller: 'users',
|
|
26
|
+
url_helper: 'disable_user_path(users(:one))',
|
|
27
|
+
allow_anon: false,
|
|
28
|
+
allow_any_user: false,
|
|
29
|
+
allow_admin: true
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class UsersEditTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@user = users(:standard)
|
|
7
|
+
@other_user = users(:user_3)
|
|
8
|
+
@admin = users(:admin)
|
|
9
|
+
@disabled_user = users(:disabled)
|
|
10
|
+
@recent_user = users(:recently_disabled)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test 'should redirect edit when not logged in' do
|
|
14
|
+
get edit_user_path(@user)
|
|
15
|
+
assert_not flash.empty?
|
|
16
|
+
assert_redirected_to login_url
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test 'should redirect update when not logged in' do
|
|
20
|
+
patch user_path(@user), user: { name: @user.name, email: @user.email }
|
|
21
|
+
assert_not flash.empty?
|
|
22
|
+
assert_redirected_to login_url
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test 'should redirect edit when logged in as wrong user' do
|
|
26
|
+
log_in_as @other_user
|
|
27
|
+
get edit_user_path(@user)
|
|
28
|
+
assert flash.empty?
|
|
29
|
+
assert_redirected_to root_url
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test 'should redirect update when logged in as wrong user' do
|
|
33
|
+
log_in_as @other_user
|
|
34
|
+
patch user_path(@user), user: { name: @user.name, email: @user.email }
|
|
35
|
+
assert flash.empty?
|
|
36
|
+
assert_redirected_to root_url
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
test 'should redirect destroy when not logged in' do
|
|
40
|
+
assert_no_difference 'User.count' do
|
|
41
|
+
delete user_path(@disabled_user)
|
|
42
|
+
end
|
|
43
|
+
assert_redirected_to login_url
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
test 'should redirect destroy when logged in as non-admin' do
|
|
47
|
+
log_in_as @other_user
|
|
48
|
+
assert_no_difference 'User.count' do
|
|
49
|
+
delete user_path(@disabled_user)
|
|
50
|
+
end
|
|
51
|
+
assert_redirected_to root_url
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
test 'should allow destroy when logged in as admin' do
|
|
55
|
+
log_in_as @admin
|
|
56
|
+
assert_difference 'User.count', -1 do
|
|
57
|
+
delete user_path(@disabled_user)
|
|
58
|
+
end
|
|
59
|
+
assert_redirected_to users_url
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
test 'should not destroy recently disabled users' do
|
|
63
|
+
log_in_as @admin
|
|
64
|
+
assert_no_difference 'User.count' do
|
|
65
|
+
delete user_path(@recent_user)
|
|
66
|
+
end
|
|
67
|
+
assert_redirected_to users_url
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
test 'should not destroy active users' do
|
|
71
|
+
log_in_as @admin
|
|
72
|
+
assert_no_difference 'User.count' do
|
|
73
|
+
delete user_path(@user)
|
|
74
|
+
end
|
|
75
|
+
assert_redirected_to users_url
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
test 'should not allow the admin attribute to be edited via web' do
|
|
79
|
+
log_in_as @other_user
|
|
80
|
+
assert_not @other_user.system_admin?
|
|
81
|
+
patch user_path(@other_user), user: { password: 'password', password_confirmation: 'password', system_admin: '1' }
|
|
82
|
+
assert_not @other_user.reload.system_admin?
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
test 'should redirect disable when not logged in' do
|
|
86
|
+
assert_no_difference 'User.enabled.count' do
|
|
87
|
+
get disable_user_path(@user)
|
|
88
|
+
end
|
|
89
|
+
assert_redirected_to login_url
|
|
90
|
+
assert_no_difference 'User.enabled.count' do
|
|
91
|
+
patch disable_user_path(@user)
|
|
92
|
+
end
|
|
93
|
+
assert_redirected_to login_url
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
test 'should redirect disable when logged in as non-admin' do
|
|
97
|
+
log_in_as @other_user
|
|
98
|
+
assert_no_difference 'User.enabled.count' do
|
|
99
|
+
get disable_user_path(@user)
|
|
100
|
+
end
|
|
101
|
+
assert_redirected_to root_url
|
|
102
|
+
assert_no_difference 'User.enabled.count' do
|
|
103
|
+
patch disable_user_path(@user)
|
|
104
|
+
end
|
|
105
|
+
assert_redirected_to root_url
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
test 'should redirect enable when not logged in' do
|
|
109
|
+
assert_no_difference 'User.enabled.count' do
|
|
110
|
+
patch enable_user_path(@disabled_user)
|
|
111
|
+
end
|
|
112
|
+
assert_redirected_to login_url
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
test 'should redirect enable when logged in as non-admin' do
|
|
116
|
+
log_in_as @other_user
|
|
117
|
+
assert_no_difference 'User.enabled.count' do
|
|
118
|
+
patch enable_user_path(@disabled_user)
|
|
119
|
+
end
|
|
120
|
+
assert_redirected_to root_url
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
test 'should disable user for admins' do
|
|
124
|
+
log_in_as @admin
|
|
125
|
+
assert_no_difference 'User.enabled.count' do
|
|
126
|
+
get disable_user_path(@other_user)
|
|
127
|
+
end
|
|
128
|
+
assert_template 'users/disable_confirm'
|
|
129
|
+
assert_difference 'User.enabled.count', -1 do
|
|
130
|
+
patch disable_user_path(@other_user), disable_user: { reason: 'As a test' }
|
|
131
|
+
end
|
|
132
|
+
assert_redirected_to users_url
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
test 'should enable user for admins' do
|
|
136
|
+
log_in_as @admin
|
|
137
|
+
assert_difference 'User.enabled.count', 1 do
|
|
138
|
+
patch enable_user_path(@disabled_user)
|
|
139
|
+
end
|
|
140
|
+
assert_redirected_to users_url
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
test 'unsuccessful edit' do
|
|
144
|
+
get edit_user_path(@user)
|
|
145
|
+
assert_redirected_to login_url
|
|
146
|
+
log_in_as(@user)
|
|
147
|
+
get edit_user_path(@user)
|
|
148
|
+
assert_template 'users/edit'
|
|
149
|
+
patch user_path(@user), user: { name: '', email: 'foo@invalid', password: 'foo', password_confirmation: 'baz' }
|
|
150
|
+
assert_template 'users/edit'
|
|
151
|
+
assert_select 'div#error_explanation'
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
test 'successful edit with friendly forwarding' do
|
|
155
|
+
get edit_user_path(@user)
|
|
156
|
+
assert_redirected_to login_url
|
|
157
|
+
log_in_as(@user)
|
|
158
|
+
assert_redirected_to edit_user_path(@user)
|
|
159
|
+
name = 'Foo Bar'
|
|
160
|
+
email = 'foo@bar.com'
|
|
161
|
+
pwd = ''
|
|
162
|
+
patch user_path(@user), user: { name: name, email: email, password: pwd, password_confirmation: pwd }
|
|
163
|
+
assert_not flash.empty?
|
|
164
|
+
assert_redirected_to @user
|
|
165
|
+
@user.reload
|
|
166
|
+
assert_equal name, @user.name
|
|
167
|
+
assert_equal email, @user.email
|
|
168
|
+
pwd = 'new-password'
|
|
169
|
+
patch user_path(@user), user: { name: name, email: email, password: pwd, password_confirmation: pwd }
|
|
170
|
+
assert_not flash.empty?
|
|
171
|
+
assert_redirected_to @user
|
|
172
|
+
@user.reload
|
|
173
|
+
assert @user.authenticate(pwd)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
end
|
|
178
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class UsersIndexTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@user = users(:standard)
|
|
7
|
+
@other_user = users(:basic)
|
|
8
|
+
@admin = users(:admin)
|
|
9
|
+
@can_delete = users(:disabled)
|
|
10
|
+
@cannot_delete = users(:recently_disabled)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
test 'should redirect index when not logged in' do
|
|
14
|
+
get users_path
|
|
15
|
+
assert_redirected_to login_url
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
test 'index including pagination' do
|
|
19
|
+
log_in_as @user
|
|
20
|
+
get users_path
|
|
21
|
+
assert_template 'users/index'
|
|
22
|
+
assert_select 'div.pagination'
|
|
23
|
+
User.enabled.sorted.paginate(page: 1).each do |user|
|
|
24
|
+
assert_select 'a[href=?] i', disable_user_path(user), count: 0
|
|
25
|
+
assert_select 'a[href=?]', user_path(user), text: user.name
|
|
26
|
+
end
|
|
27
|
+
get user_path(@other_user)
|
|
28
|
+
assert_template 'users/show'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
test 'index disabled for non-admin' do
|
|
32
|
+
original = BarkestCore.lock_down_users
|
|
33
|
+
begin
|
|
34
|
+
BarkestCore.lock_down_users = true
|
|
35
|
+
log_in_as @user
|
|
36
|
+
get users_path
|
|
37
|
+
assert_redirected_to root_url
|
|
38
|
+
get user_path(@other_user)
|
|
39
|
+
assert_redirected_to root_url
|
|
40
|
+
ensure
|
|
41
|
+
BarkestCore.lock_down_users = original
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
test 'index for admin' do
|
|
46
|
+
log_in_as @admin
|
|
47
|
+
get users_path
|
|
48
|
+
User.all.sorted.paginate(page: 1).each do |user|
|
|
49
|
+
# disabled users should have a delete link
|
|
50
|
+
assert_select 'a[href=?]>i', user_path(user), count: (user.enabled? ? 0 : 1)
|
|
51
|
+
|
|
52
|
+
# enabled users (except the current one) should have a disable link
|
|
53
|
+
assert_select 'a[href=?]>i', disable_user_path(user), count: ((user.enabled? && !current_user?(user)) ? 1 : 0)
|
|
54
|
+
|
|
55
|
+
# all users should have a link to their profile page.
|
|
56
|
+
assert_select 'a[href=?]', user_path(user), text: user.name
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class UsersLoginTest < ActionDispatch::IntegrationTest
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@user = users(:admin)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
access_tests_for :new,
|
|
10
|
+
controller: 'sessions',
|
|
11
|
+
url_helper: 'login_path',
|
|
12
|
+
allow_anon: true,
|
|
13
|
+
allow_any_user: false,
|
|
14
|
+
allow_admin: false
|
|
15
|
+
|
|
16
|
+
test 'login with invalid information' do
|
|
17
|
+
get login_path
|
|
18
|
+
assert_template 'sessions/new'
|
|
19
|
+
post login_path, session: { email: '', password: '' }
|
|
20
|
+
assert_template 'sessions/new'
|
|
21
|
+
assert_not flash.empty?
|
|
22
|
+
get root_path
|
|
23
|
+
assert flash.empty?
|
|
24
|
+
assert_select 'a[href=?]', login_path
|
|
25
|
+
assert_select 'a[href=?]', logout_path, count: 0
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test 'login with valid information followed by logout' do
|
|
29
|
+
get login_path
|
|
30
|
+
post login_path, session: { email: @user.email, password: 'password' }
|
|
31
|
+
assert is_logged_in?
|
|
32
|
+
assert_redirected_to @user
|
|
33
|
+
follow_redirect!
|
|
34
|
+
assert_template 'users/show'
|
|
35
|
+
assert_select 'a[href=?]', login_path, count: 0
|
|
36
|
+
assert_select 'a[href=?]', logout_path
|
|
37
|
+
assert_select 'a[href=?]', user_path(@user)
|
|
38
|
+
delete logout_path
|
|
39
|
+
assert_not is_logged_in?
|
|
40
|
+
assert_redirected_to root_url
|
|
41
|
+
# simulate clicking 'log out' a second time.
|
|
42
|
+
delete logout_path
|
|
43
|
+
follow_redirect!
|
|
44
|
+
assert_select 'a[href=?]', login_path
|
|
45
|
+
assert_select 'a[href=?]', logout_path, count: 0
|
|
46
|
+
assert_select 'a[href=?]', user_path(@user), count: 0
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
test 'login with disabled account' do
|
|
50
|
+
@user = users(:disabled)
|
|
51
|
+
get login_path
|
|
52
|
+
post login_path, session: { email: @user.email, password: 'password' }
|
|
53
|
+
assert_template 'sessions/new'
|
|
54
|
+
assert_not flash.empty?
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
test 'login with remembering' do
|
|
58
|
+
log_in_as @user, remember_me: '1'
|
|
59
|
+
assert_not_nil cookies['remember_token']
|
|
60
|
+
assert_equal assigns(:user).remember_token, cookies['remember_token']
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
test 'login without remembering' do
|
|
64
|
+
log_in_as @user, remember_me: '0'
|
|
65
|
+
assert_nil cookies['remember_token']
|
|
66
|
+
end
|
|
67
|
+
end
|