ログインユーザーが必要なCucumberシナリオを作成しようとしています-通常は非常に簡単ですが、OpenID認証のみを使用しています(認証プラグインの礼儀)。しかし、open_id_authentication プラグインの内臓を掘り下げた後、Cucumber 内でこれをどのように達成できるかわかりません。
DEfusion
質問する
2974 次
4 に答える
4
これをfeatures/support/env.rbに配置すると、方法がわかりました:
ActionController::Base.class_eval do
private
def begin_open_id_authentication(identity_url, options = {})
yield OpenIdAuthentication::Result.new(:successful), identity_url, nil
end
end
次に、適切なステップで次のようなことを行うことができます。
Given /^I am logged in as "(.*)"$/ do |name|
user = User.find_by_name(user)
post '/session', :openid_url => user.identity_url
# Some assertions just to make sure our hack in env.rb is still working
response.should redirect_to('/')
flash[:notice].should eql('Logged in successfully')
end
キュウリ機能のオープンID認証を完全に壊しているだけです.ログインに失敗したインスタンスが必要な場合は、提供されたidentity_urlに基づいてそれを行うことができます.
于 2008-12-19T23:48:11.140 に答える
2
Rails スケルトン アプリであるBortには、rspec テストの完全なセットがあり、openID ログインをサポートしているため、それらが何をするかを見てみたいと思うかもしれません。
于 2009-01-03T14:36:48.033 に答える
2
応答をスタブ化できるようにしたい場合は、次のようにします。
features/support/helpers.rb:
ActionController::Base.class_eval do
private
def fake_openid_response(identity_url)
[OpenIdAuthentication::Result.new(:successful), identity_url, nil]
end
def begin_open_id_authentication(identity_url, options = {})
yield fake_openid_response(identity_url)
end
end
応答を別のメソッドに移動することで、必要に応じてステップで応答をスタブできるようになりました。たとえば、:missing 応答が必要で、コントローラ GoogleLoginController がある場合、Mocha を使用して次のことができます。
GoogleLoginController.any_instance.stubs(:fake_openid_response)
.returns([OpenIdAuthentication::Result.new(:missing), identity_url, nil])
于 2010-07-09T20:52:08.587 に答える
0
次のようにidentity_urlを正規化する必要があることを除いて、DEfusionの答えは機能します。
ActionController::Base.class_eval do
private
def begin_open_id_authentication(identity_url, options = {})
yield OpenIdAuthentication::Result.new(:successful), self.normalize_identifier(identity_url), nil
end
end
ありがとう
于 2009-01-03T13:30:26.530 に答える