8

साथ कार्यात्मक परीक्षण मैं एप्लिकेशन आज मेरी रेल के लिए कार्यात्मक परीक्षण लिखना शुरू किया। मैं रीस्टफुल प्रमाणीकरण प्लगइन का उपयोग करता हूं। मैं कुछ भ्रमित चीजों में भाग गया, मुझे उम्मीद है कि कोई मेरे लिए स्पष्टीकरण दे सकता है।रूबी ऑन रेल्स RESTful प्रमाणीकरण प्लगइन

1) मैं एक त्वरित लॉगिन समारोह लिखा था क्योंकि मेरे रेल अनुप्रयोग में कार्यों का सबसे प्रमाणीकरण की आवश्यकता।

def login_as(user) 
    @request.session[:user_id] = user ? user.id : nil 
end 

समस्या जो मैं इस समारोह के साथ देखता हूं, क्या यह मूल रूप से प्रमाणीकरण को नकल करता है। क्या मुझे इस बारे में चिंतित होना चाहिए? हो सकता है कि जब तक मैं सही प्रमाणीकरण विधि का परीक्षण करता हूं तब तक इस मार्ग पर जाना ठीक है। या शायद यह भयानक अभ्यास है।

2) दूसरी भ्रमित बात यह है कि मेरे कार्यात्मक परीक्षणों में कुछ स्थानों पर, मुझे पूर्ण प्रमाणीकरण प्रक्रिया होने की आवश्यकता है। जब कोई उपयोगकर्ता सक्रिय होता है, मैं do_activate विधि उपयोगकर्ता के लिए कुछ प्रारंभिक वस्तुओं को बनाने के लिए है। यह एक खाली नोटबुक वस्तु और एक छात्र आवेदन के लिए कलम वस्तु के निर्माण के अनुरूप है, कि अगर समझ में आता है।

तो मेरे आवेदन का सही परीक्षण करने के लिए, मुझे उपयोगकर्ता को उस सक्रियण स्थिति को हिट करने की आवश्यकता है ताकि उन वस्तुओं को बनाया जा सके। मैं वर्तमान में फैक्टरी लड़की का उपयोग कर रहा उपयोगकर्ता बनाने के लिए, और फिर बुला login_as नकली प्रमाणीकरण करने के लिए उपरोक्त कार्य करते हैं।

मुझे लगता है कि एक और विकल्प पूर्ण प्रमाणीकरण अनुक्रम को छोड़ना होगा और केवल फैक्टरी गर्ल के साथ खाली वस्तुओं को बनाना होगा। मैं कहीं और उचित प्रमाणीकरण का परीक्षण कर सकता था।

आपको क्या लगता है? अगर मैं उचित अनुक्रम के माध्यम से जाना चाहिए, क्यों do_activate समारोह लागू नीचे कोड नहीं है?

user = Factory.create(:user) 
user.active = 1 
user.save 

धन्यवाद!

+0

[यहां एक समान प्रश्न है जिसे मैंने पूछा] (http://stackoverflow.com/questions/64827/rails-restful-authentication-rspec-how-to-test-new-models-that-require-authen) और एक साथ खींचे गए लिंक का एक गुच्छा। – srboisvert

उत्तर

7

इसे पकाना पूरी तरह से स्वीकार्य है।

हालांकि, अन्य परीक्षण लिखें जो सुनिश्चित करते हैं कि जिन चीजों को आप संरक्षित करना चाहते हैं वे सुरक्षित हैं। तो

test "it should show the profile page" do 
    user = Factory(:user) 
    login_as(user) 
    get :show, :id => user 
    assert_response :success 
end 

test "it should not show the profile page cos I'm not logged in" do 
    user = Factory(:user) 
    get :show, :id => user 
    assert_response :redirect 
end 

followups के लिए मुझे मारा के लिए स्वतंत्र महसूस!

संबंधित मुद्दे