मैं एक रेल परियोजना पर काम कर रहा हूं जिसमें मैं अपने संसाधनों को अधिकृत करने के लिए कैनकन का उपयोग करता हूं। जब कोई उपयोगकर्ता साइन इन नहीं होता है और "टॉक" सबमिट करने का प्रयास करता है (एजेक्स फॉर्म सबमिशन के माध्यम से), कैनकन प्रतिक्रिया के रूप में {"status":"error","message":"You must be logged in to do that!"}
के साथ सही ढंग से 401 उठाता है (मैंने फ़ायरबग का उपयोग करके ब्राउज़र में इसे सत्यापित किया है)।कैनकन विफलता प्राधिकरण पर प्रतिक्रिया कोड का परीक्षण करने के लिए मैं आरएसपीसी का उपयोग कैसे कर सकता हूं?
class TalksController < ApplicationController
authorize_resource
def create
@talk = current_user.talks.build(params[:talk])
respond_to do |format|
if @talk.save
response = { :redirect => talk_path(@talk) }
format.html { redirect_to @talk, notice: 'Talk was successfully created.' }
format.json { render json: response, status: :created, }
else
format.html { render action: "new" }
format.json { render json: @talk.errors, status: :unprocessable_entity }
end
end
end
end
talks_controller_spec.rb: लेकिन, मेरा परीक्षण में एक 401 के बजाय एक 302 प्रतिक्रिया कोड प्राप्त [: बात] सौंपा नहीं प्राप्त करता है
describe TalksController do
describe "POST create" do
context "when not signed in" do
it "should not assign talk" do
post :create
assigns[:talk].should be_nil
end
it "should respond with a 401" do
post :create
response.response_code.should == 401
end
end
end
end
पहला उदाहरण यहाँ शामिल सफल (असाइन करता है), लेकिन दूसरा नहीं है:
1) TalksController POST create when not signed in should respond with a 401
Failure/Error: response.response_code.should == 401
expected: 401
got: 302 (using ==)
# ./spec/controllers/talks_controller_spec.rb:53:in `block (4 levels) in <top (required)>'
मुझे यकीन नहीं है कि वास्तव में क्या हो रहा है। क्या ब्राउज़र में लौटाए गए वास्तविक प्रतिक्रिया कोड के लिए मैं परीक्षण कर सकता हूं? या एक बेहतर तरीका मैं प्राधिकरण का परीक्षण कर सकते हैं?
आप 'पोस्ट: बनाने, प्रारूप =>: जेसन' पढ़ने के लिए spec को बदलने का प्रयास कर सकते हैं और देख सकते हैं कि इससे मदद मिलती है या नहीं। – zetetic
सुझाव के लिए धन्यवाद! दुर्भाग्यवश, मुझे अभी भी जोड़ने के बाद एक ही 302 कोड मिलता है: प्रारूप =>: जेसन। –
क्या आपने परीक्षण लॉग देखा है? – zetetic