jam-cloud/web/spec/features/twitter_auth_spec.rb

73 lines
1.9 KiB
Ruby

require 'spec_helper'
describe "Welcome", :js => true, :type => :feature, :capybara_feature => true do
subject { page }
before(:all) do
Capybara.javascript_driver = :poltergeist
Capybara.current_driver = Capybara.javascript_driver
Capybara.default_max_wait_time = 10
end
let(:user) { FactoryGirl.create(:user, email: 'twitter_user1@jamkazam.com') }
let(:user2) { FactoryGirl.create(:user, email: 'twitter_user2@jamkazam.com') }
let(:twitter_auth) {
{ :provider => "twitter",
:uid => "1234",
:credentials => {:token => "twitter_token", :secret => 'twitter_secret'} }
}
before(:each) do
OmniAuth.config.mock_auth[:twitter] = OmniAuth::AuthHash.new(twitter_auth)
User.where(email: 'twitter_user1@jamkazam.com').delete_all
User.where(email: 'twitter_user2@jamkazam.com').delete_all
emulate_client
sign_in_poltergeist user
visit "/"
should_be_at_root
end
it "redirects back when done, and updates user_auth" do
visit '/auth/twitter'
should_be_at_root
sleep 1
user.reload
auth = user.user_authorization('twitter')
auth.should_not be_nil
auth.uid.should == '1234'
auth.token.should == 'twitter_token'
auth.secret.should == 'twitter_secret'
visit '/auth/twitter'
should_be_at_root
user.reload
auth = user.user_authorization('twitter')
auth.uid.should == '1234'
auth.token.should == 'twitter_token'
auth.secret.should == 'twitter_secret'
end
it "shows error when two users try to auth same twitter account" do
visit '/auth/twitter'
should_be_at_root
sleep 1
user.reload
auth = user.user_authorization('twitter')
auth.uid.should == '1234'
sign_out
sign_in_poltergeist user2
visit '/'
should_be_at_root
visit '/auth/twitter'
find('li', text: 'This twitter account is already associated with someone else')
end
end