mirror of
https://github.com/internetee/registry.git
synced 2025-07-23 03:06:14 +02:00
Add EveryPay payments
* Refactor BankLink into Payments::BankLink, add Payments::EveryPay * Write tests for existing invoice views * Write basic tests for Payments module
This commit is contained in:
parent
f7c2b25a66
commit
c5591b4828
32 changed files with 818 additions and 31 deletions
54
test/models/payments/bank_link_test.rb
Normal file
54
test/models/payments/bank_link_test.rb
Normal file
|
@ -0,0 +1,54 @@
|
|||
require 'test_helper'
|
||||
|
||||
class BankLinkTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
super
|
||||
|
||||
@original_methods = ENV['payment_methods']
|
||||
@original_seb_URL = ENV['seb_payment_url']
|
||||
ENV['payment_methods'] = 'seb, swed, credit_card'
|
||||
ENV['seb_payment_url'] = 'https://example.com/seb_url'
|
||||
ENV['seb_seller_account'] = 'SEB'
|
||||
ENV['seb_bank_certificate'] = 'test/fixtures/files/seb_bank_cert.pem'
|
||||
ENV['seb_seller_certificate'] = 'test/fixtures/files/seb_seller_key.pem'
|
||||
|
||||
@invoice = invoices(:valid)
|
||||
params = {return_url: 'return.url', response_url: 'response_url'}
|
||||
@bank_link = Payments::BankLink.new('seb', @invoice, params)
|
||||
|
||||
travel_to '2018-04-01 00:30'
|
||||
end
|
||||
|
||||
def teardown
|
||||
super
|
||||
|
||||
ENV['payment_methods'] = @original_methods
|
||||
ENV['seb_payment_url'] = @original_seb_URL
|
||||
travel_back
|
||||
end
|
||||
|
||||
def test_form_fields
|
||||
expected_response = {
|
||||
"VK_SERVICE": "1012",
|
||||
"VK_VERSION": "008",
|
||||
"VK_SND_ID": "SEB",
|
||||
"VK_STAMP": nil,
|
||||
"VK_AMOUNT": nil,
|
||||
"VK_CURR": "EUR",
|
||||
"VK_REF": "",
|
||||
"VK_MSG": "Order nr. ",
|
||||
"VK_RETURN": "return.url",
|
||||
"VK_CANCEL": "return.url",
|
||||
"VK_DATETIME": "2018-04-01T00:30:00+0300",
|
||||
"VK_MAC": "fPHKfBNwtyQI5ec1pnrlIUJI6nerGPwnoqx0K9/g40hsgUmum4QE1Eq992FR73pRXyE2+1dUuahEd3s57asM7MOD2Pb8SALA/+hi3jlqjiAAThdikDuJ+83LogSKQljLdd0BHwqe+O0WPeKaOmP2/HltOEIHpY3d399JAi1t7YA=",
|
||||
"VK_ENCODING": "UTF-8",
|
||||
"VK_LANG": "ENG"
|
||||
}.with_indifferent_access
|
||||
|
||||
assert_equal expected_response, @bank_link.form_fields
|
||||
end
|
||||
|
||||
def test_is_not_valid_without_response
|
||||
assert_equal false, @bank_link.valid_response?
|
||||
end
|
||||
end
|
64
test/models/payments/every_pay_test.rb
Normal file
64
test/models/payments/every_pay_test.rb
Normal file
|
@ -0,0 +1,64 @@
|
|||
require 'test_helper'
|
||||
|
||||
class EveryPayTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
super
|
||||
|
||||
@original_methods = ENV['payment_methods']
|
||||
@original_seb_URL = ENV['seb_payment_url']
|
||||
ENV['payment_methods'] = 'seb, swed, credit_card'
|
||||
ENV['seb_payment_url'] = 'https://example.com/seb_url'
|
||||
ENV['seb_seller_account'] = 'SEB'
|
||||
ENV['seb_bank_certificate'] = 'test/fixtures/files/seb_bank_cert.pem'
|
||||
ENV['seb_seller_certificate'] = 'test/fixtures/files/seb_seller_key.pem'
|
||||
|
||||
@invoice = invoices(:valid)
|
||||
params = {
|
||||
response:
|
||||
{
|
||||
utf8:"✓",
|
||||
_method: "put",
|
||||
authenticity_token: "OnA69vbccQtMt3C9wxEWigs5Gpf/7z+NoxRCMkFPlTvaATs8+OgMKF1I4B2f+vuK37zCgpWZaWWtyuslRRSwkw==",
|
||||
nonce: "8a9063b3c13edb00522d446481cb1886",
|
||||
timestamp: "1524036436",
|
||||
api_username: "ca8d6336dd750ddb",
|
||||
transaction_result: "completed",
|
||||
payment_reference: "3380fc36f02a7c1d2b0a700794e7a6ef8683191b3f0dc88b762e72c6e573adaf",
|
||||
payment_state: "settled",
|
||||
amount: "240.0",
|
||||
order_reference: "59fa7f639211d1e14952bad73ccb50",
|
||||
account_id: "EUR3D1",
|
||||
cc_type: "master_card",
|
||||
cc_last_four_digits: "0487",
|
||||
cc_month: "10",
|
||||
cc_year: "2018",
|
||||
cc_holder_name: "John Doe",
|
||||
hmac_fields: "account_id,amount,api_username,cc_holder_name,cc_last_four_digits,cc_month,cc_type,cc_year,hmac_fields,nonce,order_reference,payment_reference,payment_state,timestamp,transaction_result",
|
||||
hmac: "d5b11b001b248532ad5af529f072b5b76347936a",
|
||||
controller: "registrar/payments",
|
||||
action: "back",
|
||||
bank: "every_pay"
|
||||
},
|
||||
}
|
||||
@every_pay = Payments::EveryPay.new('every_pay', @invoice, params)
|
||||
|
||||
travel_to '2018-04-01 00:30'
|
||||
end
|
||||
|
||||
def teardown
|
||||
super
|
||||
|
||||
ENV['payment_methods'] = @original_methods
|
||||
ENV['seb_payment_url'] = @original_seb_URL
|
||||
travel_back
|
||||
end
|
||||
|
||||
def test_form_fields
|
||||
end
|
||||
|
||||
def test_is_not_valid_without_response
|
||||
end
|
||||
|
||||
def test_validation
|
||||
end
|
||||
end
|
58
test/models/payments_test.rb
Normal file
58
test/models/payments_test.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
require 'test_helper'
|
||||
|
||||
class PaymentTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
super
|
||||
|
||||
@original_methods = ENV['payment_methods']
|
||||
@original_seb_URL = ENV['seb_payment_url']
|
||||
ENV['payment_methods'] = 'seb, swed, credit_card'
|
||||
ENV['seb_payment_url'] = nil
|
||||
@not_implemented_payment = Payments::Base.new(
|
||||
'not_implemented', Invoice.new
|
||||
)
|
||||
end
|
||||
|
||||
def teardown
|
||||
super
|
||||
|
||||
ENV['payment_methods'] = @original_methods
|
||||
ENV['seb_payment_url'] = @original_seb_URL
|
||||
end
|
||||
|
||||
def test_variable_assignment
|
||||
assert_equal 'not_implemented', @not_implemented_payment.type
|
||||
assert_nil @not_implemented_payment.response_url
|
||||
assert_nil @not_implemented_payment.return_url
|
||||
assert_nil @not_implemented_payment.form_url
|
||||
end
|
||||
|
||||
def test_that_errors_are_raised_on_not_implemented_methods
|
||||
assert_raise NotImplementedError do
|
||||
@not_implemented_payment.valid_response?
|
||||
end
|
||||
|
||||
assert_raise NotImplementedError do
|
||||
@not_implemented_payment.settled_payment?
|
||||
end
|
||||
|
||||
assert_raise NotImplementedError do
|
||||
@not_implemented_payment.form_fields
|
||||
end
|
||||
|
||||
assert_raise NotImplementedError do
|
||||
@not_implemented_payment.complete_transaction
|
||||
end
|
||||
end
|
||||
|
||||
def test_that_create_with_type_raises_argument_error
|
||||
assert_raise ArgumentError do
|
||||
Payments.create_with_type("not_implemented", Invoice.new)
|
||||
end
|
||||
end
|
||||
|
||||
def test_create_with_correct_subclass
|
||||
payment = Payments.create_with_type('seb', Invoice.new)
|
||||
assert_equal Payments::BankLink, payment.class
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue