Skip to content

Instantly share code, notes, and snippets.

@Panczo
Forked from kinopyo/omniauth_macros.rb
Last active August 29, 2015 14:10
Show Gist options
  • Save Panczo/9a91ce8623c15b8b3c03 to your computer and use it in GitHub Desktop.
Save Panczo/9a91ce8623c15b8b3c03 to your computer and use it in GitHub Desktop.
# in spec/support/omniauth_macros.rb
module OmniauthMacros
def mock_auth_hash
# The mock_auth configuration allows you to set per-provider (or default)
# authentication hashes to return during integration testing.
OmniAuth.config.mock_auth[:twitter] = {
'provider' => 'twitter',
'uid' => '123545',
'user_info' => {
'name' => 'mockuser',
'image' => 'mock_user_thumbnail_url'
},
'credentials' => {
'token' => 'mock_token',
'secret' => 'mock_secret'
}
}
end
end
# in spec/requests/spec_helper.rb
RSpec.configure do |config|
# ...
# include our macro
config.include(OmniauthMacros)
end
OmniAuth.config.test_mode = true
# in spec/requests/top_spec.rb
describe "access top page" do
it "can sign in user with Twitter account" do
visit '/'
page.should have_content("Sign in with Twitter")
mock_auth_hash
click_link "Sign in"
page.should have_content("mockuser") # user name
page.should have_css('img', :src => 'mock_user_thumbnail_url') # user image
page.should have_content("Sign out")
end
it "can handle authentication error" do
OmniAuth.config.mock_auth[:twitter] = :invalid_credentials
visit '/'
page.should have_content("Sign in with Twitter")
click_link "Sign in"
page.should have_content('Authentication failed.')
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment