appyantra_admin 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.
- data/.gitignore +6 -0
- data/Gemfile +24 -0
- data/MIT-LICENSE +20 -0
- data/README.md +101 -0
- data/Rakefile +26 -0
- data/app/assets/images/appyantra_admin/.gitkeep +0 -0
- data/app/assets/images/appyantra_admin/breadcrumb_divider.png +0 -0
- data/app/assets/images/appyantra_admin/btn_submit.png +0 -0
- data/app/assets/images/appyantra_admin/btn_submit_2.png +0 -0
- data/app/assets/images/appyantra_admin/btn_view_site.png +0 -0
- data/app/assets/images/appyantra_admin/header_bg.png +0 -0
- data/app/assets/images/appyantra_admin/header_shadow.png +0 -0
- data/app/assets/images/appyantra_admin/icn_add_user.png +0 -0
- data/app/assets/images/appyantra_admin/icn_alert_error.png +0 -0
- data/app/assets/images/appyantra_admin/icn_alert_info.png +0 -0
- data/app/assets/images/appyantra_admin/icn_alert_success.png +0 -0
- data/app/assets/images/appyantra_admin/icn_alert_warning.png +0 -0
- data/app/assets/images/appyantra_admin/icn_audio.png +0 -0
- data/app/assets/images/appyantra_admin/icn_categories.png +0 -0
- data/app/assets/images/appyantra_admin/icn_edit.png +0 -0
- data/app/assets/images/appyantra_admin/icn_edit_article.png +0 -0
- data/app/assets/images/appyantra_admin/icn_folder.png +0 -0
- data/app/assets/images/appyantra_admin/icn_jump_back.png +0 -0
- data/app/assets/images/appyantra_admin/icn_logout.png +0 -0
- data/app/assets/images/appyantra_admin/icn_new_article.png +0 -0
- data/app/assets/images/appyantra_admin/icn_photo.png +0 -0
- data/app/assets/images/appyantra_admin/icn_profile.png +0 -0
- data/app/assets/images/appyantra_admin/icn_search.png +0 -0
- data/app/assets/images/appyantra_admin/icn_security.png +0 -0
- data/app/assets/images/appyantra_admin/icn_settings.png +0 -0
- data/app/assets/images/appyantra_admin/icn_tags.png +0 -0
- data/app/assets/images/appyantra_admin/icn_trash.png +0 -0
- data/app/assets/images/appyantra_admin/icn_user.png +0 -0
- data/app/assets/images/appyantra_admin/icn_video.png +0 -0
- data/app/assets/images/appyantra_admin/icn_view_users.png +0 -0
- data/app/assets/images/appyantra_admin/module_footer_bg.png +0 -0
- data/app/assets/images/appyantra_admin/post_message.png +0 -0
- data/app/assets/images/appyantra_admin/secondary_bar.png +0 -0
- data/app/assets/images/appyantra_admin/secondary_bar_shadow.png +0 -0
- data/app/assets/images/appyantra_admin/sidebar.png +0 -0
- data/app/assets/images/appyantra_admin/sidebar_divider.png +0 -0
- data/app/assets/images/appyantra_admin/sidebar_shadow.png +0 -0
- data/app/assets/images/appyantra_admin/table_sorter_header.png +0 -0
- data/app/assets/images/appyantra_admin/trash.png +0 -0
- data/app/assets/images/appyantra_admin/view.png +0 -0
- data/app/assets/images/website/600x300.gif +0 -0
- data/app/assets/images/website/alert-overlay.png +0 -0
- data/app/assets/images/website/bg.png +0 -0
- data/app/assets/images/website/link_bg.png +0 -0
- data/app/assets/images/website/link_border.png +0 -0
- data/app/assets/images/website/place_holder_img.png +0 -0
- data/app/assets/images/website/triangle.gif +0 -0
- data/app/assets/javascripts/appyantra_admin/admin_settings.js.coffee +3 -0
- data/app/assets/javascripts/appyantra_admin/admins/profiles.js.coffee +3 -0
- data/app/assets/javascripts/appyantra_admin/application.js +9 -0
- data/app/assets/javascripts/appyantra_admin/hideshow.js +39 -0
- data/app/assets/javascripts/appyantra_admin/home.js.coffee +3 -0
- data/app/assets/javascripts/appyantra_admin/jquery-1.5.2.min.js +16 -0
- data/app/assets/javascripts/appyantra_admin/jquery.equalHeight.js +20 -0
- data/app/assets/javascripts/appyantra_admin/jquery.tablesorter.min.js +4 -0
- data/app/assets/javascripts/appyantra_admin/managed_models.js.coffee +7 -0
- data/app/assets/javascripts/website/application.js +8 -0
- data/app/assets/javascripts/website/ie/DD_belatedPNG_0.0.8a-min.js +13 -0
- data/app/assets/javascripts/website/jquery.easing.1.3.js +205 -0
- data/app/assets/javascripts/website/jquery.roundabout-1.0.min.js +41 -0
- data/app/assets/javascripts/website/jquery.roundabout-shapes-1.1.js +150 -0
- data/app/assets/stylesheets/appyantra_admin/admin_settings.css.scss +3 -0
- data/app/assets/stylesheets/appyantra_admin/admins/profiles.css.scss +3 -0
- data/app/assets/stylesheets/appyantra_admin/application.css +7 -0
- data/app/assets/stylesheets/appyantra_admin/ie/ie.css +43 -0
- data/app/assets/stylesheets/appyantra_admin/main.css +1191 -0
- data/app/assets/stylesheets/appyantra_admin/managed_models.css.scss +3 -0
- data/app/assets/stylesheets/website/application.css +7 -0
- data/app/assets/stylesheets/website/reset.css +53 -0
- data/app/assets/stylesheets/website/styles.css +889 -0
- data/app/controllers/appyantra_admin/admin_settings_controller.rb +101 -0
- data/app/controllers/appyantra_admin/application_controller.rb +30 -0
- data/app/controllers/appyantra_admin/assets_controller.rb +91 -0
- data/app/controllers/appyantra_admin/home_controller.rb +24 -0
- data/app/controllers/appyantra_admin/pages_controller.rb +123 -0
- data/app/controllers/appyantra_admin/passwords_controller.rb +28 -0
- data/app/controllers/appyantra_admin/profiles_controller.rb +94 -0
- data/app/controllers/appyantra_admin/sessions_controller.rb +20 -0
- data/app/controllers/appyantra_admin/users/confirmations_controller.rb +15 -0
- data/app/controllers/appyantra_admin/users/passwords_controller.rb +16 -0
- data/app/controllers/appyantra_admin/users/registrations_controller.rb +16 -0
- data/app/controllers/appyantra_admin/users/sessions_controller.rb +15 -0
- data/app/controllers/appyantra_admin/users/user_paths.rb +33 -0
- data/app/controllers/appyantra_admin/users_controller.rb +92 -0
- data/app/helpers/appyantra_admin/admin_settings_helper.rb +9 -0
- data/app/helpers/appyantra_admin/application_helper.rb +73 -0
- data/app/helpers/appyantra_admin/pages_helper.rb +38 -0
- data/app/models/activity_feed.rb +5 -0
- data/app/models/activity_log_observer.rb +58 -0
- data/app/models/admin.rb +11 -0
- data/app/models/admin_setting.rb +74 -0
- data/app/models/encrypted_text.rb +20 -0
- data/app/models/link.rb +5 -0
- data/app/models/page.rb +24 -0
- data/app/models/page_keyword.rb +4 -0
- data/app/models/person.rb +14 -0
- data/app/models/short_text.rb +23 -0
- data/app/models/text.rb +11 -0
- data/app/models/user.rb +11 -0
- data/app/sweepers/appyantra_admin/pages_sweeper.rb +20 -0
- data/app/views/appyantra_admin/admin_settings/edit.html.haml +7 -0
- data/app/views/appyantra_admin/admin_settings/index.html.haml +56 -0
- data/app/views/appyantra_admin/admin_settings/mail_settings.html.haml +7 -0
- data/app/views/appyantra_admin/admin_settings/new.html.haml +7 -0
- data/app/views/appyantra_admin/assets/display.js.haml +3 -0
- data/app/views/appyantra_admin/assets/edit.html.haml +7 -0
- data/app/views/appyantra_admin/assets/new.html.haml +7 -0
- data/app/views/appyantra_admin/assets/show.html.haml +55 -0
- data/app/views/appyantra_admin/home/index.html.haml +74 -0
- data/app/views/appyantra_admin/mailer/reset_password_instructions.html.haml +6 -0
- data/app/views/appyantra_admin/mailer/unlock_instructions.html.haml +6 -0
- data/app/views/appyantra_admin/pages/_form.html.haml +40 -0
- data/app/views/appyantra_admin/pages/_page.html.haml +43 -0
- data/app/views/appyantra_admin/pages/edit.html.haml +19 -0
- data/app/views/appyantra_admin/pages/index.html.haml +46 -0
- data/app/views/appyantra_admin/pages/new.html.haml +7 -0
- data/app/views/appyantra_admin/pages/show.html.haml +1 -0
- data/app/views/appyantra_admin/passwords/edit.html.haml +15 -0
- data/app/views/appyantra_admin/passwords/new.html.haml +11 -0
- data/app/views/appyantra_admin/profiles/_admin_profile_form.html.haml +12 -0
- data/app/views/appyantra_admin/profiles/_admin_user.html.haml +11 -0
- data/app/views/appyantra_admin/profiles/edit.html.haml +18 -0
- data/app/views/appyantra_admin/profiles/index.html.haml +51 -0
- data/app/views/appyantra_admin/profiles/new.html.haml +6 -0
- data/app/views/appyantra_admin/profiles/show.html.haml +10 -0
- data/app/views/appyantra_admin/profiles/show.js.haml +3 -0
- data/app/views/appyantra_admin/sessions/new.html.haml +17 -0
- data/app/views/appyantra_admin/shared/_asset_item.html.haml +15 -0
- data/app/views/appyantra_admin/shared/_assets_list.html.haml +6 -0
- data/app/views/appyantra_admin/shared/_formtastic_semantic_form.html.haml +3 -0
- data/app/views/appyantra_admin/shared/_hash_form.html.haml +7 -0
- data/app/views/appyantra_admin/shared/_links.haml +6 -0
- data/app/views/appyantra_admin/shared/types/_encrypted_text.html.haml +1 -0
- data/app/views/appyantra_admin/shared/types/_link.html.haml +1 -0
- data/app/views/appyantra_admin/shared/types/_short_text.html.haml +1 -0
- data/app/views/appyantra_admin/shared/types/_text.html.haml +1 -0
- data/app/views/appyantra_admin/unlocks/new.html.haml +10 -0
- data/app/views/appyantra_admin/users/_form.html.haml +12 -0
- data/app/views/appyantra_admin/users/_user.html.haml +11 -0
- data/app/views/appyantra_admin/users/edit.html.haml +18 -0
- data/app/views/appyantra_admin/users/index.html.haml +54 -0
- data/app/views/appyantra_admin/users/new.html.haml +6 -0
- data/app/views/appyantra_admin/users/show.html.haml +10 -0
- data/app/views/appyantra_admin/users/show.js.haml +3 -0
- data/app/views/layouts/application.html.haml +98 -0
- data/app/views/layouts/appyantra_admin/application.html.haml +106 -0
- data/app/views/layouts/appyantra_admin/landing_page.html.haml +30 -0
- data/app/views/layouts/appyantra_admin/website.html.haml +96 -0
- data/app/views/pages/_google_analytics.html.haml +11 -0
- data/app/views/pages/_meta_tags.html.haml +2 -0
- data/app/views/pages/page.html.haml +4 -0
- data/app/views/users/confirmations/new.html.haml +26 -0
- data/app/views/users/mailer/confirmation_instructions.html.haml +4 -0
- data/app/views/users/mailer/reset_password_instructions.html.haml +6 -0
- data/app/views/users/mailer/unlock_instructions.html.haml +5 -0
- data/app/views/users/passwords/edit.html.haml +31 -0
- data/app/views/users/passwords/new.html.haml +22 -0
- data/app/views/users/registrations/edit.html.haml +42 -0
- data/app/views/users/registrations/new.html.haml +35 -0
- data/app/views/users/sessions/new.html.haml +26 -0
- data/app/views/website/index.html.haml +50 -0
- data/appyantra_admin.gemspec +24 -0
- data/config/initializers/devise.rb +209 -0
- data/config/initializers/formtastic.rb +82 -0
- data/config/initializers/mail_settings.rb +11 -0
- data/config/initializers/secret_token.rb +7 -0
- data/config/initializers/session_store.rb +8 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/routes.rb +71 -0
- data/db/migrate/20120123093508_create_links.rb +15 -0
- data/db/migrate/20120123093916_create_texts.rb +10 -0
- data/db/migrate/20120123094124_create_admin_settings.rb +12 -0
- data/db/migrate/20120124202814_devise_create_admins.rb +25 -0
- data/db/migrate/20120125093505_add_name_to_admins.rb +6 -0
- data/db/migrate/20120217075442_devise_create_users.rb +25 -0
- data/db/migrate/20120217090326_add_name_to_users.rb +6 -0
- data/db/migrate/20120224210009_create_pages.rb +19 -0
- data/db/migrate/20120302084134_add_group_to_admin_settings.rb +5 -0
- data/db/migrate/20120309075847_create_encrypted_texts.rb +10 -0
- data/db/migrate/20120309075904_create_short_texts.rb +10 -0
- data/db/migrate/20120312234850_add_seo_to_pages.rb +5 -0
- data/db/migrate/20120312235235_create_keywords.rb +10 -0
- data/db/migrate/20120314063338_create_activity_feeds.rb +15 -0
- data/lib/appyantra_admin.rb +49 -0
- data/lib/appyantra_admin/crypto.rb +43 -0
- data/lib/appyantra_admin/engine.rb +17 -0
- data/lib/appyantra_admin/utils.rb +27 -0
- data/lib/appyantra_admin/version.rb +3 -0
- data/lib/generators/appyantra_admin/install/USAGE +8 -0
- data/lib/generators/appyantra_admin/install/install_generator.rb +34 -0
- data/lib/generators/appyantra_admin/install/templates/appyantra_admin.rb +28 -0
- data/lib/tasks/appyantra_admin_tasks.rake +47 -0
- data/script/rails +6 -0
- data/test/dummy/.gitignore +36 -0
- data/test/dummy/.rspec +1 -0
- data/test/dummy/Gemfile +43 -0
- data/test/dummy/Guardfile +19 -0
- data/test/dummy/README +261 -0
- data/test/dummy/Rakefile +8 -0
- data/test/dummy/app/assets/javascripts/application.js +9 -0
- data/test/dummy/app/assets/stylesheets/application.css +7 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/product.rb +2 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +48 -0
- data/test/dummy/config/boot.rb +6 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +30 -0
- data/test/dummy/config/environments/production.rb +60 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/migrate/20120213070715_create_products.rb +11 -0
- data/test/dummy/db/seeds.rb +7 -0
- data/test/dummy/doc/README_FOR_APP +2 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/robots.txt +5 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/spec/controllers/appyantra_admin/admin_settings_controller_spec.rb +56 -0
- data/test/dummy/spec/controllers/appyantra_admin/assets_controller_spec.rb +64 -0
- data/test/dummy/spec/controllers/appyantra_admin/home_controller_spec.rb +28 -0
- data/test/dummy/spec/controllers/appyantra_admin/passwords_controller_spec.rb +40 -0
- data/test/dummy/spec/controllers/appyantra_admin/profiles_controller_spec.rb +88 -0
- data/test/dummy/spec/controllers/appyantra_admin/sessions_controller_spec.rb +32 -0
- data/test/dummy/spec/factories.rb +55 -0
- data/test/dummy/spec/factories/products.rb +9 -0
- data/test/dummy/spec/helpers/appyantra_admin/application_helper_spec.rb +31 -0
- data/test/dummy/spec/models/admin_setting_spec.rb +22 -0
- data/test/dummy/spec/models/admin_spec.rb +10 -0
- data/test/dummy/spec/models/encrypted_text_spec.rb +13 -0
- data/test/dummy/spec/models/link_spec.rb +5 -0
- data/test/dummy/spec/models/text_spec.rb +5 -0
- data/test/dummy/spec/requests/appyantra_admin/admin_user_auth_spec.rb +54 -0
- data/test/dummy/spec/requests/appyantra_admin/dashboard_spec.rb +34 -0
- data/test/dummy/spec/requests/appyantra_admin/mailer_spec.rb +72 -0
- data/test/dummy/spec/requests/appyantra_admin/manage_pages_spec.rb +209 -0
- data/test/dummy/spec/requests/appyantra_admin/manage_website_users_spec.rb +97 -0
- data/test/dummy/spec/requests/appyantra_admin/website_users_spec.rb +25 -0
- data/test/dummy/spec/routing/sessions_routing_spec.rb +11 -0
- data/test/dummy/spec/spec_helper.rb +51 -0
- data/test/dummy/spec/support/capybara.rb +7 -0
- data/test/dummy/spec/support/controller_macros.rb +8 -0
- data/test/dummy/spec/support/integration_macros.rb +40 -0
- data/test/dummy/spec/support/load_routes.rb +5 -0
- data/test/dummy/spec/support/matchers/user_matcher.rb +13 -0
- metadata +428 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe EncryptedText do
|
|
4
|
+
|
|
5
|
+
let(:name) { "secret" }
|
|
6
|
+
let(:secret_text) { "This is some top secret text" }
|
|
7
|
+
|
|
8
|
+
it "can be saved and retrieved" do
|
|
9
|
+
encr_text = EncryptedText.create(name: name, value: secret_text)
|
|
10
|
+
encr_text.entity_value.should == secret_text
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Admin User Authentication" do
|
|
4
|
+
|
|
5
|
+
describe "User lands on the Home page" do
|
|
6
|
+
it "redirects to the login page" do
|
|
7
|
+
get appyantra_admin_home_path
|
|
8
|
+
response.should redirect_to(new_admin_session_path)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "opens the Sign-in page" do
|
|
12
|
+
visit appyantra_admin_home_path
|
|
13
|
+
within "article.module header h3" do
|
|
14
|
+
page.should have_content("Sign in")
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "Admin User logs in" do
|
|
20
|
+
|
|
21
|
+
let(:password) { "admin123"}
|
|
22
|
+
let(:admin_user) { FactoryGirl.create(:admin, password: password) }
|
|
23
|
+
|
|
24
|
+
it "should succeed for the correct username and password" do
|
|
25
|
+
visit new_admin_session_path
|
|
26
|
+
within(".mini_form_box") do
|
|
27
|
+
fill_in 'Email', with: admin_user.email
|
|
28
|
+
fill_in 'Password', with: password
|
|
29
|
+
click_button "Sign in"
|
|
30
|
+
end
|
|
31
|
+
find('.breadcrumbs_container .breadcrumbs .current').should have_content('Dashboard')
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should fail for an incorrect username" do
|
|
35
|
+
visit new_admin_session_path
|
|
36
|
+
within(".mini_form_box") do
|
|
37
|
+
fill_in 'Email', with: 'unknown@appyantra.com'
|
|
38
|
+
fill_in 'Password', with: password
|
|
39
|
+
click_button "Sign in"
|
|
40
|
+
end
|
|
41
|
+
find('.landing_alert h4').should have_content('Invalid email or password.')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should fail for an incorrect password" do
|
|
45
|
+
visit new_admin_session_path
|
|
46
|
+
within(".mini_form_box") do
|
|
47
|
+
fill_in 'Email', with: admin_user.email
|
|
48
|
+
fill_in 'Password', with: password + 'x'
|
|
49
|
+
click_button "Sign in"
|
|
50
|
+
end
|
|
51
|
+
find('.landing_alert h4').should have_content('Invalid email or password.')
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Admin lands on the Dashboard" do
|
|
4
|
+
|
|
5
|
+
login_admin
|
|
6
|
+
|
|
7
|
+
describe "when admin is logged in" do
|
|
8
|
+
|
|
9
|
+
let!(:user) { FactoryGirl.create(:user) }
|
|
10
|
+
let!(:previous_title) {'previous_title'}
|
|
11
|
+
let!(:page1) { FactoryGirl.create(:page, title: 'test_page1', slug: 'test_page1') }
|
|
12
|
+
let!(:page2) { FactoryGirl.create(:page, title: previous_title, slug: 'test_page2') }
|
|
13
|
+
let!(:updated_title) {'updated_title'}
|
|
14
|
+
|
|
15
|
+
it "activity feed is displayed" do
|
|
16
|
+
visit edit_appyantra_admin_page_path(page2)
|
|
17
|
+
|
|
18
|
+
within ".page_edit" do
|
|
19
|
+
fill_in 'Title', with: updated_title
|
|
20
|
+
click_button "Update"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
visit appyantra_admin_home_path
|
|
24
|
+
|
|
25
|
+
within ".activity_feeds .module_content" do
|
|
26
|
+
page.should have_content("User #{user.display_name} was created")
|
|
27
|
+
page.should have_content("#{page1.created_by.display_name} created Page #{page1.title}")
|
|
28
|
+
page.should have_content("#{page1.created_by.display_name} created Page #{previous_title}")
|
|
29
|
+
page.should have_content("Admin User updated Page #{updated_title}")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Admin user manages mailer settings" do
|
|
4
|
+
|
|
5
|
+
after :all do
|
|
6
|
+
ActionMailer::Base.delivery_method = :test
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "when an admin is logged in" do
|
|
10
|
+
|
|
11
|
+
login_admin
|
|
12
|
+
|
|
13
|
+
describe "admin creates mail settings" do
|
|
14
|
+
|
|
15
|
+
# mail settings
|
|
16
|
+
let(:default_url_host) {'localhost:3000'}
|
|
17
|
+
let(:delivery_method) {'smtp'}
|
|
18
|
+
let(:address) {'smtp.gmail.com'}
|
|
19
|
+
let(:port) {'587'}
|
|
20
|
+
let(:domain) {'localhost'}
|
|
21
|
+
let(:user_name) {'speedy'}
|
|
22
|
+
let(:password) {'speedy123'}
|
|
23
|
+
let(:authentication) {'plain'}
|
|
24
|
+
let(:enable_starttls_auto) {'true'}
|
|
25
|
+
|
|
26
|
+
it "is displayed on the settings page" do
|
|
27
|
+
visit settings_path
|
|
28
|
+
within "div#mail_settings" do
|
|
29
|
+
click_link 'Create Mail Settings'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
within ".module" do
|
|
33
|
+
fill_in 'Default url host', with: default_url_host
|
|
34
|
+
fill_in 'Delivery method', with: delivery_method
|
|
35
|
+
fill_in 'Address', with: address
|
|
36
|
+
fill_in 'Port', with: port
|
|
37
|
+
fill_in 'Domain', with: domain
|
|
38
|
+
fill_in 'User name', with: user_name
|
|
39
|
+
fill_in 'Password', with: password
|
|
40
|
+
fill_in 'Authentication', with: authentication
|
|
41
|
+
fill_in 'Enable starttls auto', with: enable_starttls_auto
|
|
42
|
+
click_button "Update"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
within "div#mail_settings" do
|
|
46
|
+
page.should have_content(default_url_host)
|
|
47
|
+
page.should have_content(delivery_method)
|
|
48
|
+
page.should have_content(address)
|
|
49
|
+
page.should have_content(port)
|
|
50
|
+
page.should have_content(domain)
|
|
51
|
+
page.should have_content(user_name)
|
|
52
|
+
page.should have_content(password)
|
|
53
|
+
page.should have_content(authentication)
|
|
54
|
+
page.should have_content(enable_starttls_auto)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
ActionMailer::Base.default_url_options[:host].should == default_url_host
|
|
58
|
+
ActionMailer::Base.delivery_method.should == delivery_method.to_sym
|
|
59
|
+
smtp_settings = ActionMailer::Base.smtp_settings
|
|
60
|
+
smtp_settings[:address].should == address
|
|
61
|
+
smtp_settings[:port].should == port.to_i
|
|
62
|
+
smtp_settings[:domain].should == domain
|
|
63
|
+
smtp_settings[:user_name].should == user_name
|
|
64
|
+
smtp_settings[:password].should == password
|
|
65
|
+
smtp_settings[:authentication].should == authentication
|
|
66
|
+
smtp_settings[:enable_starttls_auto].should == (enable_starttls_auto == "true")
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
describe "Admin manages website pages" do
|
|
5
|
+
|
|
6
|
+
before :all do
|
|
7
|
+
# clears the cached pages if generated during dev runs
|
|
8
|
+
FileUtils.rm_rf Rails.root.join("public/pages")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "when no pages are present" do
|
|
12
|
+
|
|
13
|
+
login_admin
|
|
14
|
+
|
|
15
|
+
it "should show no pages present message" do
|
|
16
|
+
|
|
17
|
+
within "li.icn_pages" do
|
|
18
|
+
click_link 'Manage Website Pages'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
within "div.tab_content" do
|
|
22
|
+
page.should have_content('No pages found.')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "when pages are created" do
|
|
29
|
+
|
|
30
|
+
let!(:page1) { FactoryGirl.create(:page) }
|
|
31
|
+
let!(:page2) { FactoryGirl.create(:page) }
|
|
32
|
+
let!(:page3) { FactoryGirl.create(:page) }
|
|
33
|
+
|
|
34
|
+
login_admin
|
|
35
|
+
|
|
36
|
+
it "should show a list of pages" do
|
|
37
|
+
|
|
38
|
+
visit appyantra_admin_pages_path
|
|
39
|
+
|
|
40
|
+
within "article.module header h3" do
|
|
41
|
+
page.should have_content("Website Pages")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
within "div.tab_content" do
|
|
45
|
+
page.should have_content(page1.title)
|
|
46
|
+
page.should have_content(page2.title)
|
|
47
|
+
page.should have_content(page3.title)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe "when an admin is logged in" do
|
|
53
|
+
|
|
54
|
+
login_admin
|
|
55
|
+
|
|
56
|
+
describe "when admin creates and publishes a page" do
|
|
57
|
+
|
|
58
|
+
let!(:title) { 'About' }
|
|
59
|
+
let!(:category) { 'static' }
|
|
60
|
+
let!(:content) { 'This is an About page' }
|
|
61
|
+
let!(:description) { 'This is the About page description' }
|
|
62
|
+
let!(:layout) { "application" }
|
|
63
|
+
|
|
64
|
+
it "is created and can be accessed" do
|
|
65
|
+
visit appyantra_admin_pages_path
|
|
66
|
+
within "div.new_button_frame" do
|
|
67
|
+
click_button 'Create New'
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
within ".page_new" do
|
|
71
|
+
fill_in 'Title', with: title
|
|
72
|
+
choose 'Yes'
|
|
73
|
+
fill_in 'page_category_input', with: category
|
|
74
|
+
fill_in 'Content', with: content
|
|
75
|
+
select layout, from: 'Layout'
|
|
76
|
+
fill_in 'Description', with: description
|
|
77
|
+
click_button "Create"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
within "section#main.column" do
|
|
81
|
+
page.should have_content("Website Page was successfully created")
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
slug = title.parameterize # assuming that title is unique
|
|
85
|
+
saved_page = Page.find_by_slug(slug)
|
|
86
|
+
saved_page.should be
|
|
87
|
+
|
|
88
|
+
visit display_page_path(saved_page.slug)
|
|
89
|
+
page.should have_content(content)
|
|
90
|
+
page.should have_xpath("//head/meta[@name='description'][@content='" + description + "']")
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
describe "when admin updates and publishes a page" do
|
|
95
|
+
|
|
96
|
+
let!(:title) { 'About' }
|
|
97
|
+
let!(:category) { 'static' }
|
|
98
|
+
let!(:content) { 'This is an About page' }
|
|
99
|
+
let!(:page4) { FactoryGirl.create(:page) }
|
|
100
|
+
|
|
101
|
+
it "is updated and can be accessed" do
|
|
102
|
+
visit edit_appyantra_admin_page_path(page4)
|
|
103
|
+
|
|
104
|
+
within ".page_edit" do
|
|
105
|
+
fill_in 'Title', with: title
|
|
106
|
+
choose 'Yes'
|
|
107
|
+
fill_in 'page_category_input', with: category
|
|
108
|
+
fill_in 'Content', with: content
|
|
109
|
+
click_button "Update"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
within "section#main.column" do
|
|
113
|
+
page.should have_content("Website Page was successfully updated")
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
slug = title.parameterize # assuming that title is unique
|
|
117
|
+
saved_page = Page.find_by_slug(slug)
|
|
118
|
+
saved_page.should be
|
|
119
|
+
visit display_page_path(saved_page.slug)
|
|
120
|
+
|
|
121
|
+
page.should have_content(content)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
describe "when admin creates an unpublished page" do
|
|
126
|
+
let!(:title) { 'About' }
|
|
127
|
+
let!(:category) { 'static' }
|
|
128
|
+
let!(:content) { 'This is an About page' }
|
|
129
|
+
|
|
130
|
+
it "is created and cannot be accessed" do
|
|
131
|
+
visit appyantra_admin_pages_path
|
|
132
|
+
within "div.new_button_frame" do
|
|
133
|
+
click_button 'Create New'
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
within ".page_new" do
|
|
137
|
+
fill_in 'Title', with: title
|
|
138
|
+
choose 'No'
|
|
139
|
+
fill_in 'page_category_input', with: category
|
|
140
|
+
fill_in 'Content', with: content
|
|
141
|
+
click_button "Create"
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
within "section#main.column" do
|
|
145
|
+
page.should have_content("Website Page was successfully created")
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
slug = title.parameterize # assuming that title is unique
|
|
149
|
+
saved_page = Page.find_by_slug(slug)
|
|
150
|
+
saved_page.should be
|
|
151
|
+
visit display_page_path(saved_page.slug)
|
|
152
|
+
|
|
153
|
+
page.should_not have_content(content)
|
|
154
|
+
page.should have_content('Page not found')
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
describe "when admin publishes a page" do
|
|
159
|
+
|
|
160
|
+
let!(:title) { 'Contact' }
|
|
161
|
+
let!(:page5) { FactoryGirl.create(:page, title: title, published: false, slug: title.parameterize) }
|
|
162
|
+
|
|
163
|
+
it "it can be accessed" do
|
|
164
|
+
visit edit_appyantra_admin_page_path(page5)
|
|
165
|
+
|
|
166
|
+
within ".page_edit" do
|
|
167
|
+
choose 'Yes'
|
|
168
|
+
click_button "Update"
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
within "section#main.column" do
|
|
172
|
+
page.should have_content("Website Page was successfully updated")
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
visit display_page_path(page5.slug)
|
|
176
|
+
|
|
177
|
+
page.should have_content(page5.content)
|
|
178
|
+
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
describe "when admin add keywords to a page" do
|
|
183
|
+
|
|
184
|
+
let!(:page6) { FactoryGirl.create(:page, slug: 'test_slug') }
|
|
185
|
+
let!(:keywords) { 'keyword1, keyword2' }
|
|
186
|
+
|
|
187
|
+
it "it generates a meta tag for keywords" do
|
|
188
|
+
visit edit_appyantra_admin_page_path(page6)
|
|
189
|
+
|
|
190
|
+
within ".page_keywords" do
|
|
191
|
+
fill_in 'keywords', with: keywords
|
|
192
|
+
click_button "Update"
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
within "section#main.column" do
|
|
196
|
+
page.should have_content("Page keywords were successfully updated")
|
|
197
|
+
page.should have_content(keywords)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
visit display_page_path(page6.slug)
|
|
201
|
+
|
|
202
|
+
page.should have_xpath("//head/meta[@name='keywords'][@content='" + keywords + "']")
|
|
203
|
+
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'support/matchers/user_matcher'
|
|
3
|
+
|
|
4
|
+
describe "Admin manages website users" do
|
|
5
|
+
|
|
6
|
+
context "when no users are present" do
|
|
7
|
+
|
|
8
|
+
login_admin
|
|
9
|
+
|
|
10
|
+
it "should show no users present message" do
|
|
11
|
+
|
|
12
|
+
within "li.icn_view_users" do
|
|
13
|
+
click_link 'Manage Website Users'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
within "div.tab_content" do
|
|
17
|
+
page.should have_content('No users found.')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "when users are created" do
|
|
24
|
+
|
|
25
|
+
let!(:user1) { FactoryGirl.create(:user) }
|
|
26
|
+
let!(:user2) { FactoryGirl.create(:user) }
|
|
27
|
+
let!(:user3) { FactoryGirl.create(:user) }
|
|
28
|
+
|
|
29
|
+
login_admin
|
|
30
|
+
|
|
31
|
+
it "should show a list of users" do
|
|
32
|
+
|
|
33
|
+
visit appyantra_admin_users_path
|
|
34
|
+
|
|
35
|
+
within "article.module header h3" do
|
|
36
|
+
page.should have_content("Website Users")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
within "div.tab_content" do
|
|
40
|
+
page.should have_content(user1.first_name)
|
|
41
|
+
page.should have_content(user1.last_name)
|
|
42
|
+
page.should have_content(user2.first_name)
|
|
43
|
+
page.should have_content(user2.last_name)
|
|
44
|
+
page.should have_content(user3.first_name)
|
|
45
|
+
page.should have_content(user3.last_name)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "when an admin is logged in" do
|
|
51
|
+
|
|
52
|
+
login_admin
|
|
53
|
+
|
|
54
|
+
let(:user1) { FactoryGirl.build(:user) }
|
|
55
|
+
|
|
56
|
+
it "he can create a user" do
|
|
57
|
+
visit appyantra_admin_users_path
|
|
58
|
+
within "div.new_button_frame" do
|
|
59
|
+
click_button 'Create New'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
within ".mini_form_box" do
|
|
63
|
+
fill_in 'First name', with: user1.first_name
|
|
64
|
+
fill_in 'Last name', with: user1.last_name
|
|
65
|
+
fill_in 'Email', with: user1.email
|
|
66
|
+
click_button "Create"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
within "section#main.column" do
|
|
70
|
+
page.should have_content("User Profile was successfully created")
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
"created user".should be_displayed_on_show_page(user1)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
let!(:user2) { FactoryGirl.create(:user) }
|
|
77
|
+
let!(:updated_user) { FactoryGirl.build(:user, first_name: 'Trey', last_name: 'Parker', email: 'trey@appyantra.com') }
|
|
78
|
+
|
|
79
|
+
it "he can edit a user" do
|
|
80
|
+
visit edit_appyantra_admin_user_path(user2)
|
|
81
|
+
|
|
82
|
+
within ".mini_form_box" do
|
|
83
|
+
fill_in 'First name', with: updated_user.first_name
|
|
84
|
+
fill_in 'Last name', with: updated_user.last_name
|
|
85
|
+
fill_in 'Email', with: updated_user.email
|
|
86
|
+
click_button "Update"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
within "section#main.column" do
|
|
90
|
+
page.should have_content("User Profile was successfully updated")
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
"updated user".should be_displayed_on_show_page(updated_user)
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|