51 lines
1.5 KiB
Ruby
51 lines
1.5 KiB
Ruby
# encoding: UTF-8
|
|
# frozen_string_literal: true
|
|
|
|
module API
|
|
module V2
|
|
class Mount
|
|
# Use /public namespace for skipping rack-jwt authorization.
|
|
namespace :public do
|
|
get('/null') { '' }
|
|
get('/record-not-found') { raise ActiveRecord::RecordNotFound }
|
|
get('/auth-error') { raise Peatio::Auth::Error }
|
|
get('/standard-error') { raise StandardError }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe API::V2::Mount, type: :request do
|
|
let(:middlewares) { API::V2::Mount.middleware }
|
|
it 'should use attack middleware' do
|
|
expect(middlewares.drop(1)).to eq [[:use, Rack::Attack]]
|
|
end
|
|
|
|
context 'handle exception on request processing' do
|
|
it 'returns array with record.not_found error' do
|
|
get '/api/v2/public/record-not-found'
|
|
expect(response.code).to eq '404'
|
|
expect(response).to include_api_error('record.not_found')
|
|
end
|
|
|
|
it 'returns array with jwt.decode_and_verify error' do
|
|
get '/api/v2/public/auth-error'
|
|
expect(response.code).to eq '401'
|
|
expect(response).to include_api_error('jwt.decode_and_verify')
|
|
end
|
|
|
|
it 'returns array with server.internal_error error' do
|
|
get '/api/v2/public/standard-error'
|
|
expect(response.code).to eq '500'
|
|
expect(response).to include_api_error('server.internal_error')
|
|
end
|
|
end
|
|
|
|
context 'handle exception on request routing' do
|
|
it 'should render json error message' do
|
|
get '/api/v2/public/non/exist'
|
|
expect(response.code).to eq '404'
|
|
end
|
|
end
|
|
end
|