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.
Files changed (308) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/Gemfile +22 -0
  4. data/Gemfile.lock +254 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +364 -0
  7. data/Rakefile +37 -0
  8. data/app/assets/fonts/barkest_core/ArchivoNarrow-Bold.ttf +0 -0
  9. data/app/assets/fonts/barkest_core/ArchivoNarrow-BoldItalic.ttf +0 -0
  10. data/app/assets/fonts/barkest_core/ArchivoNarrow-Italic.ttf +0 -0
  11. data/app/assets/fonts/barkest_core/ArchivoNarrow-Regular.ttf +0 -0
  12. data/app/assets/images/barkest_core/.keep +0 -0
  13. data/app/assets/images/barkest_core/barcode-B.svg +181 -0
  14. data/app/assets/javascripts/barkest_core/.keep +0 -0
  15. data/app/assets/javascripts/barkest_core/application.js +22 -0
  16. data/app/assets/javascripts/barkest_core/bootstrap-datepicker.js +1800 -0
  17. data/app/assets/javascripts/barkest_core/field_init.js +7 -0
  18. data/app/assets/javascripts/barkest_core/jquery.doubleScroll.js +112 -0
  19. data/app/assets/javascripts/barkest_core/masked_edit.js +25 -0
  20. data/app/assets/javascripts/barkest_core/system_status.js.erb +201 -0
  21. data/app/assets/stylesheets/barkest_core/.keep +0 -0
  22. data/app/assets/stylesheets/barkest_core/application.css +17 -0
  23. data/app/assets/stylesheets/barkest_core/custom.css.scss +264 -0
  24. data/app/assets/stylesheets/barkest_core/datepicker3.css +790 -0
  25. data/app/controllers/.keep +0 -0
  26. data/app/controllers/access_groups_controller.rb +74 -0
  27. data/app/controllers/account_activations_controller.rb +29 -0
  28. data/app/controllers/application_controller.rb +5 -0
  29. data/app/controllers/barkest_core/application_controller_base.rb +113 -0
  30. data/app/controllers/barkest_core/engine_controller_base.rb +15 -0
  31. data/app/controllers/barkest_core/testsub_controller.rb +21 -0
  32. data/app/controllers/contact_controller.rb +32 -0
  33. data/app/controllers/log_view_controller.rb +31 -0
  34. data/app/controllers/password_resets_controller.rb +126 -0
  35. data/app/controllers/sessions_controller.rb +64 -0
  36. data/app/controllers/status_controller.rb +150 -0
  37. data/app/controllers/system_config_controller.rb +238 -0
  38. data/app/controllers/system_update_controller.rb +164 -0
  39. data/app/controllers/test_access_controller.rb +44 -0
  40. data/app/controllers/test_report_controller.rb +75 -0
  41. data/app/controllers/users_controller.rb +218 -0
  42. data/app/helpers/.keep +0 -0
  43. data/app/helpers/barkest_core/application_helper.rb +134 -0
  44. data/app/helpers/barkest_core/form_helper.rb +469 -0
  45. data/app/helpers/barkest_core/html_helper.rb +70 -0
  46. data/app/helpers/barkest_core/misc_helper.rb +68 -0
  47. data/app/helpers/barkest_core/pdf_helper.rb +180 -0
  48. data/app/helpers/barkest_core/recaptcha_helper.rb +115 -0
  49. data/app/helpers/barkest_core/sessions_helper.rb +94 -0
  50. data/app/helpers/barkest_core/status_helper.rb +118 -0
  51. data/app/helpers/barkest_core/users_helper.rb +32 -0
  52. data/app/mailers/.keep +0 -0
  53. data/app/mailers/application_mailer.rb +5 -0
  54. data/app/mailers/barkest_core/application_mailer_base.rb +30 -0
  55. data/app/mailers/barkest_core/contact_form.rb +20 -0
  56. data/app/mailers/barkest_core/user_mailer.rb +44 -0
  57. data/app/models/.keep +0 -0
  58. data/app/models/access_group.rb +121 -0
  59. data/app/models/access_group_group_member.rb +13 -0
  60. data/app/models/access_group_user_member.rb +11 -0
  61. data/app/models/barkest_core/auth_config.rb +95 -0
  62. data/app/models/barkest_core/authorize_failure.rb +7 -0
  63. data/app/models/barkest_core/contact_message.rb +37 -0
  64. data/app/models/barkest_core/database_config.rb +223 -0
  65. data/app/models/barkest_core/db_table.rb +21 -0
  66. data/app/models/barkest_core/email_config.rb +132 -0
  67. data/app/models/barkest_core/global_status.rb +267 -0
  68. data/app/models/barkest_core/log_entry.rb +101 -0
  69. data/app/models/barkest_core/log_view_options.rb +51 -0
  70. data/app/models/barkest_core/ms_sql_db_definition.rb +441 -0
  71. data/app/models/barkest_core/ms_sql_definition.rb +221 -0
  72. data/app/models/barkest_core/ms_sql_function.rb +423 -0
  73. data/app/models/barkest_core/not_logged_in.rb +7 -0
  74. data/app/models/barkest_core/pdf_table_builder.rb +407 -0
  75. data/app/models/barkest_core/self_update_config.rb +37 -0
  76. data/app/models/barkest_core/user_alert.rb +29 -0
  77. data/app/models/barkest_core/user_alert_generators.rb +58 -0
  78. data/app/models/barkest_core/user_manager.rb +404 -0
  79. data/app/models/barkest_core/work_path.rb +74 -0
  80. data/app/models/disable_user.rb +18 -0
  81. data/app/models/ldap_access_group.rb +15 -0
  82. data/app/models/system_config.rb +99 -0
  83. data/app/models/user.rb +405 -0
  84. data/app/models/user_login_history.rb +11 -0
  85. data/app/views/.keep +0 -0
  86. data/app/views/access_groups/_form.html.erb +19 -0
  87. data/app/views/access_groups/edit.html.erb +2 -0
  88. data/app/views/access_groups/index.html.erb +32 -0
  89. data/app/views/access_groups/new.html.erb +2 -0
  90. data/app/views/access_groups/show.html.erb +4 -0
  91. data/app/views/barkest_core/contact_form/contact.html.erb +16 -0
  92. data/app/views/barkest_core/contact_form/contact.text.erb +13 -0
  93. data/app/views/barkest_core/testsub/_links.html.erb +5 -0
  94. data/app/views/barkest_core/testsub/page1.html.erb +3 -0
  95. data/app/views/barkest_core/testsub/page2.html.erb +2 -0
  96. data/app/views/barkest_core/testsub/page3.html.erb +2 -0
  97. data/app/views/barkest_core/user_mailer/account_activation.html.erb +7 -0
  98. data/app/views/barkest_core/user_mailer/account_activation.text.erb +6 -0
  99. data/app/views/barkest_core/user_mailer/invalid_password_reset.html.erb +3 -0
  100. data/app/views/barkest_core/user_mailer/invalid_password_reset.text.erb +5 -0
  101. data/app/views/barkest_core/user_mailer/password_reset.html.erb +8 -0
  102. data/app/views/barkest_core/user_mailer/password_reset.text.erb +7 -0
  103. data/app/views/contact/index.html.erb +24 -0
  104. data/app/views/layouts/_footer_copyright.html.erb +1 -0
  105. data/app/views/layouts/_menu_admin.html.erb +5 -0
  106. data/app/views/layouts/_menu_anon.html.erb +0 -0
  107. data/app/views/layouts/_menu_auth.html.erb +3 -0
  108. data/app/views/layouts/_menu_footer.html.erb +1 -0
  109. data/app/views/layouts/_nav_logo.html.erb +1 -0
  110. data/app/views/layouts/application.html.erb +2 -0
  111. data/app/views/layouts/barkest_core/_application.html.erb +24 -0
  112. data/app/views/layouts/barkest_core/_footer.html.erb +18 -0
  113. data/app/views/layouts/barkest_core/_header.html.erb +38 -0
  114. data/app/views/layouts/barkest_core/_html_mailer.html.erb +11 -0
  115. data/app/views/layouts/barkest_core/_menu_account.html.erb +14 -0
  116. data/app/views/layouts/barkest_core/_menu_sample.html.erb +1 -0
  117. data/app/views/layouts/barkest_core/_messages.html.erb +4 -0
  118. data/app/views/layouts/barkest_core/_shim.html.erb +4 -0
  119. data/app/views/layouts/barkest_core/_subheader.html.erb +1 -0
  120. data/app/views/layouts/barkest_core/_text_mailer.text.erb +4 -0
  121. data/app/views/layouts/mailer.html.erb +1 -0
  122. data/app/views/layouts/mailer.text.erb +1 -0
  123. data/app/views/log_view/index.html.erb +100 -0
  124. data/app/views/password_resets/edit.html.erb +20 -0
  125. data/app/views/password_resets/new.html.erb +14 -0
  126. data/app/views/sessions/new.html.erb +27 -0
  127. data/app/views/shared/_error_messages.html.erb +29 -0
  128. data/app/views/shared/_generic_user_alert.html.erb +4 -0
  129. data/app/views/status/current.html.erb +34 -0
  130. data/app/views/status/test.html.erb +50 -0
  131. data/app/views/system_config/index.html.erb +25 -0
  132. data/app/views/system_config/show_auth.html.erb +28 -0
  133. data/app/views/system_config/show_database.html.erb +36 -0
  134. data/app/views/system_config/show_email.html.erb +21 -0
  135. data/app/views/system_config/show_self_update.html.erb +13 -0
  136. data/app/views/system_update/index.html.erb +31 -0
  137. data/app/views/system_update/new.html.erb +2 -0
  138. data/app/views/test_access/allow_anon.html.erb +2 -0
  139. data/app/views/test_access/require_admin.html.erb +2 -0
  140. data/app/views/test_access/require_group_x.html.erb +2 -0
  141. data/app/views/test_access/require_user.html.erb +2 -0
  142. data/app/views/test_report/index.csv.csvrb +23 -0
  143. data/app/views/test_report/index.html.erb +6 -0
  144. data/app/views/test_report/index.pdf.prawn +50 -0
  145. data/app/views/test_report/index.xlsx.axlsx +28 -0
  146. data/app/views/users/_user.html.erb +57 -0
  147. data/app/views/users/_user_details.html.erb +15 -0
  148. data/app/views/users/_user_details_for_list.html.erb +1 -0
  149. data/app/views/users/_user_form.html.erb +13 -0
  150. data/app/views/users/disable_confirm.html.erb +19 -0
  151. data/app/views/users/edit.html.erb +15 -0
  152. data/app/views/users/index.html.erb +9 -0
  153. data/app/views/users/new.html.erb +10 -0
  154. data/app/views/users/show.html.erb +46 -0
  155. data/bin/rails +12 -0
  156. data/config/routes.rb +3 -0
  157. data/db/migrate/20160617172539_create_access_groups.rb +10 -0
  158. data/db/migrate/20160617172725_create_users.rb +26 -0
  159. data/db/migrate/20160617172833_create_user_login_histories.rb +12 -0
  160. data/db/migrate/20160622151720_create_access_group_user_members.rb +9 -0
  161. data/db/migrate/20160622151925_create_access_group_group_members.rb +9 -0
  162. data/db/migrate/20160701005706_create_ldap_access_groups.rb +11 -0
  163. data/db/migrate/20161108155029_create_system_configs.rb +11 -0
  164. data/db/seeds/barkest_core_01_create_users.rb +42 -0
  165. data/db/seeds.rb +53 -0
  166. data/lib/barkest_core/concerns/association_with_defaults.rb +55 -0
  167. data/lib/barkest_core/concerns/boolean_parser.rb +88 -0
  168. data/lib/barkest_core/concerns/date_parser.rb +181 -0
  169. data/lib/barkest_core/concerns/email_tester.rb +55 -0
  170. data/lib/barkest_core/concerns/encrypted_fields.rb +156 -0
  171. data/lib/barkest_core/concerns/named_model.rb +73 -0
  172. data/lib/barkest_core/concerns/number_parser.rb +145 -0
  173. data/lib/barkest_core/concerns/utc_conversion.rb +60 -0
  174. data/lib/barkest_core/engine.rb +105 -0
  175. data/lib/barkest_core/extensions/active_record_extensions.rb +120 -0
  176. data/lib/barkest_core/extensions/application_configuration_extensions.rb +38 -0
  177. data/lib/barkest_core/extensions/application_extensions.rb +50 -0
  178. data/lib/barkest_core/extensions/axlsx_extenstions.rb +157 -0
  179. data/lib/barkest_core/extensions/fixture_set_extensions.rb +107 -0
  180. data/lib/barkest_core/extensions/generator_extensions.rb +271 -0
  181. data/lib/barkest_core/extensions/main_app_extensions.rb +35 -0
  182. data/lib/barkest_core/extensions/prawn_document_extensions.rb +367 -0
  183. data/lib/barkest_core/extensions/prawn_table_extensions.rb +131 -0
  184. data/lib/barkest_core/extensions/router_extensions.rb +106 -0
  185. data/lib/barkest_core/extensions/simple_formatter_extensions.rb +66 -0
  186. data/lib/barkest_core/extensions/test_case_extensions.rb +348 -0
  187. data/lib/barkest_core/extensions/time_extensions.rb +164 -0
  188. data/lib/barkest_core/handlers/csv_handler.rb +30 -0
  189. data/lib/barkest_core/version.rb +3 -0
  190. data/lib/barkest_core.rb +324 -0
  191. data/lib/generators/barkest/install_generator.rb +102 -0
  192. data/lib/generators/barkest_core/actions/01_patch_application_controller.rb +55 -0
  193. data/lib/generators/barkest_core/actions/02_patch_application_mailer.rb +56 -0
  194. data/lib/generators/barkest_core/actions/03_patch_assets.rb +62 -0
  195. data/lib/generators/barkest_core/actions/04_patch_layouts.rb +36 -0
  196. data/lib/generators/barkest_core/actions/05_patch_routes.rb +93 -0
  197. data/lib/generators/barkest_core/actions/06_patch_seeds.rb +60 -0
  198. data/lib/generators/barkest_core/actions/07_copy_migrations.rb +51 -0
  199. data/lib/generators/barkest_core/actions/08_configure_database.rb +52 -0
  200. data/lib/generators/barkest_core/actions/09_configure_secrets.rb +29 -0
  201. data/lib/generators/barkest_core/actions/99_patch_gitignore.rb +57 -0
  202. data/lib/generators/barkest_core/install_generator.rb +17 -0
  203. data/test/barkest_core_test.rb +83 -0
  204. data/test/controllers/access_groups_controller_test.rb +53 -0
  205. data/test/controllers/contact_controller_test.rb +10 -0
  206. data/test/controllers/sessions_controller_test.rb +10 -0
  207. data/test/controllers/users_controller_test.rb +10 -0
  208. data/test/dummy/.gitignore +10 -0
  209. data/test/dummy/README.rdoc +28 -0
  210. data/test/dummy/Rakefile +6 -0
  211. data/test/dummy/app/assets/images/.keep +0 -0
  212. data/test/dummy/app/assets/javascripts/application.js +14 -0
  213. data/test/dummy/app/assets/stylesheets/application.css +16 -0
  214. data/test/dummy/app/controllers/application_controller.rb +5 -0
  215. data/test/dummy/app/controllers/concerns/.keep +0 -0
  216. data/test/dummy/app/helpers/application_helper.rb +2 -0
  217. data/test/dummy/app/mailers/.keep +0 -0
  218. data/test/dummy/app/mailers/application_mailer.rb +3 -0
  219. data/test/dummy/app/models/.keep +0 -0
  220. data/test/dummy/app/models/concerns/.keep +0 -0
  221. data/test/dummy/app/views/layouts/application.html.erb +1 -0
  222. data/test/dummy/app/views/layouts/mailer.html.erb +1 -0
  223. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  224. data/test/dummy/app/views/system_config/show_fake.html.erb +3 -0
  225. data/test/dummy/bin/bundle +3 -0
  226. data/test/dummy/bin/rails +4 -0
  227. data/test/dummy/bin/rake +4 -0
  228. data/test/dummy/bin/setup +29 -0
  229. data/test/dummy/config/application.rb +27 -0
  230. data/test/dummy/config/boot.rb +5 -0
  231. data/test/dummy/config/environment.rb +5 -0
  232. data/test/dummy/config/environments/development.rb +47 -0
  233. data/test/dummy/config/environments/production.rb +79 -0
  234. data/test/dummy/config/environments/test.rb +44 -0
  235. data/test/dummy/config/initializers/assets.rb +11 -0
  236. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  237. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  238. data/test/dummy/config/initializers/db_updater_ext.rb +33 -0
  239. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  240. data/test/dummy/config/initializers/inflections.rb +16 -0
  241. data/test/dummy/config/initializers/mime_types.rb +4 -0
  242. data/test/dummy/config/initializers/session_store.rb +3 -0
  243. data/test/dummy/config/initializers/sys_config_ext.rb +12 -0
  244. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  245. data/test/dummy/config/locales/en.yml +23 -0
  246. data/test/dummy/config/routes.rb +60 -0
  247. data/test/dummy/config.ru +4 -0
  248. data/test/dummy/db/schema.rb +95 -0
  249. data/test/dummy/db/seeds/barkest_core_01_create_users.rb +42 -0
  250. data/test/dummy/db/seeds.rb +51 -0
  251. data/test/dummy/lib/assets/.keep +0 -0
  252. data/test/dummy/log/.keep +0 -0
  253. data/test/dummy/public/404.html +67 -0
  254. data/test/dummy/public/422.html +67 -0
  255. data/test/dummy/public/500.html +66 -0
  256. data/test/dummy/public/favicon.ico +0 -0
  257. data/test/dummy/sql/my_test_view.sql +3 -0
  258. data/test/fixtures/access_groups.yml +21 -0
  259. data/test/fixtures/users.yml +71 -0
  260. data/test/helpers/barkest_core/sessions_helper_test.rb +22 -0
  261. data/test/integration/access_group_mgmt_test.rb +33 -0
  262. data/test/integration/access_test.rb +24 -0
  263. data/test/integration/account_activations_access_test.rb +12 -0
  264. data/test/integration/contact_test.rb +98 -0
  265. data/test/integration/extra_partial_test.rb +41 -0
  266. data/test/integration/log_view_access_test.rb +12 -0
  267. data/test/integration/password_resets_test.rb +101 -0
  268. data/test/integration/reports_test.rb +53 -0
  269. data/test/integration/status_access_test.rb +27 -0
  270. data/test/integration/system_config_access_test.rb +24 -0
  271. data/test/integration/system_update_access_test.rb +19 -0
  272. data/test/integration/users_access_test.rb +34 -0
  273. data/test/integration/users_edit_test.rb +178 -0
  274. data/test/integration/users_index_test.rb +62 -0
  275. data/test/integration/users_login_test.rb +67 -0
  276. data/test/integration/users_signup_test.rb +54 -0
  277. data/test/mailers/.keep +0 -0
  278. data/test/mailers/barkest_core/contact_form_test.rb +28 -0
  279. data/test/mailers/barkest_core/user_mailer_test.rb +43 -0
  280. data/test/mailers/previews/barkest_core/contact_form_preview.rb +17 -0
  281. data/test/mailers/previews/barkest_core/user_mailer_preview.rb +26 -0
  282. data/test/models/access_group_group_member_test.rb +28 -0
  283. data/test/models/access_group_test.rb +114 -0
  284. data/test/models/access_group_user_member_test.rb +28 -0
  285. data/test/models/barkest_core/auth_config_test.rb +57 -0
  286. data/test/models/barkest_core/bool_parser_test.rb +28 -0
  287. data/test/models/barkest_core/contact_message_test.rb +61 -0
  288. data/test/models/barkest_core/database_config_test.rb +33 -0
  289. data/test/models/barkest_core/date_parser_test.rb +110 -0
  290. data/test/models/barkest_core/email_config_test.rb +57 -0
  291. data/test/models/barkest_core/global_status_test.rb +50 -0
  292. data/test/models/barkest_core/ms_sql_db_updater_test.rb +115 -0
  293. data/test/models/barkest_core/ms_sql_definition_test.rb +102 -0
  294. data/test/models/barkest_core/ms_sql_function_test.rb +131 -0
  295. data/test/models/barkest_core/number_parser_test.rb +29 -0
  296. data/test/models/barkest_core/self_update_config_test.rb +29 -0
  297. data/test/models/barkest_core/user_alert_test.rb +19 -0
  298. data/test/models/barkest_core/user_manager_test.rb +34 -0
  299. data/test/models/barkest_core/work_path_test.rb +26 -0
  300. data/test/models/disable_user_test.rb +27 -0
  301. data/test/models/generic_time_test.rb +66 -0
  302. data/test/models/ldap_access_group_test.rb +31 -0
  303. data/test/models/pdf_table_builder_test.rb +6 -0
  304. data/test/models/system_config_test.rb +78 -0
  305. data/test/models/user_login_history_test.rb +37 -0
  306. data/test/models/user_test.rb +130 -0
  307. data/test/test_helper.rb +63 -0
  308. metadata +798 -0
File without changes
@@ -0,0 +1,3 @@
1
+ -- 2016-12-21 08:44
2
+ CREATE VIEW my_test_view AS
3
+ SELECT 1 AS [one]
@@ -0,0 +1,21 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ one_one_one:
4
+ name: Group 1-1-1
5
+
6
+ one_one:
7
+ name: Group 1-1
8
+ members: one_one_one
9
+
10
+ one_two:
11
+ name: Group 1-2
12
+
13
+ one:
14
+ name: Group 1
15
+ members: one_one, one_two
16
+
17
+ two:
18
+ name: Group 2
19
+
20
+ three:
21
+ name: Group 3
@@ -0,0 +1,71 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+ admin:
3
+ name: Mike Smith
4
+ email: msmith@example.com
5
+ system_admin: true
6
+ password_digest: <%= User.digest('password') %>
7
+ activated: true
8
+ activated_at: <%= Time.zone.now %>
9
+
10
+ one:
11
+ name: Number One
12
+ email: num.one@example.com
13
+ system_admin: false
14
+ password_digest: <%= User.digest('password') %>
15
+ activated: true
16
+ activated_at: <%= Time.zone.now %>
17
+
18
+ two:
19
+ name: Number Two
20
+ email: num.two@example.com
21
+ system_admin: false
22
+ password_digest: <%= User.digest('password') %>
23
+ activation_digest: <%= User.digest('valid-token') %>
24
+
25
+ standard:
26
+ name: John Doe
27
+ email: jdoe@example.com
28
+ password_digest: <%= User.digest('password') %>
29
+ activated: true
30
+ activated_at: <%= Time.zone.now %>
31
+ groups: one, two
32
+
33
+ basic:
34
+ name: Jane Smith
35
+ email: jsmith@example.com
36
+ password_digest: <%= User.digest('password') %>
37
+ activated: true
38
+ activated_at: <%= Time.zone.now %>
39
+
40
+ disabled:
41
+ name: Tim Thompson
42
+ email: tt@example.com
43
+ enabled: false
44
+ activated: true
45
+ activated_at: <%= Time.zone.now %>
46
+ disabled_at: <%= Time.zone.now - 4.weeks %>
47
+ password_digest: <%= User.digest('password') %>
48
+
49
+ recently_disabled:
50
+ name: Fred Flintstone
51
+ email: fred@example.com
52
+ enabled: false
53
+ disabled_at: <%= Time.zone.now - 2.days %>
54
+ password_digest: <%= User.digest('password') %>
55
+
56
+ ldap:
57
+ name: Miss Piggy
58
+ email: piggy@example.com
59
+ password_digest: <%= User.digest(User.new_token) %>
60
+ ldap: true
61
+ activated: true
62
+ activated_at: <%= Time.zone.now %>
63
+
64
+ <% 30.times do |n| %>
65
+ user_<%= n + 3 %>:
66
+ name: <%= "User #{n}" %>
67
+ email: <%= "user-#{n}@example.com" %>
68
+ password_digest: <%= User.digest('password') %>
69
+ activated: true
70
+ activated_at: <%= Time.zone.now %>
71
+ <% end %>
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ module BarkestCore
4
+ class SessionsHelperTest < ActionView::TestCase
5
+
6
+ def setup
7
+ @user = users(:standard)
8
+ remember(@user)
9
+ end
10
+
11
+ test 'current_user returns right user when session is nil' do
12
+ assert_equal @user, current_user
13
+ assert is_logged_in?
14
+ end
15
+
16
+ test 'current_user returns nil when remember digest is wrong' do
17
+ @user.update_attribute(:remember_digest, User.digest(User.new_token))
18
+ assert_nil current_user
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class AccessGroupMgmtTest < ActionDispatch::IntegrationTest
4
+
5
+ def setup
6
+ @admin = users(:admin)
7
+ @group = access_groups(:one)
8
+ end
9
+
10
+ # group management paths.
11
+ access_tests_for [ :index, :new, :create, :show, :edit, :update, :destroy ],
12
+ controller: 'access_groups',
13
+ create_params: { access_group: { name: 'Test Group X'} },
14
+ update_params: { access_group: { name: 'Test Group X'} },
15
+ allow_anon: false,
16
+ allow_any_user: false,
17
+ allow_admin: true
18
+
19
+ test 'update should require name' do
20
+ log_in_as @admin
21
+ patch access_group_path(@group), access_group: { name: '' }
22
+ assert_template 'access_groups/edit'
23
+ assert_select 'div#error_explanation'
24
+ end
25
+
26
+ test 'create should require name' do
27
+ log_in_as @admin
28
+ post access_groups_path, access_group: { name: '' }
29
+ assert_template 'access_groups/new'
30
+ assert_select 'div#error_explanation'
31
+ end
32
+
33
+ end
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ class AccessTest < ActionDispatch::IntegrationTest
4
+
5
+ # paths that are designed for access testing.
6
+ access_tests_for :allow_anon,
7
+ url_helper: 'barkest_core_test_access_allow_anon_path',
8
+ allow_anon: true,
9
+ allow_any_user: true
10
+
11
+ access_tests_for :require_user,
12
+ url_helper: 'barkest_core_test_access_require_user_path',
13
+ allow_any_user: true
14
+
15
+ access_tests_for :require_group_x,
16
+ url_helper: 'barkest_core_test_access_require_group_x_path',
17
+ allow_groups: ['group 1', 'group 2', 'group 3']
18
+
19
+ access_tests_for :require_admin,
20
+ url_helper: 'barkest_core_test_access_require_admin_path',
21
+ deny_groups: ['group 1', 'group 2', 'group 3' ]
22
+
23
+
24
+ end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ class AccountActivationsAccessTest < ActionDispatch::IntegrationTest
4
+ access_tests_for :edit,
5
+ controller: 'account_activations',
6
+ url_helper: 'edit_account_activation_url(\'valid-token\', email: users(:two).email)',
7
+ allow_anon: true,
8
+ allow_any_user: false,
9
+ allow_admin: false,
10
+ success: 'user_path(users(:two))'
11
+
12
+ end
@@ -0,0 +1,98 @@
1
+ require 'test_helper'
2
+
3
+ class ContactTest < ActionDispatch::IntegrationTest
4
+
5
+ def setup
6
+ ActionMailer::Base.deliveries.clear
7
+ @msg = {
8
+ your_name: 'John Smith',
9
+ your_email: 'john.smith@example.com',
10
+ related_to: 'Other',
11
+ subject: 'Just a thought',
12
+ body: 'I just wanted to reach out and say hi.',
13
+ }
14
+ end
15
+
16
+ access_tests_for :index,
17
+ url_helper: 'contact_path',
18
+ allow_anon: true,
19
+ allow_any_user: true
20
+
21
+ test 'valid contact message' do
22
+ get contact_path
23
+ assert_template 'contact/index'
24
+
25
+ post contact_path, barkest_core_contact_message: @msg
26
+
27
+ assert_redirected_to root_url
28
+ follow_redirect!
29
+
30
+ assert_not flash.empty?
31
+ assert_equal 1, ActionMailer::Base.deliveries.size
32
+ end
33
+
34
+ test 'alternate valid contact message' do
35
+ get contact_path
36
+ assert_template 'contact/index'
37
+
38
+ @msg[:related_to] = 'General Message'
39
+ @msg.delete(:subject)
40
+
41
+ post contact_path, barkest_core_contact_message: @msg
42
+
43
+ assert_redirected_to root_url
44
+ follow_redirect!
45
+
46
+ assert_not flash.empty?
47
+ assert_equal 1, ActionMailer::Base.deliveries.size
48
+ end
49
+
50
+ test 'invalid contact message' do
51
+ get contact_path
52
+ assert_template 'contact/index'
53
+
54
+ # body is required
55
+ post contact_path, barkest_core_contact_message: @msg.except(:body)
56
+ assert_template 'contact/index'
57
+ assert_select 'div#error_explanation'
58
+
59
+ # subject is required if 'related_to' is 'other'
60
+ post contact_path, barkest_core_contact_message: @msg.except(:subject)
61
+ assert_template 'contact/index'
62
+ assert_select 'div#error_explanation'
63
+
64
+ # related_to is required
65
+ post contact_path, barkest_core_contact_message: @msg.except(:related_to)
66
+ assert_template 'contact/index'
67
+ assert_select 'div#error_explanation'
68
+
69
+ # your_email is required
70
+ post contact_path, barkest_core_contact_message: @msg.except(:your_email)
71
+ assert_template 'contact/index'
72
+ assert_select 'div#error_explanation'
73
+
74
+ # your_email must be valid.
75
+ post contact_path, barkest_core_contact_message: @msg.merge(your_email: 'invalid')
76
+ assert_template 'contact/index'
77
+ assert_select 'div#error_explanation'
78
+
79
+ post contact_path, barkest_core_contact_message: @msg.merge(your_email: 'invalid@localhost')
80
+ assert_template 'contact/index'
81
+ assert_select 'div#error_explanation'
82
+
83
+ # your_name is required
84
+ post contact_path, barkest_core_contact_message: @msg.except(:your_name)
85
+ assert_template 'contact/index'
86
+ assert_select 'div#error_explanation'
87
+
88
+ # just for good measure, make sure the base @msg value is still good.
89
+ # if it is not then the previous tests are all invalid.
90
+ # so this final test must pass to validate the prior tests.
91
+ post contact_path, barkest_core_contact_message: @msg
92
+ assert_redirected_to root_url
93
+
94
+ # and after all those tests, there should be exactly one message that was processed.
95
+ assert_equal 1, ActionMailer::Base.deliveries.size
96
+ end
97
+
98
+ end
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+
3
+ class ExtraPartialTest < ActionDispatch::IntegrationTest
4
+
5
+ test 'should not have templates' do
6
+ get root_url
7
+ assert_template partial: 'layouts/barkest_core/_subheader', count: 0
8
+ end
9
+
10
+ test 'should have subheader template' do
11
+ get barkest_core_testsub_page1_url
12
+ assert_template 'layouts/barkest_core/_subheader'
13
+ end
14
+
15
+ test 'should allow partial registration' do
16
+ partial = 'layouts/barkest_core/menu_sample'
17
+ template = 'layouts/barkest_core/_menu_sample'
18
+
19
+ # shouldn't be registered yet, so count should be zero.
20
+ get root_url
21
+ assert_template partial: template, count: 0
22
+
23
+ BarkestCore.register_footer_menu partial
24
+ get root_url
25
+ assert_template partial: template, count: 1
26
+
27
+ BarkestCore.register_anon_menu partial
28
+ get root_url
29
+ assert_template partial: template, count: 2
30
+
31
+ BarkestCore.register_auth_menu partial
32
+ get root_url
33
+ assert_template partial: template, count: 2 # nobody is logged in, count should still be 2
34
+
35
+ log_in_as users(:standard)
36
+ get root_url
37
+ assert_template partial: template, count: 3
38
+ end
39
+
40
+
41
+ end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ class LogViewAccessTest < ActionDispatch::IntegrationTest
4
+
5
+ access_tests_for :index,
6
+ controller: 'log_view',
7
+ url_helper: 'system_log_path',
8
+ allow_anon: false,
9
+ allow_any_user: false,
10
+ allow_admin: true
11
+
12
+ end
@@ -0,0 +1,101 @@
1
+ require 'test_helper'
2
+
3
+ class PasswordResetsTest < ActionDispatch::IntegrationTest
4
+
5
+ def setup
6
+ ActionMailer::Base.deliveries.clear
7
+ @user = users(:standard)
8
+ end
9
+
10
+ access_tests_for :new,
11
+ allow_anon: true,
12
+ allow_admin: false
13
+
14
+ # nobody should be able to access this path, in the actual integration test it should work.
15
+ access_tests_for :edit,
16
+ url_helper: 'edit_password_reset_path(\'invalid-token\')',
17
+ anon_failure: 'root_url',
18
+ allow_anon: false,
19
+ allow_admin: false
20
+
21
+ test 'password resets' do
22
+ get new_password_reset_path
23
+ assert_template 'password_resets/new'
24
+
25
+ # invalid email
26
+ post password_resets_path, password_reset: { email: 'nobody@example.com' }
27
+ assert_not flash.empty?
28
+ assert_redirected_to root_url
29
+ assert_equal 1, ActionMailer::Base.deliveries.size
30
+ email = ActionMailer::Base.deliveries.last
31
+ assert_match 'email address is not associated with an existing account', email.body.encoded
32
+
33
+ # valid email
34
+ post password_resets_path, password_reset: { email: @user.email }
35
+ assert_not_equal @user.reset_digest, @user.reload.reset_digest
36
+ user = assigns(:user)
37
+ assert_equal 2, ActionMailer::Base.deliveries.size
38
+ email = ActionMailer::Base.deliveries.last
39
+ assert_match edit_password_reset_path(id: user.reset_token, email: user.email), email.body.encoded
40
+ assert_not flash.empty?
41
+ assert_redirected_to root_url
42
+
43
+ # wrong email
44
+ get edit_password_reset_path(user.reset_token, email: 'nobody@example.com')
45
+ assert_redirected_to root_url
46
+
47
+ # inactive user
48
+ user.toggle!(:activated)
49
+ get edit_password_reset_path(user.reset_token, email: user.email)
50
+ assert_redirected_to root_url
51
+ user.toggle!(:activated)
52
+
53
+ # disabled user
54
+ user.toggle!(:enabled)
55
+ get edit_password_reset_path(user.reset_token, email: user.email)
56
+ assert_redirected_to root_url
57
+ user.toggle!(:enabled)
58
+
59
+ # wrong token
60
+ get edit_password_reset_path('wrong token', email: user.email)
61
+ assert_redirected_to root_url
62
+
63
+ # right email and token
64
+ get edit_password_reset_path(user.reset_token, email: user.email)
65
+ assert_template 'password_resets/edit'
66
+ assert_select 'input[name=email][type=hidden][value=?]', user.email
67
+
68
+ # invalid password and confirmation
69
+ patch password_reset_path(user.reset_token), email: user.email, user: { password: 'foobar', password_confirmation: 'bar-bq' }
70
+ assert_select 'div#error_explanation'
71
+
72
+ # empty password
73
+ patch password_reset_path(user.reset_token), email: user.email, user: { password: '', password_confirmation: '' }
74
+ assert_select 'div#error_explanation'
75
+
76
+ # valid password & confirmation
77
+ patch password_reset_path(user.reset_token), email: user.email, user: { password: 'foobaz', password_confirmation: 'foobaz' }
78
+ assert is_logged_in?
79
+ assert_not flash.empty?
80
+ assert_redirected_to user
81
+ end
82
+
83
+ test 'expired token' do
84
+ get new_password_reset_path
85
+ post password_resets_path, password_reset: { email: @user.email }
86
+ @user = assigns(:user)
87
+ @user.update_attribute(:reset_sent_at, 3.hours.ago)
88
+ patch password_reset_path(@user.reset_token),
89
+ email: @user.email,
90
+ user: {
91
+ password: 'foobar',
92
+ password_confirmation: 'foobar'
93
+ }
94
+ assert_response :redirect
95
+ follow_redirect!
96
+ assert_not flash.empty?
97
+ regex = /password\sreset\srequest\shas\sexpired/i
98
+ assert_match regex, response.body
99
+ end
100
+
101
+ end