else
@errors = [e.to_s]
end
- self.render_error status: 422
+ if e.is_a? ArvadosApiClient::NotLoggedInException
+ self.render_error status: 422
+ else
+ thread_with_optional_api_token do
+ self.render_error status: 422
+ end
+ end
end
def render_not_found(e=ActionController::RoutingError.new("Path not found"))
logger.error e.inspect
@errors = ["Path not found"]
- self.render_error status: 404
+ thread_with_optional_api_token do
+ self.render_error status: 404
+ end
end
def find_objects_for_index
--- /dev/null
+require 'integration_helper'
+
+class ErrorsTest < ActionDispatch::IntegrationTest
+ BAD_UUID = "zzzzz-zzzzz-zzzzzzzzzzzzzzz"
+
+ test "error page renders user navigation" do
+ visit(page_with_token("active", "/collections/#{BAD_UUID}"))
+ assert(page.has_text?(@@API_AUTHS["active"]["email"]),
+ "User information missing from error page")
+ assert(page.has_no_text?(/log ?in/i),
+ "Logged in user prompted to log in on error page")
+ end
+
+ test "error page renders without login" do
+ visit "/collections/download/#{BAD_UUID}/#{@@API_AUTHS['active']['api_token']}"
+ assert(page.has_no_text?(/\b500\b/),
+ "Error page without login returned 500")
+ end
+end