2013-03-28 4 views
5

OmniAuth (omniauth_crowd के साथ) का उपयोग करके, मैं चाहता हूं कि उपयोगकर्ता लॉगिन पृष्ठ पर रीडायरेक्ट किया जाए यदि वह सही उपयोगकर्ता नाम और पासवर्ड सबमिट नहीं करता है। यह उत्पादन में ठीक काम करता है, लेकिन मुझे इसका परीक्षण करने में परेशानी की समस्या है।Capybara :: InfiniteRedirectError

OmniAuth प्रदाता नकली करने के लिए, के रूप में OmniAuth प्लगइन के लेखक द्वारा की सिफारिश की मैं निम्नलिखित कोड का उपयोग,:

OmniAuth.config.test_mode = true 
OmniAuth.config.mock_auth[:someProvider] = :invalid_credentials 
visit_page @page 

कोड ऊपर स्वचालित रूप से (अर्थात उपयोगकर्ता नाम और पासवर्ड डाले बिना) session#failure को Capybara पुनर्निर्देश। मेरा session#failurelogin_path पर रीडायरेक्ट करता है।

इस प्रकार मैं एक पाश में अंत:

redirected more than 5 times, check for infinite redirects. (Capybara::InfiniteRedirectError) 

मेरे मामले के लिए सबसे अच्छा समाधान का क्या है?

उत्तर

1

मेरे पास Omniauth के साथ एक समान समस्या थी।
सुनिश्चित नहीं है कि कोई कामकाज है, क्योंकि यह OmniAuth.config.mock_auth काम करता है।

मेरा समाधान OmniAuth मॉकिंग के बजाय fakeweb का उपयोग करना था।
आपको शायद यह देखना चाहिए कि omniauth_crowd का परीक्षण कैसे किया जाता है।
यहां एक अच्छा उदाहरण है: https://github.com/robdimarco/omniauth_crowd/blob/master/spec/omniauth/strategies/crowd_spec.rb#L49-69