else
errors = [e.inspect]
end
- render json: { errors: errors }, status: 422
+ status = if e.respond_to?(:http_status) ? e.http_status : 422
+ render json: { errors: errors }, status: status
end
def render_not_found(e=ActionController::RoutingError.new("Path not found"))
has_many :permissions, :foreign_key => :head_uuid, :class_name => 'Link', :primary_key => :uuid, :conditions => "link_class = 'permission'"
class PermissionDeniedError < StandardError
+ def http_status
+ 403
+ end
+ end
+
+ class UnauthorizedError < StandardError
+ def http_status
+ 401
+ end
end
def self.kind_class(kind)
if o[:ping_secret] != self.info[:ping_secret]
logger.info "Ping: secret mismatch: received \"#{o[:ping_secret]}\" != \"#{self.info[:ping_secret]}\""
- raise ArvadosModel::PermissionDeniedError.new("Incorrect ping_secret")
+ raise ArvadosModel::UnauthorizedError.new("Incorrect ping_secret")
end
self.last_ping_at = Time.now
local_ipv4: '172.17.2.174',
ping_secret: 'dricrha4lcpi23pd69e44soanc069udawxvn3zzj45hs8bumvn'
}
- assert_response :unprocessable_entity
+ assert_response 401
end
end