Posted 13 days ago. Visible to the public.

RSpec: how to prevent the Rails debug page if you want to actually test for 404s

Within development and test environments, Rails is usually configured to show a detailed debug page instead of 404s. However, there might be some cases where you expect a 404 and want to test for it.

An example would be request-specs that check authorization rules. (If you use a gem like consul for managing authorization rules, you should always check these rules via power-specs. However, request-specs can be used as a light-weight version of integration tests here.)

In this case, Rails will replace the 404 page that you want to test for with its debug page. To turn this behaviour off you can use the code from Eliot Sykes' blog post Archive

I renamed the key realistic_error_responses to true_404s for my projects.

You can then activate the behaviour like this:

Copy
describe "Admin Authorization", type: :request do describe "GET /admin_panel", :true_404s do it "prevents users from accessing the admin area" do user = User.create(..., role: :not_an_admin, ...) get admin_panel_path(as: user) expect(response).to redirect_to_login.or have_http_status(404) end end end

makandra has been working exclusively with Ruby on Rails since 2007. Our laser focus on a single technology has made us a leader in this space.

Owner of this card:

Avatar
Klaus Weidinger
Last edit:
13 days ago
by Klaus Weidinger
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Klaus Weidinger to makandra dev
This website uses short-lived cookies to improve usability.
Accept or learn more