browsercms 3.4.2 → 3.5.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (367) hide show
  1. data/README.markdown +1 -0
  2. data/app/assets/images/cms/file-uploading.gif +0 -0
  3. data/app/assets/javascripts/cms/application.js +1 -0
  4. data/app/assets/javascripts/cms/attachment_manager.js.erb +87 -0
  5. data/app/assets/javascripts/cms/core_library.js.erb +38 -25
  6. data/app/assets/stylesheets/cms/application.css.erb +1 -0
  7. data/app/assets/stylesheets/cms/attachment_manager.css.scss +28 -0
  8. data/app/controllers/cms/application_controller.rb +1 -1
  9. data/app/controllers/cms/attachments_controller.rb +45 -10
  10. data/app/controllers/cms/cache_controller.rb +1 -1
  11. data/app/controllers/cms/content_block_controller.rb +134 -122
  12. data/app/controllers/cms/content_controller.rb +143 -155
  13. data/app/controllers/cms/dashboard_controller.rb +11 -9
  14. data/app/controllers/cms/error_handling.rb +19 -7
  15. data/app/controllers/cms/file_blocks_controller.rb +2 -2
  16. data/app/controllers/cms/home_controller.rb +3 -0
  17. data/app/controllers/cms/section_nodes_controller.rb +52 -44
  18. data/app/controllers/cms/sections_controller.rb +4 -2
  19. data/app/controllers/cms/toolbar_controller.rb +14 -10
  20. data/app/helpers/cms/application_helper.rb +23 -19
  21. data/app/helpers/cms/form_builder.rb +65 -18
  22. data/app/helpers/cms/mobile_helper.rb +19 -0
  23. data/app/helpers/cms/path_helper.rb +30 -4
  24. data/app/helpers/cms/rendering_helper.rb +9 -1
  25. data/app/models/cms/abstract_file_block.rb +6 -6
  26. data/app/models/cms/attachment.rb +196 -107
  27. data/app/models/cms/category.rb +3 -0
  28. data/app/models/cms/category_type.rb +2 -0
  29. data/app/models/cms/connector.rb +3 -0
  30. data/app/models/cms/content_type.rb +3 -0
  31. data/app/models/cms/content_type_group.rb +2 -0
  32. data/app/models/cms/dynamic_view.rb +4 -0
  33. data/app/models/cms/email_message.rb +2 -0
  34. data/app/models/cms/file_block.rb +9 -2
  35. data/app/models/cms/group.rb +5 -2
  36. data/app/models/cms/group_permission.rb +2 -0
  37. data/app/models/cms/group_section.rb +3 -0
  38. data/app/models/cms/group_type.rb +2 -0
  39. data/app/models/cms/group_type_permission.rb +2 -0
  40. data/app/models/cms/html_block.rb +3 -2
  41. data/app/models/cms/image_block.rb +13 -2
  42. data/app/models/cms/page.rb +14 -3
  43. data/app/models/cms/page_route.rb +4 -0
  44. data/app/models/cms/page_route_condition.rb +1 -0
  45. data/app/models/cms/page_route_option.rb +2 -0
  46. data/app/models/cms/page_route_requirement.rb +1 -0
  47. data/app/models/cms/permission.rb +3 -0
  48. data/app/models/cms/portlet.rb +2 -2
  49. data/app/models/cms/redirect.rb +2 -0
  50. data/app/models/cms/section.rb +15 -1
  51. data/app/models/cms/section_node.rb +1 -0
  52. data/app/models/cms/site.rb +3 -0
  53. data/app/models/cms/tag.rb +2 -0
  54. data/app/models/cms/tagging.rb +3 -0
  55. data/app/models/cms/task.rb +5 -1
  56. data/app/models/cms/user.rb +1 -1
  57. data/app/models/cms/user_group_membership.rb +3 -0
  58. data/app/views/cms/attachments/_attachment.html.erb +14 -0
  59. data/app/views/cms/attachments/_attachment_table.html.erb +17 -0
  60. data/app/views/cms/attachments/_attachment_wrapper.html.erb +4 -0
  61. data/app/views/cms/blocks/index.html.erb +2 -3
  62. data/app/views/cms/blocks/show.html.erb +1 -1
  63. data/app/views/cms/dynamic_views/index.html.erb +1 -1
  64. data/app/views/cms/email_messages/index.html.erb +1 -1
  65. data/app/views/cms/file_blocks/_form.html.erb +1 -27
  66. data/app/views/cms/file_blocks/_section_selector.html.erb +13 -0
  67. data/app/views/cms/file_blocks/render.html.erb +3 -3
  68. data/app/views/cms/form_builder/_cms_attachment_manager.html.erb +26 -0
  69. data/app/views/cms/form_builder/_cms_file_field.html.erb +27 -35
  70. data/app/views/cms/groups/index.html.erb +1 -1
  71. data/app/views/cms/image_blocks/_form.html.erb +1 -27
  72. data/app/views/cms/image_blocks/render.html.erb +4 -1
  73. data/app/views/cms/page_routes/index.html.erb +3 -0
  74. data/app/views/cms/shared/error.xml.erb +8 -0
  75. data/app/views/cms/tags/render.html.erb +1 -1
  76. data/app/views/cms/toolbar/_mobile_toggle.html.erb +33 -0
  77. data/app/views/cms/users/index.html.erb +1 -1
  78. data/app/views/layouts/_page_toolbar.html.erb +2 -1
  79. data/bin/bcms +21 -26
  80. data/config/routes.rb +3 -2
  81. data/db/browsercms.seeds.rb +2 -1
  82. data/db/migrate/20111130221145_browsercms340.rb +5 -4
  83. data/db/migrate/20120329144406_browsercms350.rb +32 -0
  84. data/{test/dummy/db → db}/schema.rb +97 -128
  85. data/{performance_tuning_notes.md → doc/performance_tuning_notes.md} +0 -0
  86. data/doc/release_notes.md +74 -0
  87. data/lib/browsercms.rb +3 -0
  88. data/lib/cms/acts/content_block.rb +10 -2
  89. data/lib/cms/addressable.rb +8 -0
  90. data/lib/cms/attachments/attachment_serving.rb +59 -0
  91. data/lib/cms/attachments/configuration.rb +88 -0
  92. data/lib/cms/behaviors/attaching.rb +305 -136
  93. data/lib/cms/behaviors/connecting.rb +3 -4
  94. data/lib/cms/behaviors/dynamic_attributes.rb +121 -118
  95. data/lib/cms/behaviors/flush_cache_on_change.rb +1 -3
  96. data/lib/cms/behaviors/naming.rb +16 -0
  97. data/lib/cms/behaviors/pagination.rb +4 -1
  98. data/lib/cms/behaviors/publishing.rb +9 -3
  99. data/lib/cms/behaviors/searching.rb +3 -8
  100. data/lib/cms/behaviors/soft_deleting.rb +1 -0
  101. data/lib/cms/behaviors/taggable.rb +2 -0
  102. data/lib/cms/behaviors/versioning.rb +73 -120
  103. data/lib/cms/caching.rb +53 -11
  104. data/lib/cms/commands/actions.rb +19 -2
  105. data/lib/cms/configuration.rb +44 -0
  106. data/lib/cms/content_rendering_support.rb +9 -6
  107. data/lib/cms/default_accessible.rb +13 -0
  108. data/lib/cms/domain_support.rb +22 -0
  109. data/lib/cms/engine.rb +40 -19
  110. data/lib/cms/engine_helper.rb +54 -0
  111. data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +14 -2
  112. data/lib/cms/mobile_aware.rb +67 -0
  113. data/lib/cms/route_extensions.rb +3 -0
  114. data/lib/cms/upgrades/v3_5_0.rb +155 -0
  115. data/lib/cms/version.rb +6 -1
  116. data/lib/generators/cms/content_block/content_block_generator.rb +14 -9
  117. data/lib/generators/cms/content_block/templates/_form.html.erb +17 -6
  118. data/lib/generators/cms/content_block/templates/render.html.erb +12 -5
  119. data/lib/generators/cms/template/template_generator.rb +11 -2
  120. data/lib/tasks/cms.rake +23 -0
  121. data/lib/templates/active_record/model/model.rb +6 -0
  122. metadata +127 -517
  123. data/.gitignore +0 -24
  124. data/.rvmrc +0 -2
  125. data/Gemfile +0 -29
  126. data/Gemfile.lock +0 -196
  127. data/Rakefile +0 -97
  128. data/app/assets/images/browsercms/.gitkeep +0 -0
  129. data/app/controllers/browsercms/application_controller.rb +0 -4
  130. data/browsercms.gemspec +0 -35
  131. data/config/cucumber.yml +0 -8
  132. data/config/database.jdbcmysql.yml +0 -30
  133. data/config/database.mysql.yml +0 -27
  134. data/config/database.postgres.yml +0 -25
  135. data/config/database.sqlite3.yml +0 -11
  136. data/config/environment.rb +0 -6
  137. data/config/initializers/query_reviewer_patch.rb +0 -12
  138. data/config/initializers/rack_1_2_1_patch.rb +0 -12
  139. data/config/locales/en.yml +0 -5
  140. data/features/acts_as_content_page.feature +0 -62
  141. data/features/add_content_to_pages.feature +0 -45
  142. data/features/caching.feature +0 -13
  143. data/features/ckeditor.feature +0 -11
  144. data/features/commands/confirm_aruba_works.feature +0 -24
  145. data/features/commands/generate_module.feature +0 -54
  146. data/features/commands/install_browsercms.feature +0 -21
  147. data/features/commands/new_demo_project.feature +0 -30
  148. data/features/commands/new_projects.feature +0 -50
  149. data/features/commands/upgrade_modules_to_3_4_0_from_3_1_x.feature +0 -19
  150. data/features/commands/upgrade_project_to_3_4_0_from_3_3_x.feature +0 -52
  151. data/features/commands/upgrading_modules.feature +0 -67
  152. data/features/content_blocks/manage_custom_blocks.feature +0 -67
  153. data/features/content_blocks/manage_html_blocks.feature +0 -48
  154. data/features/content_blocks/manage_image_blocks.feature +0 -41
  155. data/features/content_files.feature +0 -37
  156. data/features/content_pages.feature +0 -21
  157. data/features/generators/content_blocks_for_modules.feature +0 -58
  158. data/features/generators/content_blocks_for_projects.feature +0 -109
  159. data/features/install_content.feature +0 -25
  160. data/features/jquery-testplan.txt +0 -12
  161. data/features/manage_groups.feature +0 -33
  162. data/features/manage_page_routes.feature +0 -72
  163. data/features/manage_redirects.feature +0 -20
  164. data/features/manage_sections.feature +0 -12
  165. data/features/manage_tasks.feature +0 -25
  166. data/features/manage_users.feature +0 -38
  167. data/features/page_templates.feature +0 -49
  168. data/features/portlets/email_friend_portlet.feature +0 -29
  169. data/features/portlets/portlets.feature +0 -100
  170. data/features/portlets/tag_cloud_portlet.feature +0 -28
  171. data/features/sitemap/create_pages.feature +0 -15
  172. data/features/sitemap/manage_links.feature +0 -29
  173. data/features/sitemap/sitemap.feature +0 -18
  174. data/features/step_definitions/acts_as_content_page_steps.rb.rb +0 -3
  175. data/features/step_definitions/ckeditor_steps.rb +0 -13
  176. data/features/step_definitions/command_line_steps.rb +0 -212
  177. data/features/step_definitions/content_pages_steps.rb +0 -170
  178. data/features/step_definitions/data_steps.rb +0 -48
  179. data/features/step_definitions/edit_page_templates_steps.rb +0 -21
  180. data/features/step_definitions/html_blocks_steps.rb +0 -9
  181. data/features/step_definitions/install_content_steps.rb +0 -4
  182. data/features/step_definitions/manage_content_blocks_steps.rb +0 -26
  183. data/features/step_definitions/manage_image_blocks_steps.rb +0 -31
  184. data/features/step_definitions/manage_sections_steps.rb +0 -18
  185. data/features/step_definitions/manage_user_steps.rb +0 -22
  186. data/features/step_definitions/more_custom_block_steps.rb +0 -34
  187. data/features/step_definitions/page_route_steps.rb +0 -65
  188. data/features/step_definitions/page_template_steps.rb +0 -5
  189. data/features/step_definitions/permissions_steps.rb +0 -13
  190. data/features/step_definitions/portlets_steps.rb +0 -64
  191. data/features/step_definitions/redirect_steps.rb +0 -12
  192. data/features/step_definitions/sitemap_steps.rb +0 -18
  193. data/features/step_definitions/tag_cloud_steps.rb +0 -11
  194. data/features/step_definitions/task_steps.rb +0 -4
  195. data/features/step_definitions/taxonomy_steps.rb +0 -16
  196. data/features/step_definitions/upgrade_module_steps.rb +0 -76
  197. data/features/step_definitions/web_steps.rb +0 -211
  198. data/features/support/async_support.rb +0 -17
  199. data/features/support/command_line_helpers.rb +0 -63
  200. data/features/support/debug_formatter.rb +0 -7
  201. data/features/support/debugging.rb +0 -28
  202. data/features/support/env.rb +0 -73
  203. data/features/support/git_api.rb +0 -9
  204. data/features/support/open_on_first_failure.rb +0 -25
  205. data/features/support/paths.rb +0 -32
  206. data/features/support/rails_api.rb +0 -8
  207. data/features/support/selectors.rb +0 -39
  208. data/features/support/transforms.rb +0 -7
  209. data/features/taxonomy/add_content_with_category.feature +0 -30
  210. data/features/taxonomy/manage_categories.feature +0 -20
  211. data/features/taxonomy/manage_category_types.feature +0 -16
  212. data/lib/cms/init.rb +0 -105
  213. data/lib/tasks/data.rake +0 -43
  214. data/lib/tasks/db.rake +0 -82
  215. data/public/styled_file_field/index.html +0 -72
  216. data/script/cucumber +0 -10
  217. data/script/rails +0 -6
  218. data/test/console_helper.rb +0 -5
  219. data/test/custom_assertions.rb +0 -84
  220. data/test/dummy/Rakefile +0 -7
  221. data/test/dummy/app/assets/javascripts/application.js +0 -9
  222. data/test/dummy/app/assets/javascripts/content_page.js +0 -2
  223. data/test/dummy/app/assets/stylesheets/application.css +0 -7
  224. data/test/dummy/app/assets/stylesheets/content_page.css +0 -4
  225. data/test/dummy/app/controllers/application_controller.rb +0 -3
  226. data/test/dummy/app/controllers/cms/products_controller.rb +0 -2
  227. data/test/dummy/app/controllers/cms/sample_blocks_controller.rb +0 -3
  228. data/test/dummy/app/controllers/content_page_controller.rb +0 -13
  229. data/test/dummy/app/helpers/application_helper.rb +0 -2
  230. data/test/dummy/app/helpers/content_page_helper.rb +0 -2
  231. data/test/dummy/app/mailers/.gitkeep +0 -0
  232. data/test/dummy/app/models/.gitkeep +0 -0
  233. data/test/dummy/app/models/cms/sample_block.rb +0 -22
  234. data/test/dummy/app/models/product.rb +0 -5
  235. data/test/dummy/app/views/cms/products/_form.html.erb +0 -7
  236. data/test/dummy/app/views/cms/products/render.html.erb +0 -3
  237. data/test/dummy/app/views/content_page/custom_page.html.erb +0 -3
  238. data/test/dummy/app/views/content_page/index.html.erb +0 -2
  239. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  240. data/test/dummy/app/views/layouts/templates/default.html.erb +0 -17
  241. data/test/dummy/app/views/layouts/templates/subpage.html.erb +0 -16
  242. data/test/dummy/app/views/test_route/index.html.erb +0 -14
  243. data/test/dummy/config.ru +0 -4
  244. data/test/dummy/config/application.rb +0 -45
  245. data/test/dummy/config/boot.rb +0 -10
  246. data/test/dummy/config/database.yml +0 -27
  247. data/test/dummy/config/environment.rb +0 -5
  248. data/test/dummy/config/environments/development.rb +0 -32
  249. data/test/dummy/config/environments/production.rb +0 -60
  250. data/test/dummy/config/environments/test.rb +0 -46
  251. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  252. data/test/dummy/config/initializers/browsercms.rb +0 -7
  253. data/test/dummy/config/initializers/inflections.rb +0 -10
  254. data/test/dummy/config/initializers/mime_types.rb +0 -5
  255. data/test/dummy/config/initializers/quiet_sprocket_assets.rb +0 -13
  256. data/test/dummy/config/initializers/secret_token.rb +0 -7
  257. data/test/dummy/config/initializers/session_store.rb +0 -8
  258. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  259. data/test/dummy/config/locales/en.yml +0 -5
  260. data/test/dummy/config/routes.rb +0 -23
  261. data/test/dummy/db/migrate/20111228141250_create_products.rb +0 -16
  262. data/test/dummy/db/seeds.rb +0 -1
  263. data/test/dummy/lib/assets/.gitkeep +0 -0
  264. data/test/dummy/public/404.html +0 -26
  265. data/test/dummy/public/422.html +0 -26
  266. data/test/dummy/public/500.html +0 -26
  267. data/test/dummy/public/favicon.ico +0 -0
  268. data/test/dummy/script/rails +0 -6
  269. data/test/dummy/test/functional/content_page_controller_test.rb +0 -9
  270. data/test/dummy/test/unit/helpers/content_page_helper_test.rb +0 -4
  271. data/test/factories.rb +0 -235
  272. data/test/fixtures/multipart/foo.jpg +0 -0
  273. data/test/fixtures/multipart/sample_upload.txt +0 -1
  274. data/test/fixtures/multipart/second_upload.txt +0 -1
  275. data/test/fixtures/multipart/test.jpg +0 -0
  276. data/test/fixtures/multipart/version1.txt +0 -1
  277. data/test/fixtures/multipart/version2.txt +0 -1
  278. data/test/functional/cms/cache_controller_test.rb +0 -16
  279. data/test/functional/cms/categories_controller_test.rb +0 -28
  280. data/test/functional/cms/connectors_controller_test.rb +0 -64
  281. data/test/functional/cms/content_block_controller_test.rb +0 -127
  282. data/test/functional/cms/content_controller_test.rb +0 -351
  283. data/test/functional/cms/dashboard_controller_test.rb +0 -20
  284. data/test/functional/cms/file_blocks_controller_test.rb +0 -55
  285. data/test/functional/cms/home_controller_test.rb +0 -160
  286. data/test/functional/cms/html_blocks_controller_test.rb +0 -159
  287. data/test/functional/cms/image_blocks_controller_test.rb +0 -78
  288. data/test/functional/cms/links_controller_test.rb +0 -92
  289. data/test/functional/cms/log/test.log +0 -0
  290. data/test/functional/cms/pages_controller_test.rb +0 -233
  291. data/test/functional/cms/portlets_controller_test.rb +0 -57
  292. data/test/functional/cms/sections_controller_test.rb +0 -234
  293. data/test/functional/cms/sessions_controller_test.rb +0 -80
  294. data/test/functional/cms/tasks_controller_test.rb +0 -64
  295. data/test/functional/cms/toolbar_controller_test.rb +0 -76
  296. data/test/functional/cms/users_controller_test.rb +0 -218
  297. data/test/integration/cms/password_management_test.rb +0 -66
  298. data/test/integration/sitemap_performance_test.rb +0 -26
  299. data/test/mock_file.rb +0 -33
  300. data/test/performance/browsing_test.rb +0 -9
  301. data/test/support/engine_controller_hacks.rb +0 -34
  302. data/test/support/factory_helpers.rb +0 -57
  303. data/test/support/rails_3_1_routes_hack.rb +0 -70
  304. data/test/test_helper.rb +0 -199
  305. data/test/test_logging.rb +0 -67
  306. data/test/unit/active_record_callbacks.rb +0 -50
  307. data/test/unit/behaviors/attaching_test.rb +0 -370
  308. data/test/unit/behaviors/cms_user_test.rb +0 -67
  309. data/test/unit/behaviors/connectable_test.rb +0 -32
  310. data/test/unit/behaviors/connecting_test.rb +0 -56
  311. data/test/unit/behaviors/dynamic_attributes_test.rb +0 -74
  312. data/test/unit/behaviors/namespacing_test.rb +0 -76
  313. data/test/unit/behaviors/publishable_test.rb +0 -83
  314. data/test/unit/behaviors/rendering_test.rb +0 -68
  315. data/test/unit/behaviors/searching_test.rb +0 -102
  316. data/test/unit/behaviors/taggable_test.rb +0 -110
  317. data/test/unit/behaviors/userstamping_test.rb +0 -27
  318. data/test/unit/behaviors/versioning_test.rb +0 -102
  319. data/test/unit/extensions/active_record/base_test.rb +0 -25
  320. data/test/unit/extensions/hash_test.rb +0 -26
  321. data/test/unit/extensions/integer_test.rb +0 -10
  322. data/test/unit/extensions/string_test.rb +0 -14
  323. data/test/unit/factories_test.rb +0 -50
  324. data/test/unit/generators/install_generator_test.rb +0 -15
  325. data/test/unit/helpers/application_helper_test.rb +0 -104
  326. data/test/unit/helpers/date_picker_test.rb +0 -17
  327. data/test/unit/helpers/menu_helper_test.rb +0 -240
  328. data/test/unit/helpers/page_helper_test.rb +0 -69
  329. data/test/unit/helpers/path_helper_test.rb +0 -38
  330. data/test/unit/helpers/rendering_helper_test.rb +0 -8
  331. data/test/unit/lib/acts_as_content_page_test.rb +0 -72
  332. data/test/unit/lib/cms/authentication/controller_test.rb +0 -20
  333. data/test/unit/lib/cms/engine_helper_test.rb +0 -119
  334. data/test/unit/lib/cms/sitemap_test.rb +0 -210
  335. data/test/unit/lib/cms_domain_support_test.rb +0 -44
  336. data/test/unit/lib/command_line_test.rb +0 -70
  337. data/test/unit/lib/content_block_test.rb +0 -304
  338. data/test/unit/lib/content_rendering_support_test.rb +0 -40
  339. data/test/unit/lib/generators_test.rb +0 -40
  340. data/test/unit/lib/routes_test.rb +0 -98
  341. data/test/unit/mock_file_test.rb +0 -19
  342. data/test/unit/models/attachment_test.rb +0 -160
  343. data/test/unit/models/category_test.rb +0 -40
  344. data/test/unit/models/category_type_test.rb +0 -8
  345. data/test/unit/models/connector_test.rb +0 -152
  346. data/test/unit/models/content_type_group_test.rb +0 -26
  347. data/test/unit/models/content_type_test.rb +0 -177
  348. data/test/unit/models/dynamic_views_test.rb +0 -36
  349. data/test/unit/models/email_page_portlet_test.rb +0 -20
  350. data/test/unit/models/file_block_test.rb +0 -246
  351. data/test/unit/models/group_test.rb +0 -29
  352. data/test/unit/models/html_block_test.rb +0 -121
  353. data/test/unit/models/image_block_test.rb +0 -35
  354. data/test/unit/models/link_test.rb +0 -52
  355. data/test/unit/models/namespaces_test.rb +0 -57
  356. data/test/unit/models/page_partial_test.rb +0 -37
  357. data/test/unit/models/page_route_test.rb +0 -113
  358. data/test/unit/models/page_template_test.rb +0 -50
  359. data/test/unit/models/page_test.rb +0 -879
  360. data/test/unit/models/permission_test.rb +0 -10
  361. data/test/unit/models/portlet_test.rb +0 -99
  362. data/test/unit/models/sections_test.rb +0 -278
  363. data/test/unit/models/site_test.rb +0 -50
  364. data/test/unit/models/task_test.rb +0 -150
  365. data/test/unit/models/user_test.rb +0 -358
  366. data/test/unit/schema_statements_test.rb +0 -137
  367. data/todo_list.markdown +0 -50
@@ -1,358 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Cms
4
- class UserTest < ActiveSupport::TestCase
5
-
6
- def setup
7
- @need_at_least_one_enabled_user = Factory(:user)
8
- @user = Factory(:user)
9
- end
10
-
11
- should_validate_presence_of :user => [:login, :password, :password_confirmation]
12
- should_validate_uniqueness_of :user => [:login]
13
-
14
- def test_authenticate
15
- assert_equal @user, Cms::User.authenticate(@user.login, @user.password)
16
- assert_nil Cms::User.authenticate(@user.login, 'FAIL')
17
- end
18
-
19
- def test_authenticate_expired_user
20
- @user.disable!
21
- assert_nil Cms::User.authenticate(@user.login, @user.password)
22
- end
23
-
24
- def test_expiration
25
- assert_nil @user.expires_at
26
- assert_nil @user.expires_at_formatted
27
- assert !@user.expired?
28
-
29
- @user.expires_at = 1.day.from_now
30
- assert !@user.expired?
31
-
32
- @user.expires_at = Time.now
33
- assert @user.expired?
34
-
35
- @user.expires_at = 1.day.ago
36
- assert @user.expired?
37
- end
38
-
39
- def test_active
40
- assert Cms::User.active.all.include?(@user)
41
-
42
- @user.update_attribute(:expires_at, 1.year.from_now)
43
- assert Cms::User.active.all.include?(@user)
44
- end
45
-
46
- test "Disable should work regardless of time zone" do
47
- Time.zone = "UTC"
48
- @user.disable!
49
- assert !Cms::User.active.all.include?(@user)
50
-
51
- user2 = Factory(:user)
52
- Time.zone = "Eastern Time (US & Canada)"
53
- user2.disable!
54
- assert !Cms::User.active.all.include?(user2)
55
-
56
- end
57
-
58
- def test_disable_enable
59
- assert_nil @user.expires_at
60
- assert !@user.expired?
61
-
62
- assert Cms::User.active.all.include?(@user)
63
-
64
- assert @user.disable!
65
-
66
- assert @user.expires_at <= Time.now.utc
67
- assert @user.expired?
68
- assert !Cms::User.active.all.include?(@user)
69
-
70
- @user.enable!
71
-
72
- assert_nil @user.expires_at
73
- assert !@user.expired?
74
- assert Cms::User.active.all.include?(@user)
75
- end
76
-
77
- test "email validation" do
78
- assert @user.valid?
79
-
80
- valid_emails = ['t@test.com', 'T@test.com', 'test@somewhere.mobi', 'test@somewhere.tv', 'joe_blow@somewhere.co.nz', 'joe_blow@somewhere.com.au', 't@t-t.co']
81
- valid_emails.each do |email|
82
- @user.email = email
83
- assert @user.valid?
84
- end
85
-
86
- invalid_emails = ['', '@test.com', '@test', 'test@test', 'test@somewhere', 'test@somewhere.', 'test@somewhere.x', 'test@somewhere..']
87
- invalid_emails.each do |email|
88
- @user.email = email
89
- assert !@user.valid?
90
- end
91
- end
92
-
93
- test "full name or login" do
94
- login = 'robbo'
95
- fn = 'Bob'
96
- ln = 'Smith'
97
- u = Factory.build(:user, :login => 'robbo', :first_name => nil, :last_name => nil)
98
- assert_equal login, u.full_name_or_login
99
- u.first_name = fn
100
- assert_equal fn, u.full_name_or_login
101
- u.last_name = ln
102
- assert_equal fn + ' ' + ln, u.full_name_or_login
103
-
104
- end
105
- end
106
-
107
- class UserAbleToViewTest < ActiveSupport::TestCase
108
-
109
- test "Registered User able_to_view? with String path" do
110
- registered_user = Cms::User.new
111
- viewable_section = Cms::Section.new
112
- Cms::Section.expects(:find_by_path).with("/members").returns(viewable_section)
113
- registered_user.expects(:viewable_sections).returns([viewable_section])
114
-
115
- assert registered_user.able_to_view?("/members")
116
- end
117
-
118
- test "User can't view a nil section" do
119
- user = Cms::User.new
120
-
121
- Cms::Section.expects(:find_by_path).with("/members").returns(nil)
122
- user.expects(:able_to_view_without_paths?).never
123
-
124
- assert_raise ActiveRecord::RecordNotFound do
125
- user.able_to_view?("/members")
126
- end
127
-
128
- end
129
-
130
- test "Users with cmsaccess?" do
131
- @non_admin = Cms::GroupType.create!(:cms_access => true)
132
- @group = Factory(:group, :group_type => @non_admin)
133
- @public_user = Factory(:user)
134
- @public_user.groups<< @group
135
- @public_user.save!
136
-
137
- assert(@public_user.cms_access?, "")
138
- end
139
-
140
- test "cms_access? determines if a user is considered to have cmsadmin privledges or not." do
141
- user = Cms::User.new
142
- assert(!user.cms_access?, "")
143
- end
144
-
145
-
146
- end
147
-
148
-
149
- class PageEdittingPermissions < ActiveSupport::TestCase
150
- def setup
151
- @content_editor = Factory(:content_editor) # Create first, so it will have permission to edit root section
152
-
153
- given_a_site_exists
154
- @private_section = Factory(:section, :parent => root_section)
155
- @private_page = Factory(:public_page, :section => @private_section)
156
- @editable_page = Factory(:public_page, :section => root_section)
157
- end
158
-
159
- test "#modifiable_sections" do
160
- assert @content_editor.modifiable_sections.include?(root_section)
161
- refute @content_editor.modifiable_sections.include?(@private_section)
162
- end
163
-
164
- test "#able_to_modify?" do
165
- assert_equal false, @content_editor.able_to_modify?(@private_page)
166
- assert_equal true, @content_editor.able_to_modify?(@editable_page)
167
- end
168
-
169
- test "#able_to_edit" do
170
- assert_equal false, @content_editor.able_to_edit?(@private_page)
171
- assert_equal true, @content_editor.able_to_edit?(@editable_page)
172
- end
173
-
174
- test "#able_to_publish?" do
175
- assert_equal false, @content_editor.able_to_publish?(@private_page)
176
- assert_equal true, @content_editor.able_to_publish?(@editable_page)
177
- end
178
- end
179
-
180
- class UserPermissionsTest < ActiveSupport::TestCase
181
- def setup
182
- @user = Factory(:user)
183
- @guest_group = Cms::Group.guest
184
- end
185
-
186
- def test_user_permissions
187
- @have = Factory(:permission, :name => "do something the group has permission to do")
188
- @havenot = Factory(:permission, :name => "do something the group does not have permission to do")
189
- @group_a = Factory(:group)
190
- @group_b = Factory(:group)
191
-
192
- @group_a.permissions << @have
193
- @group_b.permissions << @havenot
194
-
195
- @user.groups << @group_a
196
-
197
- assert @user.able_to?("do something the group has permission to do")
198
- assert !@user.able_to?("do something the group does not have permission to do")
199
- end
200
-
201
- test "cms user access to nodes" do
202
- @group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
203
- @user.groups << @group
204
-
205
- @modifiable_section = Factory(:section, :parent => root_section, :name => "Modifiable")
206
- @non_modifiable_section = Factory(:section, :parent => root_section, :name => "Not Modifiable")
207
-
208
- @group.sections << @modifiable_section
209
-
210
- @modifiable_page = Factory(:page, :section => @modifiable_section)
211
- @non_modifiable_page = Factory(:page, :section => @non_modifiable_section)
212
-
213
- @modifiable_link = Factory(:link, :section => @modifiable_section)
214
- @non_modifiable_link = Factory(:link, :section => @non_modifiable_section)
215
-
216
- assert @user.able_to_modify?(@modifiable_section)
217
- assert !@user.able_to_modify?(@non_modifiable_section)
218
-
219
- assert @user.able_to_modify?(@modifiable_page)
220
- assert !@user.able_to_modify?(@non_modifiable_page)
221
-
222
- assert @user.able_to_modify?(@modifiable_link)
223
- assert !@user.able_to_modify?(@non_modifiable_link)
224
- end
225
-
226
- test "cms user access to connectables" do
227
- @group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
228
- @user.groups << @group
229
-
230
- @modifiable_section = Factory(:section, :parent => root_section, :name => "Modifiable")
231
- @non_modifiable_section = Factory(:section, :parent => root_section, :name => "Not Modifiable")
232
-
233
- @group.sections << @modifiable_section
234
-
235
- @modifiable_page = Factory(:page, :section => @modifiable_section)
236
- @non_modifiable_page = Factory(:page, :section => @non_modifiable_section)
237
-
238
- @all_modifiable_connectable = stub(
239
- :class => stub(:content_block? => true, :connectable? => true),
240
- :connected_pages => [@modifiable_page])
241
- @some_modifiable_connectable = stub(
242
- :class => stub(:content_block? => true, :connectable? => true),
243
- :connected_pages => [@modifiable_page, @non_modifiable_page])
244
- @none_modifiable_connectable = stub(
245
- :class => stub(:content_block? => true, :connectable? => true),
246
- :connected_pages => [@non_modifiable_page])
247
-
248
- assert @user.able_to_modify?(@all_modifiable_connectable)
249
- assert !@user.able_to_modify?(@some_modifiable_connectable)
250
- assert !@user.able_to_modify?(@none_modifiable_connectable)
251
- end
252
-
253
- test "cms user access to non-connectable content blocks" do
254
- @content_block = stub(:class => stub(:content_block? => true))
255
- assert @user.able_to_modify?(@content_block)
256
- end
257
-
258
- test "non cms user access to nodes" do
259
- @group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "Registered User"))
260
- @user.groups << @group
261
-
262
- @modifiable_section = Factory(:section, :parent => root_section, :name => "Modifiable")
263
- @group.sections << @modifiable_section
264
- @non_modifiable_section = Factory(:section, :parent => root_section, :name => "Not Modifiable")
265
-
266
- @modifiable_page = Factory(:page, :section => @modifiable_section)
267
- @non_modifiable_page = Factory(:page, :section => @non_modifiable_section)
268
-
269
- assert !@user.able_to_modify?(@modifiable_section)
270
- assert !@user.able_to_modify?(@non_modifiable_section)
271
-
272
- assert @user.able_to_view?(@modifiable_page)
273
- assert !@user.able_to_view?(@non_modifiable_page)
274
- end
275
-
276
- test "cms user with no permissions should still be able to view pages" do
277
- @group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
278
- @user.groups << @group
279
-
280
- @page = Factory(:page)
281
- assert @user.able_to_view?(@page)
282
- end
283
-
284
- test "cms user who can publish content" do
285
- @group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
286
- @group.permissions << create_or_find_permission_named("publish_content")
287
- @user.groups << @group
288
-
289
- node = stub
290
-
291
- @user.stubs(:able_to_modify?).with(node).returns(true)
292
- assert !@user.able_to_edit?(node)
293
- assert @user.able_to_publish?(node)
294
-
295
- @user.stubs(:able_to_modify?).with(node).returns(false)
296
- assert !@user.able_to_edit?(node)
297
- assert !@user.able_to_publish?(node)
298
- end
299
-
300
- end
301
-
302
- class GuestUserTest < ActiveSupport::TestCase
303
- def setup
304
- @guest_group = given_there_is_a_guest_group
305
- @guest_user = Cms::User.guest
306
- @public_page = Factory(:page, :section => root_section)
307
- @protected_section = Factory(:section, :parent => root_section)
308
- @protected_page = Factory(:page, :section => @protected_section)
309
- end
310
-
311
- def test_guest
312
- assert @guest_user.guest?
313
- assert_equal @guest_group, @guest_user.group
314
- assert @guest_user.groups.include?(@guest_group)
315
- assert !@guest_user.able_to?("do anything global")
316
- assert !@guest_user.able_to_view?(@protected_page)
317
- assert !@guest_user.cms_access?
318
- end
319
-
320
- test "guest users should be able to see pages in public sections" do
321
- root_section.allow_groups = :all
322
- assert @guest_user.able_to_view?(@public_page)
323
- end
324
-
325
- test "override viewable sections for the guest group" do
326
- @guest_user.expects(:viewable_sections).returns([@protected_section])
327
- assert_equal Cms::Section, @protected_section.class
328
- assert(@protected_section.is_a?(Cms::Section), "")
329
- assert @guest_user.able_to_view?(@protected_section)
330
- end
331
-
332
- test "GuestUser can't view a nil section" do
333
- user = Cms::GuestUser.new
334
-
335
- Cms::Section.expects(:find_by_path).with("/members").returns(nil)
336
-
337
- assert_raise ActiveRecord::RecordNotFound do
338
- user.able_to_view?("/members")
339
- end
340
-
341
- end
342
-
343
- test "Guest User able_to_view? with String path" do
344
- expected_section = Cms::Section.new
345
-
346
- Cms::Section.expects(:find_by_path).with("/members").returns(expected_section)
347
- @guest_user.expects(:viewable_sections).returns([expected_section])
348
-
349
- assert @guest_user.able_to_view?("/members")
350
-
351
- end
352
-
353
- test "Group.guest should be created during setup." do
354
- assert_not_nil Cms::Group.guest, "Expected to be in the database for tests in this class."
355
- end
356
-
357
- end
358
- end
@@ -1,137 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SchemaStatementsTest < ActiveSupport::TestCase
4
-
5
- def ensure_no_prefix
6
- Cms.expects(:table_prefix).returns("").at_least(0)
7
- end
8
-
9
- def setup
10
- ensure_no_prefix()
11
- %w(fake_contents).each do |t|
12
- ActiveRecord::Base.connection.drop_content_table(t) rescue nil
13
- ActiveRecord::Base.connection.drop_table(t) rescue nil
14
- end
15
-
16
- end
17
-
18
- test "Removed ability to explicitly set :version_foreign_key in bcms 3.4. Should silently do nothing" do
19
- class ::Cms::ExplictColumnBlock < ActiveRecord::Base
20
- acts_as_content_block :versioned=>{:version_foreign_key => :something_id }
21
- end
22
- connection.drop_content_table :explict_column_blocks rescue nil
23
- connection.create_content_table :explict_column_blocks, :prefix=>false do |t| ; end
24
-
25
- assert_column_exists :explict_column_block_versions, :original_record_id
26
- assert_column_does_not_exist :explict_column_block_versions, :something_id
27
- end
28
-
29
- test "Nonversioned blocks shouldn't create versions table" do
30
- ensure_no_prefix()
31
-
32
- class ::Cms::NonVersionedBlock < ActiveRecord::Base
33
- acts_as_content_block :versioned=>false
34
- end
35
- connection.drop_table :non_versioned_blocks rescue nil
36
- connection.drop_table :non_versioned_block_versions rescue nil
37
- connection.create_content_table :non_versioned_blocks, :prefix=>false, :versioned=>false do |t| ; end
38
-
39
- assert_equal false, ActiveRecord::Base.connection.table_exists?(:non_versioned_block_versions)
40
- end
41
-
42
-
43
- test "Create default versioned column, even if the record isn't marked versions (handles subclasses)" do
44
- class ::Cms::PossiblyVersionedBlock < ActiveRecord::Base
45
- end
46
- connection.drop_table :possibly_versioned_blocks rescue nil
47
- connection.drop_table :possibly_versioned_block_versions rescue nil
48
- connection.create_content_table :possibly_versioned_blocks, :prefix=>false do |t| ; end
49
-
50
- assert_column_exists :possibly_versioned_block_versions, :original_record_id
51
- end
52
-
53
- test "non-existant models should create default versions table." do
54
- ensure_no_prefix()
55
-
56
- connection.drop_table :non_existant_blocks rescue nil
57
- connection.drop_table :non_existant_block_versions rescue nil
58
- connection.create_content_table :non_existant_blocks, :prefix=>false do |t| ; end
59
-
60
- assert_column_exists :non_existant_block_versions, :original_record_id
61
- end
62
-
63
- test "prefixed" do
64
- Cms.expects(:table_prefix).returns("abc_")
65
-
66
- result = ""
67
- ActiveRecord::Base.connection.instance_eval do
68
- result = prefix("stuff")
69
- end
70
-
71
- assert_equal "abc_stuff", result
72
- end
73
-
74
- test "create_content_table should make two tables" do
75
- conn = ActiveRecord::Base.connection
76
- conn.create_content_table :fake_contents, :prefix=>false do |t|
77
- t.string :name
78
- end
79
-
80
- expected_columns = %w(archived created_at created_by_id deleted id lock_version name published updated_at updated_by_id version)
81
- expected_columns_v = %w(archived created_at created_by_id deleted id name original_record_id published updated_at updated_by_id version version_comment)
82
- assert_equal expected_columns, conn.columns(:fake_contents).map { |c| c.name }.sort
83
- assert_equal expected_columns_v, conn.columns(:fake_content_versions).map { |c| c.name }.sort
84
- end
85
-
86
- test "add_content_column should add columns to both primary and versions table" do
87
-
88
- connection.create_content_table :fake_contents, :prefix=>false do |t|; end
89
-
90
- connection.add_content_column :fake_contents, :foo, :string
91
-
92
- found_c = connection.columns(:fake_contents).map { |c| c.name }
93
- assert found_c.include?("foo")
94
-
95
- found_c = connection.columns(:fake_content_versions).map { |c| c.name }
96
- assert found_c.include?("foo")
97
- end
98
-
99
- test "create_content_table should automatically add prefix" do
100
- Cms.expects(:table_prefix).returns("abc_").at_least_once
101
-
102
- ActiveRecord::Base.connection.instance_eval do
103
- drop_table('abc_add_prefix') rescue nil
104
- drop_table('abc_add_prefix_versions') rescue nil
105
- create_content_table 'add_prefix' do |t| ; end
106
- end
107
-
108
- assert_table_was_created('abc_add_prefix')
109
- end
110
-
111
- test "Can optionally not create prefixed table" do
112
- Cms.expects(:table_prefix).never
113
-
114
- name = 'stuff'
115
- ActiveRecord::Base.connection.instance_eval do
116
- drop_table("stuff_versions") if table_exists?("stuff_versions")
117
- drop_table("stuff") if table_exists?("stuff")
118
- create_content_table name, :prefix=>false do |t|
119
- end
120
- end
121
-
122
- assert_table_was_created('stuff')
123
- end
124
-
125
- private
126
-
127
- def connection
128
- ActiveRecord::Base.connection
129
- end
130
-
131
- def assert_table_was_created(table_name)
132
- result = connection.execute("show tables like '#{table_name}'")
133
- assert_equal 1, result.count, "Ensure the table was crated. (Might fail when running unit tests with drivers other than mysql2)"
134
- end
135
- end
136
-
137
-