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
@@ -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
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