activeadministration 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +47 -0
- data/.travis.yml +19 -0
- data/.yardopts +9 -0
- data/CHANGELOG.md +1074 -0
- data/CONTRIBUTING.md +139 -0
- data/Gemfile +52 -0
- data/Guardfile +7 -0
- data/LICENSE +25 -0
- data/README.md +8 -0
- data/Rakefile +33 -0
- data/activeadministration.gemspec +34 -0
- data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/app/assets/images/active_admin/index_list_icons/block_icon.svg +10 -0
- data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +4 -0
- data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +13 -0
- data/app/assets/images/active_admin/index_list_icons/table_icon.svg +3 -0
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/application.js.coffee +30 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
- data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +36 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +85 -0
- data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +75 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +36 -0
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +68 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +24 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +42 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +329 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +156 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +127 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +31 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +16 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +65 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +111 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +66 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +38 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +36 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +26 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +34 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.css.scss +284 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +46 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +14 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +19 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/app/views/active_admin/devise/shared/_links.erb +27 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +14 -0
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +17 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin/_paginator.html.erb +23 -0
- data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +37 -0
- data/config/locales/bg.yml +102 -0
- data/config/locales/bs.yml +121 -0
- data/config/locales/ca.yml +102 -0
- data/config/locales/cs.yml +106 -0
- data/config/locales/da.yml +103 -0
- data/config/locales/de-CH.yml +118 -0
- data/config/locales/de.yml +143 -0
- data/config/locales/el.yml +111 -0
- data/config/locales/en-GB.yml +95 -0
- data/config/locales/en.yml +117 -0
- data/config/locales/es.yml +127 -0
- data/config/locales/es_MX.yml +110 -0
- data/config/locales/fi.yml +110 -0
- data/config/locales/fr.yml +109 -0
- data/config/locales/he.yml +92 -0
- data/config/locales/hr.yml +121 -0
- data/config/locales/hu.yml +96 -0
- data/config/locales/it.yml +114 -0
- data/config/locales/ja.yml +114 -0
- data/config/locales/ko.yml +85 -0
- data/config/locales/lt.yml +118 -0
- data/config/locales/lv.yml +90 -0
- data/config/locales/nl.yml +94 -0
- data/config/locales/no-NB.yml +111 -0
- data/config/locales/pl.yml +100 -0
- data/config/locales/pt-BR.yml +117 -0
- data/config/locales/pt-PT.yml +90 -0
- data/config/locales/ro.yml +94 -0
- data/config/locales/ru.yml +121 -0
- data/config/locales/sv-SE.yml +90 -0
- data/config/locales/tr.yml +94 -0
- data/config/locales/uk.yml +121 -0
- data/config/locales/vi.yml +91 -0
- data/config/locales/zh-CN.yml +112 -0
- data/config/locales/zh-TW.yml +94 -0
- data/cucumber.yml +3 -0
- data/docs/0-installation.md +84 -0
- data/docs/1-general-configuration.md +138 -0
- data/docs/10-custom-pages.md +84 -0
- data/docs/11-decorators.md +50 -0
- data/docs/12-arbre-components.md +150 -0
- data/docs/13-authorization-adapter.md +239 -0
- data/docs/2-resource-customization.md +359 -0
- data/docs/3-index-pages.md +245 -0
- data/docs/3-index-pages/create-an-index.md +31 -0
- data/docs/3-index-pages/index-as-block.md +21 -0
- data/docs/3-index-pages/index-as-blog.md +71 -0
- data/docs/3-index-pages/index-as-grid.md +29 -0
- data/docs/3-index-pages/index-as-table.md +163 -0
- data/docs/4-csv-format.md +39 -0
- data/docs/5-forms.md +118 -0
- data/docs/6-show-pages.md +77 -0
- data/docs/7-sidebars.md +63 -0
- data/docs/8-custom-actions.md +159 -0
- data/docs/9-batch-actions.md +233 -0
- data/features/action_item.feature +73 -0
- data/features/authorization.feature +64 -0
- data/features/authorization_cancan.feature +52 -0
- data/features/authorization_pundit.feature +37 -0
- data/features/belongs_to.feature +66 -0
- data/features/breadcrumb.feature +75 -0
- data/features/comments/commenting.feature +159 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +16 -0
- data/features/decorators.feature +41 -0
- data/features/development_reloading.feature +31 -0
- data/features/edit_page.feature +114 -0
- data/features/favicon.feature +20 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +29 -0
- data/features/i18n.feature +43 -0
- data/features/index/batch_actions.feature +123 -0
- data/features/index/filters.feature +138 -0
- data/features/index/format_as_csv.feature +117 -0
- data/features/index/formats.feature +66 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +69 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +208 -0
- data/features/index/index_blank_slate.feature +83 -0
- data/features/index/index_parameters.feature +75 -0
- data/features/index/index_scope_to.feature +56 -0
- data/features/index/index_scopes.feature +251 -0
- data/features/index/page_title.feature +41 -0
- data/features/index/pagination.feature +59 -0
- data/features/index/switch_index_view.feature +73 -0
- data/features/menu.feature +53 -0
- data/features/new_page.feature +106 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_pages.feature +148 -0
- data/features/registering_resources.feature +33 -0
- data/features/root_to.feature +17 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +58 -0
- data/features/sidebar_sections.feature +210 -0
- data/features/site_title.feature +47 -0
- data/features/specifying_actions.feature +93 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/action_link_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +82 -0
- data/features/step_definitions/asset_steps.rb +15 -0
- data/features/step_definitions/attribute_steps.rb +18 -0
- data/features/step_definitions/batch_action_steps.rb +55 -0
- data/features/step_definitions/breadcrumb_steps.rb +3 -0
- data/features/step_definitions/comment_steps.rb +12 -0
- data/features/step_definitions/configuration_steps.rb +100 -0
- data/features/step_definitions/dashboard_steps.rb +15 -0
- data/features/step_definitions/factory_steps.rb +34 -0
- data/features/step_definitions/filter_steps.rb +17 -0
- data/features/step_definitions/flash_steps.rb +11 -0
- data/features/step_definitions/format_steps.rb +45 -0
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/index_scope_steps.rb +21 -0
- data/features/step_definitions/index_views_steps.rb +3 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/member_link_steps.rb +7 -0
- data/features/step_definitions/menu_steps.rb +11 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +12 -0
- data/features/step_definitions/site_title_steps.rb +15 -0
- data/features/step_definitions/symbol_leak_steps.rb +3 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/table_steps.rb +119 -0
- data/features/step_definitions/user_steps.rb +41 -0
- data/features/step_definitions/web_steps.rb +86 -0
- data/features/sti_resource.feature +65 -0
- data/features/strong_parameters.feature +72 -0
- data/features/support/env.rb +119 -0
- data/features/support/paths.rb +71 -0
- data/features/support/selectors.rb +45 -0
- data/features/symbol_leak.feature +35 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin.rb +135 -0
- data/lib/active_admin/abstract_view_factory.rb +86 -0
- data/lib/active_admin/application.rb +250 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +132 -0
- data/lib/active_admin/base_controller.rb +78 -0
- data/lib/active_admin/base_controller/authorization.rb +151 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/batch_actions/controller.rb +29 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +154 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +38 -0
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +57 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/callbacks.rb +84 -0
- data/lib/active_admin/cancan_adapter.rb +40 -0
- data/lib/active_admin/component.rb +5 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +70 -0
- data/lib/active_admin/dependencies.rb +38 -0
- data/lib/active_admin/deprecation.rb +35 -0
- data/lib/active_admin/devise.rb +80 -0
- data/lib/active_admin/dsl.rb +165 -0
- data/lib/active_admin/engine.rb +7 -0
- data/lib/active_admin/error.rb +22 -0
- data/lib/active_admin/event.rb +33 -0
- data/lib/active_admin/filters.rb +9 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +87 -0
- data/lib/active_admin/filters/formtastic_addons.rb +73 -0
- data/lib/active_admin/filters/resource_extension.rb +135 -0
- data/lib/active_admin/form_builder.rb +185 -0
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/i18n.rb +7 -0
- data/lib/active_admin/helpers/optional_display.rb +38 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +106 -0
- data/lib/active_admin/iconic.rb +54 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/inputs.rb +15 -0
- data/lib/active_admin/inputs/datepicker_input.rb +20 -0
- data/lib/active_admin/inputs/filter_base.rb +40 -0
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
- data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +48 -0
- data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
- data/lib/active_admin/inputs/filter_numeric_input.rb +10 -0
- data/lib/active_admin/inputs/filter_select_input.rb +53 -0
- data/lib/active_admin/inputs/filter_string_input.rb +24 -0
- data/lib/active_admin/menu.rb +107 -0
- data/lib/active_admin/menu_collection.rb +96 -0
- data/lib/active_admin/menu_item.rb +97 -0
- data/lib/active_admin/namespace.rb +231 -0
- data/lib/active_admin/order_clause.rb +26 -0
- data/lib/active_admin/orm/active_record.rb +3 -0
- data/lib/active_admin/orm/active_record/comments.rb +84 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +49 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +75 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/page.rb +88 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +28 -0
- data/lib/active_admin/page_presenter.rb +32 -0
- data/lib/active_admin/pundit_adapter.rb +42 -0
- data/lib/active_admin/resource.rb +156 -0
- data/lib/active_admin/resource/action_items.rb +91 -0
- data/lib/active_admin/resource/belongs_to.rb +36 -0
- data/lib/active_admin/resource/controllers.rb +18 -0
- data/lib/active_admin/resource/menu.rb +64 -0
- data/lib/active_admin/resource/naming.rb +84 -0
- data/lib/active_admin/resource/page_presenters.rb +82 -0
- data/lib/active_admin/resource/pagination.rb +19 -0
- data/lib/active_admin/resource/routes.rb +99 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +50 -0
- data/lib/active_admin/resource/sidebars.rb +28 -0
- data/lib/active_admin/resource_collection.rb +70 -0
- data/lib/active_admin/resource_controller.rb +50 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +284 -0
- data/lib/active_admin/resource_controller/decorators.rb +100 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
- data/lib/active_admin/resource_controller/scoping.rb +31 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/resource_dsl.rb +171 -0
- data/lib/active_admin/router.rb +106 -0
- data/lib/active_admin/scope.rb +57 -0
- data/lib/active_admin/sidebar_section.rb +45 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +27 -0
- data/lib/active_admin/view_helpers.rb +21 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +37 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +27 -0
- data/lib/active_admin/view_helpers/display_helper.rb +64 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +49 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +13 -0
- data/lib/active_admin/view_helpers/form_helper.rb +21 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +105 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +157 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
- data/lib/active_admin/views/components/index_list.rb +68 -0
- data/lib/active_admin/views/components/paginated_collection.rb +126 -0
- data/lib/active_admin/views/components/panel.rb +34 -0
- data/lib/active_admin/views/components/popover.rb +27 -0
- data/lib/active_admin/views/components/scopes.rb +66 -0
- data/lib/active_admin/views/components/sidebar_section.rb +29 -0
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +67 -0
- data/lib/active_admin/views/components/table_for.rb +212 -0
- data/lib/active_admin/views/footer.rb +20 -0
- data/lib/active_admin/views/header.rb +32 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +156 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +277 -0
- data/lib/active_admin/views/pages/base.rb +139 -0
- data/lib/active_admin/views/pages/form.rb +51 -0
- data/lib/active_admin/views/pages/index.rb +163 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/page.rb +30 -0
- data/lib/active_admin/views/pages/show.rb +59 -0
- data/lib/active_admin/views/tabbed_navigation.rb +62 -0
- data/lib/active_admin/views/title_bar.rb +55 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +16 -0
- data/lib/generators/active_admin/assets/templates/active_admin.css.scss +17 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +66 -0
- data/lib/generators/active_admin/install/install_generator.rb +46 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +243 -0
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +30 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +17 -0
- data/lib/ransack_ext.rb +12 -0
- data/script/local +44 -0
- data/script/use_rails +53 -0
- data/spec/integration/default_namespace_spec.rb +61 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/memory_spec.rb +29 -0
- data/spec/integration/stylesheets_spec.rb +18 -0
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
- data/spec/javascripts/support/jquery.min.js +4 -0
- data/spec/spec_helper.rb +182 -0
- data/spec/spec_helper_without_rails.rb +16 -0
- data/spec/support/deferred_garbage_collection.rb +19 -0
- data/spec/support/detect_rails_version.rb +42 -0
- data/spec/support/integration_example_group.rb +31 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +117 -0
- data/spec/support/rails_template_with_data.rb +59 -0
- data/spec/support/templates/admin/stores.rb +11 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/support/templates/cucumber_with_reloading.rb +5 -0
- data/spec/support/templates/en.yml +8 -0
- data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
- data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
- data/spec/support/templates/policies/admin_user_policy.rb +11 -0
- data/spec/support/templates/policies/application_policy.rb +45 -0
- data/spec/support/templates/policies/category_policy.rb +7 -0
- data/spec/support/templates/policies/post_policy.rb +15 -0
- data/spec/support/templates/policies/store_policy.rb +11 -0
- data/spec/support/templates/policies/user_policy.rb +11 -0
- data/spec/support/templates/post_decorator.rb +11 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +126 -0
- data/spec/unit/active_admin_spec.rb +11 -0
- data/spec/unit/application_spec.rb +140 -0
- data/spec/unit/asset_registration_spec.rb +52 -0
- data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
- data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
- data/spec/unit/auto_link_spec.rb +34 -0
- data/spec/unit/batch_actions/resource_spec.rb +92 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/belongs_to_spec.rb +42 -0
- data/spec/unit/cancan_adapter_spec.rb +43 -0
- data/spec/unit/comments_spec.rb +144 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/config_shared_examples.rb +59 -0
- data/spec/unit/controller_filters_spec.rb +37 -0
- data/spec/unit/csv_builder_spec.rb +134 -0
- data/spec/unit/devise_spec.rb +116 -0
- data/spec/unit/dsl_spec.rb +61 -0
- data/spec/unit/event_spec.rb +47 -0
- data/spec/unit/filters/filter_form_builder_spec.rb +418 -0
- data/spec/unit/filters/resource_spec.rb +121 -0
- data/spec/unit/form_builder_spec.rb +576 -0
- data/spec/unit/generators/install_spec.rb +23 -0
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_collection_spec.rb +62 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +71 -0
- data/spec/unit/namespace/authorization_spec.rb +27 -0
- data/spec/unit/namespace/register_page_spec.rb +74 -0
- data/spec/unit/namespace/register_resource_spec.rb +163 -0
- data/spec/unit/namespace_spec.rb +103 -0
- data/spec/unit/order_clause_spec.rb +57 -0
- data/spec/unit/page_controller_spec.rb +5 -0
- data/spec/unit/page_spec.rb +72 -0
- data/spec/unit/pretty_format_spec.rb +63 -0
- data/spec/unit/pundit_adapter_spec.rb +36 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +18 -0
- data/spec/unit/resource/naming_spec.rb +122 -0
- data/spec/unit/resource/page_presenters_spec.rb +44 -0
- data/spec/unit/resource/pagination_spec.rb +38 -0
- data/spec/unit/resource/routes_spec.rb +73 -0
- data/spec/unit/resource/scopes_spec.rb +50 -0
- data/spec/unit/resource/sidebars_spec.rb +43 -0
- data/spec/unit/resource_collection_spec.rb +158 -0
- data/spec/unit/resource_controller/data_access_spec.rb +73 -0
- data/spec/unit/resource_controller/decorators_spec.rb +86 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
- data/spec/unit/resource_controller_spec.rb +265 -0
- data/spec/unit/resource_registration_spec.rb +56 -0
- data/spec/unit/resource_spec.rb +263 -0
- data/spec/unit/routing_spec.rb +172 -0
- data/spec/unit/scope_spec.rb +114 -0
- data/spec/unit/settings_spec.rb +88 -0
- data/spec/unit/view_factory_spec.rb +21 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +180 -0
- data/spec/unit/view_helpers/display_name_spec.rb +68 -0
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
- data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +42 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +97 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +29 -0
- data/spec/unit/views/components/attributes_table_spec.rb +259 -0
- data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
- data/spec/unit/views/components/blank_slate_spec.rb +17 -0
- data/spec/unit/views/components/columns_spec.rb +172 -0
- data/spec/unit/views/components/index_list_spec.rb +32 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +229 -0
- data/spec/unit/views/components/panel_spec.rb +51 -0
- data/spec/unit/views/components/popover_spec.rb +33 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +47 -0
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +102 -0
- data/spec/unit/views/components/table_for_spec.rb +242 -0
- data/spec/unit/views/pages/form_spec.rb +35 -0
- data/spec/unit/views/pages/layout_spec.rb +63 -0
- data/spec/unit/views/pages/show_spec.rb +20 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +149 -0
- data/tasks/docs.rake +37 -0
- data/tasks/js.rake +32 -0
- data/tasks/parallel_tests.rake +60 -0
- data/tasks/test.rake +79 -0
- data/tasks/yard.rake +7 -0
- metadata +741 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
|
2
|
+
# It is recommended to regenerate this file in the future when you upgrade to a
|
|
3
|
+
# newer version of cucumber-rails. Consider adding your own code to a new file
|
|
4
|
+
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
|
5
|
+
# files.
|
|
6
|
+
|
|
7
|
+
ENV["RAILS_ENV"] ||= "cucumber"
|
|
8
|
+
|
|
9
|
+
require File.expand_path('../../../spec/spec_helper_without_rails', __FILE__)
|
|
10
|
+
|
|
11
|
+
ENV['RAILS_ROOT'] = File.expand_path("../../../spec/rails/rails-#{ENV["RAILS"]}", __FILE__)
|
|
12
|
+
|
|
13
|
+
# Create the test app if it doesn't exists
|
|
14
|
+
unless File.exists?(ENV['RAILS_ROOT'])
|
|
15
|
+
system 'rake setup'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
require 'rails'
|
|
19
|
+
require 'active_record'
|
|
20
|
+
require 'active_admin'
|
|
21
|
+
ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + "/app/admin"]
|
|
22
|
+
|
|
23
|
+
require ENV['RAILS_ROOT'] + '/config/environment'
|
|
24
|
+
|
|
25
|
+
# Setup autoloading of ActiveAdmin and the load path
|
|
26
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
27
|
+
autoload :ActiveAdmin, 'active_admin'
|
|
28
|
+
|
|
29
|
+
require 'cucumber/rails'
|
|
30
|
+
|
|
31
|
+
require 'cucumber/rspec/doubles'
|
|
32
|
+
|
|
33
|
+
require 'capybara/rails'
|
|
34
|
+
require 'capybara/cucumber'
|
|
35
|
+
require 'capybara/session'
|
|
36
|
+
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
|
|
37
|
+
# order to ease the transition to Capybara we set the default here. If you'd
|
|
38
|
+
# prefer to use XPath just remove this line and adjust any selectors in your
|
|
39
|
+
# steps to use the XPath syntax.
|
|
40
|
+
Capybara.default_selector = :css
|
|
41
|
+
|
|
42
|
+
# If you set this to false, any error raised from within your app will bubble
|
|
43
|
+
# up to your step definition and out to cucumber unless you catch it somewhere
|
|
44
|
+
# on the way. You can make Rails rescue errors and render error pages on a
|
|
45
|
+
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
|
|
46
|
+
#
|
|
47
|
+
# If you set this to true, Rails will rescue all errors and render error
|
|
48
|
+
# pages, more or less in the same way your application would behave in the
|
|
49
|
+
# default production environment. It's not recommended to do this for all
|
|
50
|
+
# of your scenarios, as this makes it hard to discover errors in your application.
|
|
51
|
+
ActionController::Base.allow_rescue = false
|
|
52
|
+
|
|
53
|
+
# If you set this to true, each scenario will run in a database transaction.
|
|
54
|
+
# You can still turn off transactions on a per-scenario basis, simply tagging
|
|
55
|
+
# a feature or scenario with the @no-txn tag. If you are using Capybara,
|
|
56
|
+
# tagging with @culerity or @javascript will also turn transactions off.
|
|
57
|
+
#
|
|
58
|
+
# If you set this to false, transactions will be off for all scenarios,
|
|
59
|
+
# regardless of whether you use @no-txn or not.
|
|
60
|
+
#
|
|
61
|
+
# Beware that turning transactions off will leave data in your database
|
|
62
|
+
# after each scenario, which can lead to hard-to-debug failures in
|
|
63
|
+
# subsequent scenarios. If you do this, we recommend you create a Before
|
|
64
|
+
# block that will explicitly put your database in a known state.
|
|
65
|
+
Cucumber::Rails::World.use_transactional_fixtures = false
|
|
66
|
+
# How to clean your database when transactions are turned off. See
|
|
67
|
+
# http://github.com/bmabey/database_cleaner for more info.
|
|
68
|
+
if defined?(ActiveRecord::Base)
|
|
69
|
+
begin
|
|
70
|
+
require 'database_cleaner'
|
|
71
|
+
require 'database_cleaner/cucumber'
|
|
72
|
+
DatabaseCleaner.strategy = :truncation
|
|
73
|
+
rescue LoadError => ignore_if_database_cleaner_not_present
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Warden helpers to speed up login
|
|
78
|
+
# See https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
|
|
79
|
+
include Warden::Test::Helpers
|
|
80
|
+
|
|
81
|
+
After do
|
|
82
|
+
Warden.test_reset!
|
|
83
|
+
|
|
84
|
+
# Reset back to the default auth adapter
|
|
85
|
+
ActiveAdmin.application.namespace(:admin).
|
|
86
|
+
authorization_adapter = ActiveAdmin::AuthorizationAdapter
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
Before do
|
|
90
|
+
|
|
91
|
+
begin
|
|
92
|
+
# We are caching classes, but need to manually clear references to
|
|
93
|
+
# the controllers. If they aren't clear, the router stores references
|
|
94
|
+
ActiveSupport::Dependencies.clear
|
|
95
|
+
|
|
96
|
+
# Reload Active Admin
|
|
97
|
+
ActiveAdmin.unload!
|
|
98
|
+
ActiveAdmin.load!
|
|
99
|
+
rescue
|
|
100
|
+
p $!
|
|
101
|
+
raise $!
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# improve the performance of the specs suite by not logging anything
|
|
106
|
+
# see http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/
|
|
107
|
+
Rails.logger.level = 4
|
|
108
|
+
|
|
109
|
+
# Improves performance by forcing the garbage collector to run less often.
|
|
110
|
+
unless ENV['DEFER_GC'] == '0' || ENV['DEFER_GC'] == 'false'
|
|
111
|
+
require File.expand_path('../../../spec/support/deferred_garbage_collection', __FILE__)
|
|
112
|
+
Before { DeferredGarbageCollection.start }
|
|
113
|
+
After { DeferredGarbageCollection.reconsider }
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Don't run @rails4 tagged features for versions before Rails 4.
|
|
117
|
+
Before('@rails4') do |scenario|
|
|
118
|
+
scenario.skip_invoke! if Rails::VERSION::MAJOR < 4
|
|
119
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
module NavigationHelpers
|
|
2
|
+
# Maps a name to a path. Used by the
|
|
3
|
+
#
|
|
4
|
+
# When /^I go to (.+)$/ do |page_name|
|
|
5
|
+
#
|
|
6
|
+
# step definition in web_steps.rb
|
|
7
|
+
#
|
|
8
|
+
def path_to(page_name)
|
|
9
|
+
params = page_name.scan(/with params "(.*?)"/).flatten[0] || ''
|
|
10
|
+
page_name.sub! /\ with params.*/, ''
|
|
11
|
+
|
|
12
|
+
url = case page_name
|
|
13
|
+
|
|
14
|
+
when /the home\s?page/
|
|
15
|
+
'/'
|
|
16
|
+
when /the dashboard/
|
|
17
|
+
"/admin"
|
|
18
|
+
when /the new post page/
|
|
19
|
+
"/admin/posts/new"
|
|
20
|
+
when /the login page/
|
|
21
|
+
"/admin/login"
|
|
22
|
+
when /the first post show page/
|
|
23
|
+
"/admin/posts/1"
|
|
24
|
+
when /the first post edit page/
|
|
25
|
+
"/admin/posts/1/edit"
|
|
26
|
+
when /the admin password reset form with token "([^"]*)"/
|
|
27
|
+
"/admin/password/edit?reset_password_token=#{$1}"
|
|
28
|
+
|
|
29
|
+
# the index page for posts in the root namespace
|
|
30
|
+
# the index page for posts in the user_admin namespace
|
|
31
|
+
when /^the index page for (.*) in the (.*) namespace$/
|
|
32
|
+
if $2 != 'root'
|
|
33
|
+
send "#{$2}_#{$1}_path"
|
|
34
|
+
else
|
|
35
|
+
send "#{$1}_path"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# same as above, except defaults to admin namespace
|
|
39
|
+
when /^the index page for (.*)$/
|
|
40
|
+
send "admin_#{$1}_path"
|
|
41
|
+
|
|
42
|
+
when /^the last author's posts$/
|
|
43
|
+
admin_user_posts_path(User.last)
|
|
44
|
+
|
|
45
|
+
when /^the last author's last post page$/
|
|
46
|
+
admin_user_post_path(User.last, Post.where(author_id: User.last.id).last)
|
|
47
|
+
|
|
48
|
+
when /^the last post's edit page$/
|
|
49
|
+
edit_admin_post_path(Post.last)
|
|
50
|
+
|
|
51
|
+
# Add more mappings here.
|
|
52
|
+
# Here is an example that pulls values out of the Regexp:
|
|
53
|
+
#
|
|
54
|
+
# when /^(.*)'s profile page$/i
|
|
55
|
+
# user_profile_path(User.find_by_login($1))
|
|
56
|
+
|
|
57
|
+
else
|
|
58
|
+
begin
|
|
59
|
+
page_name =~ /the (.*) page/
|
|
60
|
+
path_components = $1.split(/\s+/)
|
|
61
|
+
self.send path_components.push('path').join('_')
|
|
62
|
+
rescue Object => e
|
|
63
|
+
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
|
|
64
|
+
"Now, go and add a mapping in #{__FILE__}"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
url + params
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
World(NavigationHelpers)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module HtmlSelectorsHelpers
|
|
2
|
+
# Maps a name to a selector. Used primarily by the
|
|
3
|
+
#
|
|
4
|
+
# When /^(.+) within (.+)$/ do |step, scope|
|
|
5
|
+
#
|
|
6
|
+
# step definitions in web_steps.rb
|
|
7
|
+
#
|
|
8
|
+
def selector_for(locator)
|
|
9
|
+
case locator
|
|
10
|
+
|
|
11
|
+
when "the page"
|
|
12
|
+
"html > body"
|
|
13
|
+
|
|
14
|
+
# Add more mappings here.
|
|
15
|
+
# Here is an example that pulls values out of the Regexp:
|
|
16
|
+
#
|
|
17
|
+
# when /^the (notice|error|info) flash$/
|
|
18
|
+
# ".flash.#{$1}"
|
|
19
|
+
|
|
20
|
+
# You can also return an array to use a different selector
|
|
21
|
+
# type, like:
|
|
22
|
+
#
|
|
23
|
+
# when /the header/
|
|
24
|
+
# [:xpath, "//header"]
|
|
25
|
+
|
|
26
|
+
when "index grid"
|
|
27
|
+
[:css, "table.index_grid"]
|
|
28
|
+
|
|
29
|
+
when /^the "([^"]*)" sidebar$/
|
|
30
|
+
[:css, "##{$1.gsub(" ", '').underscore}_sidebar_section"]
|
|
31
|
+
|
|
32
|
+
# This allows you to provide a quoted selector as the scope
|
|
33
|
+
# for "within" steps as was previously the default for the
|
|
34
|
+
# web steps:
|
|
35
|
+
when /^"(.+)"$/
|
|
36
|
+
$1
|
|
37
|
+
|
|
38
|
+
else
|
|
39
|
+
raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
|
|
40
|
+
"Now, go and add a mapping in #{__FILE__}"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
World(HtmlSelectorsHelpers)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Feature: User input shouldn't be symbolized
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given a configuration of:
|
|
5
|
+
"""
|
|
6
|
+
ActiveAdmin.register Post
|
|
7
|
+
"""
|
|
8
|
+
Given I am logged in
|
|
9
|
+
And 1 post exists
|
|
10
|
+
|
|
11
|
+
Scenario: The dashboard doesn't leak
|
|
12
|
+
Given I am on the dashboard with params "?really_long_malicious_key0"
|
|
13
|
+
Then "really_long_malicious_key0" shouldn't be a symbol
|
|
14
|
+
|
|
15
|
+
Scenario: The index page doesn't leak
|
|
16
|
+
Given I am on the index page for posts with params "?really_long_malicious_key1"
|
|
17
|
+
Then "really_long_malicious_key1" shouldn't be a symbol
|
|
18
|
+
|
|
19
|
+
@allow-rescue
|
|
20
|
+
Scenario: The filter query hash doesn't leak
|
|
21
|
+
Given I am on the index page for posts with params "?q[really_long_malicious_key2]"
|
|
22
|
+
Then "really_long_malicious_key2" shouldn't be a symbol
|
|
23
|
+
|
|
24
|
+
Scenario: The show page doesn't leak
|
|
25
|
+
Given I go to the first post show page with params "?really_long_malicious_key3"
|
|
26
|
+
Then "really_long_malicious_key3" shouldn't be a symbol
|
|
27
|
+
|
|
28
|
+
Scenario: The edit page doesn't leak
|
|
29
|
+
Given I go to the first post edit page with params "?really_long_malicious_key4"
|
|
30
|
+
Then "really_long_malicious_key4" shouldn't be a symbol
|
|
31
|
+
|
|
32
|
+
@allow-rescue
|
|
33
|
+
Scenario: Batch Actions don't leak
|
|
34
|
+
Given I POST to "admin/posts/batch_action" with params "?batch_action=really_long_malicious_key5"
|
|
35
|
+
Then "really_long_malicious_key5" shouldn't be a symbol
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Feature: User Logging In
|
|
2
|
+
|
|
3
|
+
Logging in to the system as an admin user
|
|
4
|
+
|
|
5
|
+
Background:
|
|
6
|
+
Given a configuration of:
|
|
7
|
+
"""
|
|
8
|
+
ActiveAdmin.register Post
|
|
9
|
+
"""
|
|
10
|
+
And I am logged out
|
|
11
|
+
And an admin user "admin@example.com" exists
|
|
12
|
+
When I go to the dashboard
|
|
13
|
+
|
|
14
|
+
Scenario: Logging in Successfully
|
|
15
|
+
When I fill in "Email" with "admin@example.com"
|
|
16
|
+
And I fill in "Password" with "password"
|
|
17
|
+
And I press "Login"
|
|
18
|
+
Then I should be on the the dashboard
|
|
19
|
+
And I should see the element "a[href='/admin/logout' ]:contains('Logout')"
|
|
20
|
+
And I should see the element "a[href='/admin/admin_users/1']:contains('admin@example.com')"
|
|
21
|
+
|
|
22
|
+
Scenario: Attempting to log in with an incorrect email address
|
|
23
|
+
When I fill in "Email" with "not-an-admin@example.com"
|
|
24
|
+
And I fill in "Password" with "not-my-password"
|
|
25
|
+
And I press "Login"
|
|
26
|
+
Then I should see "Login"
|
|
27
|
+
And I should see "Invalid email or password."
|
|
28
|
+
|
|
29
|
+
Scenario: Attempting to log in with an incorrect password
|
|
30
|
+
When I fill in "Email" with "admin@example.com"
|
|
31
|
+
And I fill in "Password" with "not-my-password"
|
|
32
|
+
And I press "Login"
|
|
33
|
+
Then I should see "Login"
|
|
34
|
+
And I should see "Invalid email or password."
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Feature: User Logging out
|
|
2
|
+
|
|
3
|
+
Logging out of the system as an admin user
|
|
4
|
+
|
|
5
|
+
Scenario: Logging out successfully
|
|
6
|
+
Given a configuration of:
|
|
7
|
+
"""
|
|
8
|
+
ActiveAdmin.register Post
|
|
9
|
+
"""
|
|
10
|
+
And I am logged in
|
|
11
|
+
When I go to the dashboard
|
|
12
|
+
And I follow "Logout"
|
|
13
|
+
Then I should see "Login"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Feature: User Resetting Password
|
|
2
|
+
|
|
3
|
+
Resetting my password as an admin user
|
|
4
|
+
|
|
5
|
+
Background:
|
|
6
|
+
Given a configuration of:
|
|
7
|
+
"""
|
|
8
|
+
ActiveAdmin.register Post
|
|
9
|
+
"""
|
|
10
|
+
And I am logged out
|
|
11
|
+
And an admin user "admin@example.com" exists
|
|
12
|
+
|
|
13
|
+
Scenario: Resetting password successfully
|
|
14
|
+
When I go to the dashboard
|
|
15
|
+
And I follow "Forgot your password?"
|
|
16
|
+
When I fill in "Email" with "admin@example.com"
|
|
17
|
+
And I press "Reset My Password"
|
|
18
|
+
Then I should see "You will receive an email with instructions on how to reset your password in a few minutes."
|
|
19
|
+
|
|
20
|
+
Scenario: Changing password after resetting
|
|
21
|
+
When "admin@example.com" requests a pasword reset with token "foobarbaz"
|
|
22
|
+
When I go to the admin password reset form with token "foobarbaz"
|
|
23
|
+
And I fill in "Password" with "password"
|
|
24
|
+
And I fill in "Password confirmation" with "password"
|
|
25
|
+
And I press "Change my password"
|
|
26
|
+
Then I should see "success"
|
|
27
|
+
|
|
28
|
+
Scenario: Changing password after resetting with errors
|
|
29
|
+
When "admin@example.com" requests a pasword reset with token "foobarbaz" but it expires
|
|
30
|
+
When I go to the admin password reset form with token "foobarbaz"
|
|
31
|
+
And I fill in "Password" with "password"
|
|
32
|
+
And I fill in "Password confirmation" with "wrong"
|
|
33
|
+
And I press "Change my password"
|
|
34
|
+
Then I should see "expired"
|
data/lib/active_admin.rb
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
require 'active_support/core_ext'
|
|
2
|
+
require 'set'
|
|
3
|
+
|
|
4
|
+
require 'ransack'
|
|
5
|
+
require 'ransack_ext'
|
|
6
|
+
require 'bourbon'
|
|
7
|
+
require 'devise'
|
|
8
|
+
require 'kaminari'
|
|
9
|
+
require 'formtastic'
|
|
10
|
+
require 'sass-rails'
|
|
11
|
+
require 'inherited_resources'
|
|
12
|
+
require 'jquery-rails'
|
|
13
|
+
require 'jquery-ui-rails'
|
|
14
|
+
require 'coffee-rails'
|
|
15
|
+
require 'arbre'
|
|
16
|
+
|
|
17
|
+
require 'active_admin/helpers/i18n'
|
|
18
|
+
|
|
19
|
+
module ActiveAdmin
|
|
20
|
+
|
|
21
|
+
autoload :VERSION, 'active_admin/version'
|
|
22
|
+
autoload :Application, 'active_admin/application'
|
|
23
|
+
autoload :AssetRegistration, 'active_admin/asset_registration'
|
|
24
|
+
autoload :Authorization, 'active_admin/authorization_adapter'
|
|
25
|
+
autoload :AuthorizationAdapter, 'active_admin/authorization_adapter'
|
|
26
|
+
autoload :Breadcrumbs, 'active_admin/breadcrumbs'
|
|
27
|
+
autoload :Callbacks, 'active_admin/callbacks'
|
|
28
|
+
autoload :Component, 'active_admin/component'
|
|
29
|
+
autoload :BaseController, 'active_admin/base_controller'
|
|
30
|
+
autoload :ControllerAction, 'active_admin/controller_action'
|
|
31
|
+
autoload :CSVBuilder, 'active_admin/csv_builder'
|
|
32
|
+
autoload :Dependencies, 'active_admin/dependencies'
|
|
33
|
+
autoload :Deprecation, 'active_admin/deprecation'
|
|
34
|
+
autoload :Devise, 'active_admin/devise'
|
|
35
|
+
autoload :DSL, 'active_admin/dsl'
|
|
36
|
+
autoload :Event, 'active_admin/event'
|
|
37
|
+
autoload :FormBuilder, 'active_admin/form_builder'
|
|
38
|
+
autoload :Inputs, 'active_admin/inputs'
|
|
39
|
+
autoload :Iconic, 'active_admin/iconic'
|
|
40
|
+
autoload :Menu, 'active_admin/menu'
|
|
41
|
+
autoload :MenuCollection, 'active_admin/menu_collection'
|
|
42
|
+
autoload :MenuItem, 'active_admin/menu_item'
|
|
43
|
+
autoload :Namespace, 'active_admin/namespace'
|
|
44
|
+
autoload :OrderClause, 'active_admin/order_clause'
|
|
45
|
+
autoload :Page, 'active_admin/page'
|
|
46
|
+
autoload :PagePresenter, 'active_admin/page_presenter'
|
|
47
|
+
autoload :PageController, 'active_admin/page_controller'
|
|
48
|
+
autoload :PageDSL, 'active_admin/page_dsl'
|
|
49
|
+
autoload :Reloader, 'active_admin/reloader'
|
|
50
|
+
autoload :Resource, 'active_admin/resource'
|
|
51
|
+
autoload :ResourceController, 'active_admin/resource_controller'
|
|
52
|
+
autoload :ResourceDSL, 'active_admin/resource_dsl'
|
|
53
|
+
autoload :Scope, 'active_admin/scope'
|
|
54
|
+
autoload :ScopeChain, 'active_admin/helpers/scope_chain'
|
|
55
|
+
autoload :SidebarSection, 'active_admin/sidebar_section'
|
|
56
|
+
autoload :TableBuilder, 'active_admin/table_builder'
|
|
57
|
+
autoload :ViewFactory, 'active_admin/view_factory'
|
|
58
|
+
autoload :ViewHelpers, 'active_admin/view_helpers'
|
|
59
|
+
autoload :Views, 'active_admin/views'
|
|
60
|
+
|
|
61
|
+
class << self
|
|
62
|
+
|
|
63
|
+
attr_accessor :application
|
|
64
|
+
|
|
65
|
+
def application
|
|
66
|
+
@application ||= ::ActiveAdmin::Application.new
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Gets called within the initializer
|
|
70
|
+
def setup
|
|
71
|
+
application.setup!
|
|
72
|
+
yield(application)
|
|
73
|
+
application.prepare!
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
delegate :register, to: :application
|
|
77
|
+
delegate :register_page, to: :application
|
|
78
|
+
delegate :unload!, to: :application
|
|
79
|
+
delegate :load!, to: :application
|
|
80
|
+
delegate :routes, to: :application
|
|
81
|
+
|
|
82
|
+
# A callback is triggered each time (before) Active Admin loads the configuration files.
|
|
83
|
+
# In development mode, this will happen whenever the user changes files. In production
|
|
84
|
+
# it only happens on boot.
|
|
85
|
+
#
|
|
86
|
+
# The block takes the current instance of [ActiveAdmin::Application]
|
|
87
|
+
#
|
|
88
|
+
# Example:
|
|
89
|
+
#
|
|
90
|
+
# ActiveAdmin.before_load do |app|
|
|
91
|
+
# # Do some stuff before AA loads
|
|
92
|
+
# end
|
|
93
|
+
#
|
|
94
|
+
# @param [Block] block A block to call each time (before) AA loads resources
|
|
95
|
+
def before_load(&block)
|
|
96
|
+
ActiveAdmin::Event.subscribe ActiveAdmin::Application::BeforeLoadEvent, &block
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# A callback is triggered each time (after) Active Admin loads the configuration files. This
|
|
100
|
+
# is an opportunity to hook into Resources after they've been loaded.
|
|
101
|
+
#
|
|
102
|
+
# The block takes the current instance of [ActiveAdmin::Application]
|
|
103
|
+
#
|
|
104
|
+
# Example:
|
|
105
|
+
#
|
|
106
|
+
# ActiveAdmin.after_load do |app|
|
|
107
|
+
# app.namespaces.each do |name, namespace|
|
|
108
|
+
# puts "Namespace: #{name} loaded!"
|
|
109
|
+
# end
|
|
110
|
+
# end
|
|
111
|
+
#
|
|
112
|
+
# @param [Block] block A block to call each time (after) AA loads resources
|
|
113
|
+
def after_load(&block)
|
|
114
|
+
ActiveAdmin::Event.subscribe ActiveAdmin::Application::AfterLoadEvent, &block
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Require things that don't support autoload
|
|
122
|
+
require 'active_admin/engine'
|
|
123
|
+
require 'active_admin/error'
|
|
124
|
+
|
|
125
|
+
# Require internal plugins
|
|
126
|
+
require 'active_admin/batch_actions'
|
|
127
|
+
require 'active_admin/filters'
|
|
128
|
+
|
|
129
|
+
# Require ORM-specific plugins
|
|
130
|
+
require 'active_admin/orm/active_record' if defined? ActiveRecord
|
|
131
|
+
require 'active_admin/orm/mongoid' if defined? Mongoid
|
|
132
|
+
|
|
133
|
+
# Load gem-specific code only if that gem is being used
|
|
134
|
+
require 'active_admin/cancan_adapter' if Gem.loaded_specs['cancan']
|
|
135
|
+
require 'active_admin/pundit_adapter' if Gem.loaded_specs['pundit']
|