2008-12-19 10 views
6

का उपयोग करते समय मैं आरएसपीसी उपयोगकर्ता कहानी/ककड़ी में नकली ओपनआईडी लॉगिन कैसे कर सकता हूं, मैं एक ककड़ी परिदृश्य लिखने की कोशिश कर रहा हूं जिसके लिए मुझे उपयोगकर्ता में लॉग इन करने की आवश्यकता है - जो आमतौर पर काफी सरल होगा लेकिन मैं केवल उपयोग कर रहा हूं ओपनआईडी प्रमाणीकरण (प्रमाणीकरण प्लगइन का curtosy)। हालांकि open_id_authentication प्लगइन के माध्यम से खोदने के बाद मुझे यकीन नहीं है कि मैं इसे ककड़ी के भीतर कैसे प्राप्त कर सकता हूं।open_id_authentication प्लगइन

उत्तर

4

मैं एक तरीका खोज निकाला है, अगर आप अपने सुविधाओं/support/env.rb में रखें:

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 
:

ActionController::Base.class_eval do 
    private 

    def begin_open_id_authentication(identity_url, options = {}) 
    yield OpenIdAuthentication::Result.new(:successful), identity_url, nil 
    end 
end 

तो फिर तुम सिर्फ अपने उचित कदम में कुछ इस तरह कर सकते हैं

मैं पूरी तरह से ककड़ी की विशेषताओं के लिए खुली आईडी ऑथ को क्लोब कर रहा हूं, जाहिर है कि अगर मुझे लॉग इन विफल होने पर ऐसे उदाहरणों की आवश्यकता है जो मैं आपूर्ति की गई पहचान_उआरएल के आधार पर कर सकता हूं।

0

DEfusion के जवाब सिवाय इसके कि मैं की तरह identity_url को सामान्य करने के लिए आवश्यक काम करता है:

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 

धन्यवाद

2

Bort, एक रेल कंकाल अनुप्रयोग, rspec परीक्षण का एक पूरा सेट है और इसलिए आप कर सकते हैं OpenID लॉगिन का समर्थन करता है एक नज़र रखना चाहते हैं और देखें कि वे क्या करते हैं।

2

आप प्रतिक्रियाओं बाहर ठूंठ करने में सक्षम होना चाहते हैं, तो ऐसा करते हैं:

सुविधाओं/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 

अब एक अलग विधि आप कर सकते हैं ठूंठ के लिए बाहर प्रतिक्रिया जाकर यदि आवश्यक हो तो आपके चरणों में प्रतिक्रिया। उदाहरण के लिए, यदि मैं चाहता था: गायब प्रतिक्रिया और मेरे पास नियंत्रक GoogleLoginController था, तो मैं निम्नलिखित का उपयोग कर सकता था:

GoogleLoginController.any_instance.stubs(:fake_openid_response) 
    .returns([OpenIdAuthentication::Result.new(:missing), identity_url, nil]) 
संबंधित मुद्दे