Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'spec_helper'
- # this file is located in scec/requests/authentication_pages_spec.rb
- describe "Authentication" do
- subject { page }
- describe "signin page" do
- before { visit signin_path }
- it { should have_selector('h1', text: 'Sign in') }
- it { should have_selector('title', text: 'Sign in') }
- describe "before signing in" do
- it { should_not have_selector('a', text: 'Profile') }
- it { should_not have_selector('a', text: 'Settings') }
- end
- end
- describe "signin" do
- before { visit signin_path }
- describe "with invalid information" do
- before { click_button "Sign in" }
- it { should have_selector('title', text: 'Sign in') }
- it { should have_selector('div.alert.alert-error', text: "Invalid") }
- describe "after visiting another page" do
- before { click_link "Home" }
- it { should_not have_selector('div.alert.alert-error') }
- end
- end
- describe "with valid information" do
- let(:user) { FactoryGirl.create(:user) }
- before { sign_in user }
- it { should have_selector('title', text: user.name) }
- it { should have_link('Users', href: users_path) }
- it { should have_link('Profile', href: user_path(user)) }
- it { should have_link('Settings', href: edit_user_path(user)) }
- it { should have_link('Sign out', href: signout_path) }
- it { should_not have_link('Sign in', href: signin_path) }
- describe "followed by signout" do
- before { click_link "Sign out" }
- it { should have_link('Sign in') }
- end
- end
- end
- describe "authorization" do
- describe "in the Users controller" do
- let(:user) { FactoryGirl.create(:user) }
- describe "visiting the edit page" do
- before { visit edit_user_path(user) }
- it { should have_selector('title', text: 'Sign in') }
- end
- describe "submitting to the update action" do
- before { put user_path(user) }
- specify { response.should redirect_to(signin_path) }
- end
- describe "visiting the user index" do
- before { visit users_path }
- it { should have_selector('title', text: 'Sign in') }
- end
- describe "after sign in" do
- before { sign_in user }
- let(:message) { "Good news! You're are already signed in." }
- describe "submitting to the the new/signup action" do
- before { put signup_path }
- it { response.should redirect_to(root_path) }
- after { flash[:notice].should == message }
- end
- describe "submitting to the the create action" do
- before { post users_path(user) }
- specify { response.should redirect_to(root_path) }
- after { flash[:notice].should == message }
- end
- end
- end
- describe "as wrong user" do
- let(:user) { FactoryGirl.create(:user) }
- let(:wrong_user) { FactoryGirl.create(:user, email: "wrong@example.com") }
- before { sign_in user }
- describe "visiting Users#edit page" do
- before { visit edit_user_path(wrong_user) }
- it { should_not have_selector('title', text: full_title('Edit user')) }
- end
- describe "submitting a PUT request to the Users#update action" do
- before { put user_path(wrong_user) }
- specify { response.should redirect_to(root_path) }
- end
- end
- describe "for non-signed-in users" do
- let(:user) {FactoryGirl.create(:user) }
- describe "when attempting to visit a protected page" do
- before do
- visit edit_user_path(user)
- fill_in "Email", with: user.email
- fill_in "Password", with: user.password
- click_button "Sign in"
- end
- describe "after signing in" do
- it "should render the desired protected page" do
- page.should have_selector('title', text: 'Edit user')
- end
- describe "when signing in again" do
- before do
- delete signout_path
- visit signin_path
- fill_in "Email", with: user.email
- fill_in "Password", with: user.password
- click_button "Sign in"
- end
- it "should render the default (profile) page" do
- page.should have_selector('title', text: user.name)
- end
- end
- end
- end
- end
- describe "as non-admin user" do
- let(:user) { FactoryGirl.create(:user) }
- let(:non_admin) { FactoryGirl.create(:user) }
- before { sign_in non_admin }
- describe "submitting a DELETE request to the Users#destroy action" do
- before { delete user_path(user) }
- specify { response.should redirect_to(root_path) }
- end
- end
- end
- end
Add Comment
Please, Sign In to add comment