mirror of
https://github.com/internetee/registry.git
synced 2025-06-10 22:54:47 +02:00
Cover EveryPay / BankLink payments with tests
This commit is contained in:
parent
b6469f3dfe
commit
6418924faf
7 changed files with 145 additions and 61 deletions
|
@ -6,34 +6,40 @@ class PaymentCallbackTest < ApplicationIntegrationTest
|
|||
|
||||
@user = users(:api_bestnames)
|
||||
sign_in @user
|
||||
|
||||
@payment_order = payment_orders(:everypay_issued)
|
||||
@invoice = invoices(:one)
|
||||
@invoice.update!(account_activity: nil, total: 12)
|
||||
end
|
||||
|
||||
def test_every_pay_callback_returns_status_200
|
||||
invoice = payable_invoice
|
||||
assert_matching_bank_transaction_exists(invoice)
|
||||
|
||||
request_params = every_pay_request_params.merge(payment_order: invoice.id)
|
||||
post "/registrar/pay/callback/every_pay", params: request_params
|
||||
request_params = every_pay_request_params
|
||||
post "/registrar/pay/callback/#{@payment_order.id}", params: request_params
|
||||
|
||||
assert_response :ok
|
||||
end
|
||||
|
||||
def test_invoice_is_marked_as_paid
|
||||
request_params = every_pay_request_params
|
||||
post "/registrar/pay/callback/#{@payment_order.id}", params: request_params
|
||||
|
||||
assert @payment_order.invoice.paid?
|
||||
end
|
||||
|
||||
def failure_log_is_created_if_unsuccessful_payment
|
||||
request_params = every_pay_request_params.dup
|
||||
request_params['payment_state'] = 'cancelled'
|
||||
request_params['transaction_result'] = 'failed'
|
||||
|
||||
post "/registrar/pay/callback/#{@payment_order.id}", params: request_params
|
||||
|
||||
@payment_order.reload
|
||||
assert @payment_order.cancelled?
|
||||
assert_includes @payment_order.notes, 'Payment state: cancelled'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def payable_invoice
|
||||
invoice = invoices(:one)
|
||||
invoice.update!(account_activity: nil)
|
||||
invoice
|
||||
end
|
||||
|
||||
def assert_matching_bank_transaction_exists(invoice)
|
||||
assert BankTransaction.find_by(
|
||||
description: invoice.description,
|
||||
currency: invoice.currency,
|
||||
iban: invoice.seller_iban
|
||||
), 'Matching bank transaction should exist'
|
||||
end
|
||||
|
||||
def every_pay_request_params
|
||||
{
|
||||
nonce: "392f2d7748bc8cb0d14f263ebb7b8932",
|
||||
|
|
|
@ -8,6 +8,9 @@ class PaymentReturnTest < ApplicationIntegrationTest
|
|||
sign_in @user
|
||||
|
||||
@invoice = invoices(:one)
|
||||
@invoice.update!(account_activity: nil, total: 12)
|
||||
@everypay_order = payment_orders(:everypay_issued)
|
||||
@banklink_order = payment_orders(:banklink_issued)
|
||||
end
|
||||
|
||||
def every_pay_request_params
|
||||
|
@ -57,33 +60,78 @@ class PaymentReturnTest < ApplicationIntegrationTest
|
|||
}
|
||||
end
|
||||
|
||||
def test_every_pay_return_creates_activity_redirects_to_invoice_path
|
||||
request_params = every_pay_request_params.merge(invoice_id: @invoice.id)
|
||||
def test_successful_bank_payment_marks_invoice_as_paid
|
||||
@invoice.update!(account_activity: nil)
|
||||
request_params = bank_link_request_params
|
||||
|
||||
post "/registrar/pay/return/every_pay", params: request_params
|
||||
post "/registrar/pay/return/#{@banklink_order.id}", params: request_params
|
||||
|
||||
@banklink_order.reload
|
||||
assert @banklink_order.invoice.paid?
|
||||
end
|
||||
|
||||
def test_every_pay_return_creates_activity_redirects_to_invoice_path
|
||||
request_params = every_pay_request_params
|
||||
|
||||
post "/registrar/pay/return/#{@everypay_order.id}", params: request_params
|
||||
assert_equal(302, response.status)
|
||||
assert_redirected_to(registrar_invoice_path(@invoice))
|
||||
end
|
||||
|
||||
def test_Every_Pay_return_raises_RecordNotFound
|
||||
request_params = every_pay_request_params.merge(invoice_id: "178907")
|
||||
def test_every_pay_return_raises_record_not_found
|
||||
request_params = every_pay_request_params
|
||||
assert_raises(ActiveRecord::RecordNotFound) do
|
||||
post "/registrar/pay/return/every_pay", params: request_params
|
||||
post '/registrar/pay/return/123456', params: request_params
|
||||
end
|
||||
end
|
||||
|
||||
def test_bank_link_return_redirects_to_invoice_paths
|
||||
request_params = bank_link_request_params.merge(invoice_id: @invoice.id)
|
||||
request_params = bank_link_request_params
|
||||
|
||||
post "/registrar/pay/return/seb", params: request_params
|
||||
post "/registrar/pay/return/#{@banklink_order.id}", params: request_params
|
||||
assert_equal(302, response.status)
|
||||
assert_redirected_to(registrar_invoice_path(@invoice))
|
||||
end
|
||||
|
||||
def test_bank_link_return
|
||||
request_params = bank_link_request_params.merge(invoice_id: "178907")
|
||||
request_params = bank_link_request_params
|
||||
assert_raises(ActiveRecord::RecordNotFound) do
|
||||
post "/registrar/pay/return/seb", params: request_params
|
||||
post '/registrar/pay/return/123456', params: request_params
|
||||
end
|
||||
end
|
||||
|
||||
def test_marks_as_paid_and_adds_notes_if_failed_to_bind
|
||||
request_params = bank_link_request_params
|
||||
|
||||
post "/registrar/pay/return/#{@banklink_order.id}", params: request_params
|
||||
post "/registrar/pay/return/#{@banklink_order.id}", params: request_params
|
||||
@banklink_order.reload
|
||||
|
||||
assert @banklink_order.notes.present?
|
||||
assert @banklink_order.paid?
|
||||
assert_includes @banklink_order.notes, 'Failed to bind'
|
||||
end
|
||||
|
||||
def test_failed_bank_link_payment_creates_brief_error_explanation
|
||||
request_params = bank_link_request_params.dup
|
||||
request_params['VK_SERVICE'] = '1911'
|
||||
|
||||
post "/registrar/pay/return/#{@banklink_order.id}", params: request_params
|
||||
|
||||
@banklink_order.reload
|
||||
|
||||
assert_includes @banklink_order.notes, 'Bank responded with code 1911'
|
||||
end
|
||||
|
||||
def test_failed_every_pay_payment_creates_brief_error_explanation
|
||||
request_params = every_pay_request_params.dup
|
||||
request_params['payment_state'] = 'cancelled'
|
||||
request_params['transaction_result'] = 'failed'
|
||||
|
||||
post "/registrar/pay/return/#{@everypay_order.id}", params: request_params
|
||||
|
||||
@everypay_order.reload
|
||||
|
||||
assert_includes @everypay_order.notes, 'Payment state: cancelled'
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue