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 :api_check
|
||||||
before_action :set_variant
|
before_action :set_variant
|
||||||
before_action :enable_cors
|
before_action :enable_cors
|
||||||
|
before_action :cause_error
|
||||||
after_action :reset_current_user
|
after_action :reset_current_user
|
||||||
layout "default"
|
layout "default"
|
||||||
|
|
||||||
@@ -107,6 +108,19 @@ class ApplicationController < ActionController::Base
|
|||||||
request.variant = params[:variant].try(:to_sym)
|
request.variant = params[:variant].try(:to_sym)
|
||||||
end
|
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|
|
User::Roles.each do |role|
|
||||||
define_method("#{role}_only") do
|
define_method("#{role}_only") do
|
||||||
if !CurrentUser.user.send("is_#{role}?") || CurrentUser.user.is_banned? || IpBan.is_banned?(CurrentUser.ip_addr)
|
if !CurrentUser.user.send("is_#{role}?") || CurrentUser.user.is_banned? || IpBan.is_banned?(CurrentUser.ip_addr)
|
||||||
|
|||||||
Reference in New Issue
Block a user