Initial commit
This commit is contained in:
113
spec/api/v2/management/payment_address_spec.rb
Normal file
113
spec/api/v2/management/payment_address_spec.rb
Normal file
@@ -0,0 +1,113 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
describe API::V2::Management::PaymentAddress, type: :request do
|
||||
let(:member1) { create(:member, :level_3) }
|
||||
let(:member2) { create(:member, :level_3) }
|
||||
let(:signers) { %i[alex jeff] }
|
||||
|
||||
before do
|
||||
defaults_for_management_api_v1_security_configuration!
|
||||
management_api_v1_security_configuration.merge! \
|
||||
scopes: {
|
||||
write_payment_addresses: { permitted_signers: %i[alex jeff], mandatory_signers: %i[alex] },
|
||||
}
|
||||
end
|
||||
|
||||
describe 'POST /api/v2/management/deposit_address/new' do
|
||||
let(:data) { { currency: 'eth', uid: member1.uid } }
|
||||
let(:address) { 'qwerty' }
|
||||
|
||||
def request
|
||||
post_json '/api/v2/management/deposit_address/new', multisig_jwt_management_api_v1({ data: data }, *signers)
|
||||
end
|
||||
|
||||
before do
|
||||
WalletService.any_instance.stubs(:create_address!).returns({ address: address, secret: 'qwerty' })
|
||||
end
|
||||
|
||||
it 'generates new address' do
|
||||
request
|
||||
expect(response_body).to eq({"address"=>address, "currencies"=>[data[:currency]], "remote"=>false, "state"=>"active", "uid"=>data[:uid]})
|
||||
expect(response).to have_http_status 200
|
||||
end
|
||||
|
||||
context 'generates new address for btc' do
|
||||
it do
|
||||
data[:currency] = 'btc'
|
||||
request
|
||||
expect(response_body).to eq({"address"=>address, "currencies"=>[data[:currency]], "remote"=>false, "state"=>"active", "uid"=>data[:uid]})
|
||||
expect(response).to have_http_status 200
|
||||
end
|
||||
end
|
||||
|
||||
context 'generates new address with specified remote value' do
|
||||
it do
|
||||
data[:remote] = true
|
||||
request
|
||||
expect(response_body).to eq({"address"=>address, "currencies"=>[data[:currency]], "remote"=>true, "state"=>"active", "uid"=>data[:uid]})
|
||||
expect(response).to have_http_status 200
|
||||
end
|
||||
end
|
||||
|
||||
context 'missing required params' do
|
||||
context 'uid' do
|
||||
it do
|
||||
data.delete(:uid)
|
||||
request
|
||||
expect(response.status).to eq 422
|
||||
expect(response.body).to match(/uid is missing/i)
|
||||
end
|
||||
end
|
||||
|
||||
context 'currency' do
|
||||
it do
|
||||
data.delete(:currency)
|
||||
request
|
||||
expect(response.status).to eq 422
|
||||
expect(response.body).to match(/currency is missing/i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'non-existing params applied' do
|
||||
context 'uid' do
|
||||
it do
|
||||
data[:uid] = '123456'
|
||||
request
|
||||
expect(response.status).to eq 422
|
||||
expect(response.body).to match(/management.payment_address.uid_doesnt_exist/i)
|
||||
end
|
||||
end
|
||||
|
||||
context 'currency' do
|
||||
it do
|
||||
data[:currency] = 'uah'
|
||||
request
|
||||
expect(response.status).to eq 422
|
||||
expect(response.body).to match(/management.payment_address.currency_doesnt_exist/i)
|
||||
end
|
||||
end
|
||||
|
||||
context 'remote' do
|
||||
it do
|
||||
data[:remote] = 'remote'
|
||||
request
|
||||
expect(response.status).to eq 422
|
||||
expect(response.body).to match(/management.payment_address.non_boolean_remote/i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'wallet service raised an error' do
|
||||
before do
|
||||
WalletService.any_instance.stubs(:create_address!).raises(StandardError.new)
|
||||
end
|
||||
|
||||
it do
|
||||
request
|
||||
expect(response.body).to match(/management.payment_address.failed_to_generate/i)
|
||||
expect(response).to have_http_status 422
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user