Fix #4165: Add mechanism to test error responses.

https://danbooru.donmai.us/posts.json?error=500&message=testing
This commit is contained in:
evazion
2019-09-12 22:37:32 -05:00
parent 4915690c6d
commit f8dd3eb72b

View File

@@ -10,6 +10,7 @@ class ApplicationController < ActionController::Base
before_action :api_check
before_action :set_variant
before_action :enable_cors
before_action :cause_error
after_action :reset_current_user
layout "default"
@@ -107,6 +108,19 @@ class ApplicationController < ActionController::Base
request.variant = params[:variant].try(:to_sym)
end
# allow api clients to force errors for testing purposes.
def cause_error
return unless params[:error].present?
status = params[:error].to_i
raise ArgumentError, "invalid status code" unless status.in?(400..599)
error = StandardError.new(params[:message])
error.set_backtrace(caller)
render_error_page(status, error)
end
User::Roles.each do |role|
define_method("#{role}_only") do
if !CurrentUser.user.send("is_#{role}?") || CurrentUser.user.is_banned? || IpBan.is_banned?(CurrentUser.ip_addr)