Ruby on rails 使用不同的提供者为Desive OAuth创建功能规格
我正在编写一个测试覆盖率为100%的Rails应用程序。我有使用用户名和密码登录的水豚功能规范,但没有通过Facebook或LinkedIn登录的规范 我在Desive OmniAuth页面上没有找到答案。这是可测试的吗?我应该不测试这个吗?我会看看 因此,我最终在我的support/omniauth.rb文件中创建了两个助手:Ruby on rails 使用不同的提供者为Desive OAuth创建功能规格,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我正在编写一个测试覆盖率为100%的Rails应用程序。我有使用用户名和密码登录的水豚功能规范,但没有通过Facebook或LinkedIn登录的规范 我在Desive OmniAuth页面上没有找到答案。这是可测试的吗?我应该不测试这个吗?我会看看 因此,我最终在我的support/omniauth.rb文件中创建了两个助手: def set_omniauth(opts = {}) default = {:provider => :facebook, :uu
def set_omniauth(opts = {})
default = {:provider => :facebook,
:uuid => "1234",
:facebook => {
:email => "foobar@example.com",
:gender => "Male",
:first_name => "foo",
:last_name => "bar"
}
}
credentials = default.merge(opts)
provider = credentials[:provider]
user_hash = credentials[provider]
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[provider] = {
'uid' => credentials[:uuid],
"extra" => {
"user_hash" => {
"email" => user_hash[:email],
"first_name" => user_hash[:first_name],
"last_name" => user_hash[:last_name],
"gender" => user_hash[:gender]
}
}
}
end
def set_invalid_omniauth(opts = {})
credentials = { :provider => :facebook,
:invalid => :invalid_crendentials
}.merge(opts)
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[credentials[:provider]] = credentials[:invalid]
end
有了这个甜美的设置,我现在可以在测试中使用多个默认值,这使得更改非常清晰:
background do
set_omniauth()
click_link_or_button 'Sign up with Facebook'
end
快乐黑客读这篇