gpt4 book ai didi

ruby-on-rails - 使用不同的提供商为 Devise OAuth 创建功能规范

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:02 25 4
gpt4 key购买 nike

我正在编写一个测试覆盖率为 100% 的 Rails 应用程序。我有 Capybara 使用用户名和密码登录的功能规范,但我没有通过 Facebook 或 LinkedIn 登录的规范。

我没有在设计 OmniAuth 页面上找到答案。这是可测试的吗?我不应该测试这个吗?

最佳答案

我会看一下 https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview

所以我最终在我的 support/omniauth.rb 文件中创建了 2 个助手:

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

快乐黑客

关于ruby-on-rails - 使用不同的提供商为 Devise OAuth 创建功能规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31908790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com