Skip to content

Render 404 for invalid pages, not 500 #295

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 12, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/controllers/pages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ def show

# Checks whether the requested_page exists in app/views/pages/*.html.haml
def whitelist_page(requested_page)
raise "Invalid page: #{requested_page}" unless ::STATIC_PAGES.include?(requested_page.to_s)
raise ActionController::RoutingError.new('Not Found') unless ::STATIC_PAGES.include?(requested_page.to_s)

requested_page
end

def whitelist_layout(requested_layout)
return 'application' if requested_layout.nil?

raise "Invalid layout: #{requested_layout}" unless ::STATIC_PAGE_LAYOUTS.include?(requested_layout.to_s)
raise ActionController::RoutingError.new('Not Found') unless ::STATIC_PAGE_LAYOUTS.include?(requested_layout.to_s)

requested_layout
end
Expand Down
19 changes: 8 additions & 11 deletions spec/controllers/pages_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
require 'spec_helper'

RSpec.describe PagesController, type: :controller, skip: true do
RSpec.describe PagesController, type: :controller do
let(:unregistered_user) { Fabricate(:user, state: User::REGISTRATION) }

it 'should be able to access privacy policy while user is logged in but not registered' do
unregisterd_user = Fabricate(:user, state: User::REGISTRATION)
controller.send :sign_in, unregisterd_user
controller.send :sign_in, unregistered_user
get :show, page: 'tos', layout: 'application'
expect(response).to be_success
end

it 'fails when presented an non-whitelisted page' do
unregisterd_user = Fabricate(:user, state: User::REGISTRATION)
controller.send :sign_in, unregisterd_user

expect { get :show, page: 'IMNOTREAL' }.to raise_error 'Invalid page: IMNOTREAL'
controller.send :sign_in, unregistered_user
expect { get :show, page: 'IMNOTREAL' }.to raise_error ActionController::RoutingError
end

it 'fails when presented an non-whitelisted layout' do
unregisterd_user = Fabricate(:user, state: User::REGISTRATION)
controller.send :sign_in, unregisterd_user

expect { get :show, page: 'tos', layout: 'IMNOTREAL' }.to raise_error 'Invalid layout: IMNOTREAL'
controller.send :sign_in, unregistered_user
expect { get :show, page: 'tos', layout: 'IMNOTREAL' }.to raise_error ActionController::RoutingError
end
end