Fix #4165: Add mechanism to test error responses.
https://danbooru.donmai.us/posts.json?error=500&message=testing
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user