Я пишу пример приложения, использующего Devise + OmniAuth для входа в систему и щебетание для получения имени пользователя. Я хотел бы добавить несколько интеграционных тестов, но я не знаю, что делать с жемчужиной Twitter.
Вот моя пользовательская модель (в которой находится большая часть логики):
def build_authentication(omniauth)
# If the provider is twitter, get additional information
# to build a user profile.
if omniauth['provider'] == 'twitter'
self.build_twitter(omniauth)
end
# now put the authentication in the database
authentications.build(:provider => omniauth['provider'],
:uid => omniauth['uid'],
:token => omniauth['credentials']['token'],
:secret => omniauth['credentials']['secret'])
end
def build_twitter(omniauth)
Twitter.configure do |config|
config.consumer_key = TWITTER_KEY
config.consumer_secret = TWITTER_SECRET
config.oauth_token = omniauth['credentials']['token']
config.oauth_token_secret = omniauth['credentials']['secret']
end
client = Twitter::Client.new
self.name = client.current_user.name
end
Я добавил следующее в мой spec_helper.rb, чтобы пройти часть входа в интеграционный тест:
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:twitter] = {
'provider' => 'twitter',
'uid' => '12345',
'credentials' => {
'token' => '12345',
'secret' => '54321'
}
}
Но я не могу понять, как проверить метод build_twitter
, который использует драгоценный камень twitter. Любая помощь будет принята с благодарностью.
Спасибо!