Using OmniAuth 0.2.0's mocks, this can even get a little simpler:
require 'spec_helper'
describe OmniauthCallbacksController do
include Devise::TestHelpers
before do
request.env["devise.mapping"] = Devise.mappings[:user]
request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:twitter]
end
it 'should authenticate and identify user if user is known' do
get :twitter
response.should be_redirect
end
end
and in spec_helper.rb, you set:
OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(:twitter, {
:user_info => {:name => "Joe Smith", :nickname => 'joesmith'}, :uid
=> '123456790'
})