Tôi đang mô phỏng một yêu cầu đến từ một dịch vụ bên ngoài, sẽ không có mã thông báo xác thực. Tôi muốn thử nghiệm thất bại nếu thiếu skip_before_action :verify_authenticity_token
.Làm thế nào để POST với thiếu authenticity_token trong rspec yêu cầu kiểm tra đường ray?
Làm cách nào để thực hiện điều này từ thông số yêu cầu Rspec?
Hiện tại tôi đang sử dụng post
như bên dưới, nhưng nó được chấp nhận một cách hạnh phúc.
post endpoint, my_json_string, {'CONTENT_TYPE' => "application/json"}
Tính đến Rails 4.2. 5.1 và Rspec 3.4, kỹ thuật này hoạt động tốt. Tôi nghi ngờ đây là cách thích hợp để thực hiện giải pháp. –
Điều đó thực sự hữu ích, cảm ơn bạn. – Joseworks
Đối với các thử nghiệm bảo vệ CSRF, người ta có thể cần [đối sánh 'raise_error'] (https://www.relishapp.com/rspec/rspec-expectations/v/3-5/docs/built-in-matchers/raise- error-matcher): 'expect {post endpoint, my_json_string} .to raise_error (ActionController :: InvalidAuthenticityToken)'. Tôi nghĩ tôi phải kiểm tra mã trả lời của câu trả lời. –