diff options
author | Seb Bacon <seb.bacon@gmail.com> | 2012-01-12 08:05:57 +0000 |
---|---|---|
committer | Seb Bacon <seb.bacon@gmail.com> | 2012-01-12 08:05:57 +0000 |
commit | f158e9c96d2af74c940a8d775799fcb9755d0b12 (patch) | |
tree | 73a2d8172c3c14ffbb69ea407d8b10d3144fd77b | |
parent | 43bd77a1ad43d7cb24117bf3973f841221fd2c6e (diff) |
Return 404 for non-existent 'details' pages. Fixes #325
-rw-r--r-- | app/controllers/request_controller.rb | 11 | ||||
-rw-r--r-- | spec/integration/errors_spec.rb | 4 |
2 files changed, 11 insertions, 4 deletions
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb index fbd7d24d4..65ce9c88a 100644 --- a/app/controllers/request_controller.rb +++ b/app/controllers/request_controller.rb @@ -118,11 +118,14 @@ class RequestController < ApplicationController def details long_cache @info_request = InfoRequest.find_by_url_title(params[:url_title]) - if !@info_request.user_can_view?(authenticated_user) - render :template => 'request/hidden', :status => 410 # gone - return + if @info_request.nil? + raise ActiveRecord::RecordNotFound.new("Request not found") + else + if !@info_request.user_can_view?(authenticated_user) + render :template => 'request/hidden', :status => 410 # gone + return + end end - @columns = ['id', 'event_type', 'created_at', 'described_state', 'last_described_at', 'calculated_state' ] end diff --git a/spec/integration/errors_spec.rb b/spec/integration/errors_spec.rb index f8f9162c1..8084bb35a 100644 --- a/spec/integration/errors_spec.rb +++ b/spec/integration/errors_spec.rb @@ -49,5 +49,9 @@ describe "When rendering errors" do get("/request/5/response/4/attach/html/3/" ) response.code.should == "403" end + it "should render a 404 for non-existent 'details' pages for requests" do + get("/details/request/wobble" ) + response.code.should == "404" + end end |