在Pact验证阶段,我需要模拟用户身份验证。最好的方法是什么? 我正在使用Rails 4和Devise。
我发现了一个看起来非常糟糕的解决方案,但它看起来很丑陋,我希望还有另一种方法可以做到。
我正在替换Pact套件内的warden
,并根据需要为Pact.service_provider "Some Service Provider" do
app { ProxyApp.new(Rails.application) }
...
class ProxyApp
...
def call(env)
# Mock user authentication
env['warden'] ||= begin
manager = Warden::Manager.new(nil) do |config|
config.merge! Devise.warden_config
end
Warden::Proxy.new(env, manager)
end
user_id = EnvMock.get_user_id # user ID is being set inside the provider state
env['warden'].set_user(Account.find(user_id), scope: :account) if user_id
...
end
end
手动设置用户。用户ID正在提供者状态内设置。它看起来像这样:
{{1}}
我真的希望有一些完全不同的视角,可以更美妙的方式完成这项任务。