foodsoft/spec/integration/login_spec.rb

47 lines
1.3 KiB
Ruby

require_relative '../spec_helper'
feature LoginController do
let(:user) { create :user }
describe 'forgot password' do
before { visit forgot_password_path }
it 'is accessible' do
expect(page).to have_selector 'input[id=user_email]'
end
it 'sends a reset email' do
fill_in 'user_email', with: user.email
find('input[type=submit]').click
expect(page).to have_selector '.alert-success'
email = ActionMailer::Base.deliveries.first
expect(email.to).to eq [user.email]
end
end
describe 'and reset it' do
let(:token) { user.reset_password_token }
let(:newpass) { user.new_random_password }
before { user.request_password_reset! }
before { visit new_password_path(id: user.id, token: token) }
it 'is accessible' do
expect(page).to have_selector 'input[type=password]'
end
describe 'with wrong token' do
let(:token) { 'foobar' }
it 'is not accessible' do
expect(page).to have_selector '.alert-error'
expect(page).to_not have_selector 'input[type=password]'
end
end
it 'changes the password' do
fill_in 'user_password', with: newpass
fill_in 'user_password_confirmation', with: newpass
find('input[type=submit]').click
expect(User.authenticate(user.email, newpass)).to eq user
end
end
end