77 lines
2.5 KiB
Ruby
77 lines
2.5 KiB
Ruby
# encoding: UTF-8
|
|
# frozen_string_literal: true
|
|
|
|
describe Workers::AMQP::DepositCoinAddress do
|
|
let(:member) { create(:member, :barong) }
|
|
let(:address) { Faker::Blockchain::Bitcoin.address }
|
|
let(:secret) { PasswordGenerator.generate(64) }
|
|
let(:wallet) { Wallet.deposit.find_by(blockchain_key: 'btc-testnet') }
|
|
let(:payment_address) { member.payment_address(wallet.id) }
|
|
let(:create_address_result) do
|
|
{ address: address,
|
|
secret: secret,
|
|
details: { label: 'new-label' } }
|
|
end
|
|
|
|
subject { member.payment_address(wallet.id).address }
|
|
|
|
it 'raise error on databse connection error' do
|
|
Member.stubs(:find_by_id).raises(Mysql2::Error::ConnectionError.new(''))
|
|
expect {
|
|
Workers::AMQP::DepositCoinAddress.new.process(member_id: member.id, wallet_id: wallet.id)
|
|
}.to raise_error Mysql2::Error::ConnectionError
|
|
end
|
|
|
|
context 'wallet service' do
|
|
before do
|
|
WalletService.any_instance
|
|
.expects(:create_address!)
|
|
.returns(create_address_result)
|
|
end
|
|
|
|
it 'is passed to wallet service' do
|
|
Workers::AMQP::DepositCoinAddress.new.process(member_id: member.id, wallet_id: wallet.id)
|
|
expect(subject).to eq address
|
|
payment_address.reload
|
|
expect(payment_address.as_json
|
|
.deep_symbolize_keys
|
|
.slice(:address, :secret, :details)).to eq(create_address_result)
|
|
end
|
|
|
|
context 'empty address details' do
|
|
let(:create_address_result) do
|
|
{ address: address,
|
|
secret: secret }
|
|
end
|
|
|
|
it 'is passed to wallet service' do
|
|
Workers::AMQP::DepositCoinAddress.new.process(member_id: member.id, wallet_id: wallet.id)
|
|
expect(subject).to eq address
|
|
payment_address.reload
|
|
expect(payment_address.as_json
|
|
.deep_symbolize_keys
|
|
.slice(:address, :secret, :details)).to eq(create_address_result.merge(details: {}))
|
|
end
|
|
end
|
|
|
|
context 'should skip address with details' do
|
|
let(:create_address_result) do
|
|
{ address: nil,
|
|
secret: secret,
|
|
details: {
|
|
address_id: 'address_id'
|
|
} }
|
|
end
|
|
|
|
it 'shouldnt create address' do
|
|
Workers::AMQP::DepositCoinAddress.new.process(member_id: member.id, wallet_id: wallet.id)
|
|
expect(subject).to eq nil
|
|
payment_address.reload
|
|
expect(payment_address.as_json
|
|
.deep_symbolize_keys
|
|
.slice(:address, :secret, :details)).to eq(create_address_result.merge(details: {:address_id=>"address_id"}))
|
|
end
|
|
end
|
|
end
|
|
end
|