diff --git a/app/controllers/eis_billing/base_controller.rb b/app/controllers/eis_billing/base_controller.rb index 93d33c85a..aa30f2fcb 100644 --- a/app/controllers/eis_billing/base_controller.rb +++ b/app/controllers/eis_billing/base_controller.rb @@ -18,7 +18,6 @@ module EisBilling def decoded_token if auth_header token = auth_header.split(' ')[1] - # header: { 'Authorization': 'Bearer ' } begin JWT.decode(token, ENV['secret_word'], true, algorithm: 'HS256') rescue JWT::DecodeError diff --git a/app/controllers/eis_billing/payment_status_controller.rb b/app/controllers/eis_billing/payment_status_controller.rb index 4a4a12e9a..9147ecf76 100644 --- a/app/controllers/eis_billing/payment_status_controller.rb +++ b/app/controllers/eis_billing/payment_status_controller.rb @@ -8,9 +8,6 @@ module EisBilling sum = params[:standing_amount] everypay_response = params - logger.info 'REQUEST FROM BILLING' - logger.info params - payment_status = define_payment_status(params[:payment_state]) invoice = Invoice.find_by(number: invoice_number) diff --git a/app/jobs/send_e_invoice_two_job.rb b/app/jobs/send_e_invoice_two_job.rb index 7b896c77c..bb8f993ca 100644 --- a/app/jobs/send_e_invoice_two_job.rb +++ b/app/jobs/send_e_invoice_two_job.rb @@ -7,6 +7,7 @@ class SendEInvoiceTwoJob < ApplicationJob return unless need_to_process_invoice?(invoice: invoice, payable: payable) send_invoice_to_eis_billing(invoice: invoice, payable: payable) + invoice.update(e_invoice_sent_at: Time.zone.now) rescue StandardError => e log_error(invoice: invoice, error: e) raise e diff --git a/app/services/eis_billing/base.rb b/app/services/eis_billing/base.rb index 6ea6294ac..7cd02b3ed 100644 --- a/app/services/eis_billing/base.rb +++ b/app/services/eis_billing/base.rb @@ -16,7 +16,7 @@ module EisBilling uri = URI(url) http = Net::HTTP.new(uri.host, uri.port) - unless Rails.env.development? + unless Rails.env.development? || Rails.env.test? http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE end diff --git a/config/application.yml.sample b/config/application.yml.sample index e8c87d566..19418c19b 100644 --- a/config/application.yml.sample +++ b/config/application.yml.sample @@ -237,4 +237,6 @@ nameserver_validation_timeout: '1' eis_billing_system_base_url_dev: 'http://eis_billing_system:3000' eis_billing_system_base_url_staging: 'https://st-billing.infra.tld.ee' +secret_access_word: 'please-Give-Me-accesS' +secret_word: 'this-secret-should-be-change' billing_system_integrated: 'true' diff --git a/test/integration/admin_area/invoices_test.rb b/test/integration/admin_area/invoices_test.rb index 16d3aa8bd..c0bee324d 100644 --- a/test/integration/admin_area/invoices_test.rb +++ b/test/integration/admin_area/invoices_test.rb @@ -24,38 +24,30 @@ class AdminAreaInvoicesIntegrationTest < ApplicationIntegrationTest end def test_create_new_invoice - invoice_n = Invoice.order(number: :desc).last.number + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"1200.0\",\"order_reference\":4,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":\"\",\"custom_field_2\":\"registry\",\"invoice_number\":4}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - visit new_admin_invoice_path + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - assert_text 'Create new invoice' - select 'Best Names', from: 'deposit_registrar_id', match: :first - fill_in 'Amount', with: '1000' - click_on 'Save' + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - assert_equal page.status_code, 200 + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + visit new_admin_invoice_path + + assert_text 'Create new invoice' + select 'Best Names', from: 'deposit_registrar_id', match: :first + fill_in 'Amount', with: '1000' + click_on 'Save' + + assert_equal page.status_code, 200 + end end def test_visit_list_of_invoices_pages diff --git a/test/integration/eis_billing/directo_response_test.rb b/test/integration/eis_billing/directo_response_test.rb index b1e7426cd..b26c5b63e 100644 --- a/test/integration/eis_billing/directo_response_test.rb +++ b/test/integration/eis_billing/directo_response_test.rb @@ -6,35 +6,40 @@ class DirectoResponseTest < ApplicationIntegrationTest @invoice = invoices(:one) @response_xml = '' + Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) end def test_should_created_directo_instance - directo_response_from_billing = { - response: 'this is response', - xml_data: @response_xml, - month: true - } + if Feature.billing_system_integrated? + directo_response_from_billing = { + response: 'this is response', + xml_data: @response_xml, + month: true + } - assert_difference 'Directo.count', 1 do - put eis_billing_directo_response_path, params: JSON.parse(directo_response_from_billing.to_json), - headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + assert_difference 'Directo.count', 1 do + put eis_billing_directo_response_path, params: JSON.parse(directo_response_from_billing.to_json), + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + end end end def test_should_update_related_invoice - directo_response_from_billing = { - response: 'this is response', - xml_data: @response_xml - } + if Feature.billing_system_integrated? + directo_response_from_billing = { + response: 'this is response', + xml_data: @response_xml + } - refute @invoice.in_directo + refute @invoice.in_directo - assert_difference 'Directo.count', 1 do - put eis_billing_directo_response_path, params: JSON.parse(directo_response_from_billing.to_json), - headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + assert_difference 'Directo.count', 1 do + put eis_billing_directo_response_path, params: JSON.parse(directo_response_from_billing.to_json), + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + end + + @invoice.reload + assert @invoice.in_directo end - - @invoice.reload - assert @invoice.in_directo end end diff --git a/test/integration/eis_billing/lhv_connect_transactions_test.rb b/test/integration/eis_billing/lhv_connect_transactions_test.rb index 38c15dd50..f6d0f59d0 100644 --- a/test/integration/eis_billing/lhv_connect_transactions_test.rb +++ b/test/integration/eis_billing/lhv_connect_transactions_test.rb @@ -4,25 +4,39 @@ class LhvConnectTransactionsIntegrationTest < ApplicationIntegrationTest setup do @invoice = invoices(:unpaid) sign_in users(:api_bestnames) + Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) end def test_should_saved_transaction_data - test_transaction = OpenStruct.new(amount: 0.1, - currency: 'EUR', - date: Time.zone.today, - payment_reference_number: '2199812', - payment_description: "description 2199812") + if Feature.billing_system_integrated? + test_transaction_1 = OpenStruct.new(amount: 0.1, + currency: 'EUR', + date: Time.zone.today, + payment_reference_number: '2199812', + payment_description: "description 2199812") - lhv_transactions = [] + test_transaction_2 = OpenStruct.new(amount: 0.1, + currency: 'EUR', + date: Time.zone.today, + payment_reference_number: '2199813', + payment_description: "description 2199813") - 3.times do - lhv_transactions << test_transaction - end + test_transaction_3 = OpenStruct.new(amount: 0.1, + currency: 'EUR', + date: Time.zone.today, + payment_reference_number: '2199814', + payment_description: "description 2199814") - assert_difference 'BankStatement.count', 3 do - assert_difference 'BankTransaction.count', 3 do - post eis_billing_lhv_connect_transactions_path, params: { "_json" => JSON.parse(lhv_transactions.to_json) }, - headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + lhv_transactions = [] + lhv_transactions << test_transaction_1 + lhv_transactions << test_transaction_2 + lhv_transactions << test_transaction_3 + + assert_difference 'BankStatement.count', 3 do + assert_difference 'BankTransaction.count', 3 do + post eis_billing_lhv_connect_transactions_path, params: { "_json" => JSON.parse(lhv_transactions.to_json) }, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + end end end end diff --git a/test/integration/eis_billing/payment_status_test.rb b/test/integration/eis_billing/payment_status_test.rb index 0cc5f7514..c47da4e9c 100644 --- a/test/integration/eis_billing/payment_status_test.rb +++ b/test/integration/eis_billing/payment_status_test.rb @@ -4,55 +4,60 @@ class PaymentStatusIntegrationTest < ApplicationIntegrationTest setup do @invoice = invoices(:unpaid) sign_in users(:api_bestnames) + Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) end def test_update_payment_status_should_create_succesfully_billing_instaces - payload = { - "order_reference" => @invoice.number, - "transaction_time" => Time.zone.now - 2.minute, - "standing_amount" => @invoice.total, - "payment_state" => 'settled' - } + if Feature.billing_system_integrated? + payload = { + "order_reference" => @invoice.number, + "transaction_time" => Time.zone.now - 2.minute, + "standing_amount" => @invoice.total, + "payment_state" => 'settled' + } - assert_difference -> { @invoice.payment_orders.count } do - assert_difference -> { BankTransaction.count } do - put eis_billing_payment_status_path, params: payload, - headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + assert_difference -> { @invoice.payment_orders.count } do + assert_difference -> { BankTransaction.count } do + put eis_billing_payment_status_path, params: payload, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + end end + + bank_transaction = BankTransaction.order(created_at: :desc).first + invoice_payment_order = @invoice.payment_orders.order(created_at: :desc).first + + assert_equal bank_transaction.sum, @invoice.total + assert_equal invoice_payment_order.status, "paid" + assert_equal @invoice.account_activity.activity_type, "add_credit" + + assert_response :ok end - - bank_transaction = BankTransaction.order(created_at: :desc).first - invoice_payment_order = @invoice.payment_orders.order(created_at: :desc).first - - assert_equal bank_transaction.sum, @invoice.total - assert_equal invoice_payment_order.status, "paid" - assert_equal @invoice.account_activity.activity_type, "add_credit" - - assert_response :ok end def test_update_payment_status_should_create_failed_payment - payload = { - "order_reference" => @invoice.number, - "transaction_time" => Time.zone.now - 2.minute, - "standing_amount" => @invoice.total, - "payment_state" => 'cancelled' - } + if Feature.billing_system_integrated? + payload = { + "order_reference" => @invoice.number, + "transaction_time" => Time.zone.now - 2.minute, + "standing_amount" => @invoice.total, + "payment_state" => 'cancelled' + } - assert_difference -> { @invoice.payment_orders.count } do - assert_difference -> { BankTransaction.count } do - put eis_billing_payment_status_path, params: payload, - headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + assert_difference -> { @invoice.payment_orders.count } do + assert_difference -> { BankTransaction.count } do + put eis_billing_payment_status_path, params: payload, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + end end + + bank_transaction = BankTransaction.order(created_at: :desc).first + invoice_payment_order = @invoice.payment_orders.order(created_at: :desc).first + + assert_equal bank_transaction.sum, @invoice.total + assert_equal invoice_payment_order.status, "failed" + assert_equal @invoice.account_activity.activity_type, "add_credit" + + assert_response :ok end - - bank_transaction = BankTransaction.order(created_at: :desc).first - invoice_payment_order = @invoice.payment_orders.order(created_at: :desc).first - - assert_equal bank_transaction.sum, @invoice.total - assert_equal invoice_payment_order.status, "failed" - assert_equal @invoice.account_activity.activity_type, "add_credit" - - assert_response :ok end end diff --git a/test/models/bank_transaction_test.rb b/test/models/bank_transaction_test.rb index 9c1add424..e3063b89d 100644 --- a/test/models/bank_transaction_test.rb +++ b/test/models/bank_transaction_test.rb @@ -16,105 +16,87 @@ class BankTransactionTest < ActiveSupport::TestCase end def test_binds_if_this_sum_invoice_already_present - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') - another_invoice = @invoice.dup - another_invoice.save(validate: false) - another_invoice.update(reference_no: '7654321', number: '2221') + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') + another_invoice = @invoice.dup + another_invoice.save(validate: false) + another_invoice.update(reference_no: '7654321', number: '2221') - another_item = @invoice.items.first.dup - another_item.invoice = another_invoice - another_item.save - another_invoice.reload + another_item = @invoice.items.first.dup + another_item.invoice = another_invoice + another_item.save + another_invoice.reload - first_transaction = BankTransaction.new(sum: 10, - description: 'Order nr 1 from registrar 1234567 second number 2345678') + first_transaction = BankTransaction.new(sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') - first_transaction.create_activity(another_invoice.buyer, another_invoice) + first_transaction.create_activity(another_invoice.buyer, another_invoice) - transaction = BankTransaction.new(sum: 10, - description: 'Order nr 1 from registrar 1234567 second number 2345678') + transaction = BankTransaction.new(sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') - assert_difference 'AccountActivity.count' do - transaction.autobind_invoice + assert_difference 'AccountActivity.count' do + transaction.autobind_invoice + end end end def test_binds_if_this_sum_cancelled_invoice_already_present - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') - another_invoice = @invoice.dup - another_invoice.save(validate: false) + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') + another_invoice = @invoice.dup + another_invoice.save(validate: false) - another_item = @invoice.items.first.dup - another_item.invoice = another_invoice + another_item = @invoice.items.first.dup + another_item.invoice = another_invoice - another_item.save - another_invoice.reload - another_invoice.update(reference_no: '1234567', number: '2221', cancelled_at: Time.zone.now) + another_item.save + another_invoice.reload + another_invoice.update(reference_no: '1234567', number: '2221', cancelled_at: Time.zone.now) - transaction = BankTransaction.new(sum: 10, - description: 'Order nr 1 from registrar 1234567 second number 2345678') + transaction = BankTransaction.new(sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') - assert_difference 'AccountActivity.count' do - transaction.autobind_invoice + assert_difference 'AccountActivity.count' do + transaction.autobind_invoice + end end end def test_marks_the_first_one_as_paid_if_same_sum - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') - another_invoice = @invoice.dup - another_invoice.save(validate: false) - another_invoice.update(reference_no: '7654321', number: '2221') + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') + another_invoice = @invoice.dup + another_invoice.save(validate: false) + another_invoice.update(reference_no: '7654321', number: '2221') - another_item = @invoice.items.first.dup - another_item.invoice = another_invoice - another_item.save - another_invoice.reload + another_item = @invoice.items.first.dup + another_item.invoice = another_invoice + another_item.save + another_invoice.reload - transaction = BankTransaction.new(sum: 10, - description: 'Order nr 1 from registrar 1234567 second number 2345678') + transaction = BankTransaction.new(sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') - assert_difference 'AccountActivity.count' do - transaction.autobind_invoice + assert_difference 'AccountActivity.count' do + transaction.autobind_invoice + end + + @invoice.reload + another_invoice.reload + assert(@invoice.paid?) + assert_not(another_invoice.paid?) end - - @invoice.reload - another_invoice.reload - assert(@invoice.paid?) - assert_not(another_invoice.paid?) end def test_matches_against_invoice_nubmber_and_reference_number_in_description diff --git a/test/models/billing/reference_no_test.rb b/test/models/billing/reference_no_test.rb index 46d830fb3..18179f3e6 100644 --- a/test/models/billing/reference_no_test.rb +++ b/test/models/billing/reference_no_test.rb @@ -7,19 +7,12 @@ class ReferenceNoTest < ActiveSupport::TestCase end def test_generated_reference_number_conforms_to_format - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/reference_number_generator"). - with( - body: "{\"initiator\":\"registry\"}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"reference_number\":\"12332\"}", headers: {}) + if Feature.billing_system_integrated? + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/reference_number_generator") + .to_return(status: 200, body: "{\"reference_number\":\"12332\"}", headers: {}) - reference_no = Billing::ReferenceNo.generate - assert_match Billing::ReferenceNo::REGEXP, reference_no + reference_no = Billing::ReferenceNo.generate + assert_match Billing::ReferenceNo::REGEXP, reference_no + end end end diff --git a/test/models/invoice_test.rb b/test/models/invoice_test.rb index 2beb29ecf..a5ca4e401 100644 --- a/test/models/invoice_test.rb +++ b/test/models/invoice_test.rb @@ -5,6 +5,7 @@ class InvoiceTest < ActiveSupport::TestCase setup do @invoice = invoices(:one) + Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) end def test_fixture_is_valid @@ -117,78 +118,69 @@ class InvoiceTest < ActiveSupport::TestCase end def test_creates_invoice_with_bank_transaction_total - registrar = registrars(:bestnames) - transaction = bank_transactions(:one).dup - transaction.reference_no = registrar.reference_no - transaction.sum = 250 + if Feature.billing_system_integrated? + registrar = registrars(:bestnames) + transaction = bank_transactions(:one).dup + transaction.reference_no = registrar.reference_no + transaction.sum = 250 - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") - .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator") - .to_return(status: 200, body: "", headers: {}) + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator") + .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice = Invoice.create_from_transaction!(transaction) - assert_equal 250, invoice.total + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 4}\"}", headers: {}) + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - transaction.sum = 146.88 - invoice = Invoice.create_from_transaction!(transaction) - assert_equal 146.88, invoice.total + invoice = Invoice.create_from_transaction!(transaction) + assert_equal 250, invoice.total - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 5}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 4}\"}", headers: {}) - transaction.sum = 0.99 - invoice = Invoice.create_from_transaction!(transaction) - assert_equal 0.99, invoice.total + transaction.sum = 146.88 + invoice = Invoice.create_from_transaction!(transaction) + assert_equal 146.88, invoice.total + + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 5}\"}", headers: {}) + + transaction.sum = 0.99 + invoice = Invoice.create_from_transaction!(transaction) + assert_equal 0.99, invoice.total + end end def test_emails_invoice_after_creating_topup_invoice - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"250.0\",\"order_reference\":4,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":\"Direct top-up via bank transfer\",\"custom_field_2\":\"registry\",\"invoice_number\":4}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "", headers: {}) + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - registrar = registrars(:bestnames) - transaction = bank_transactions(:one).dup - transaction.reference_no = registrar.reference_no - transaction.sum = 250 + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - response = OpenStruct.new(body: "{\"invoice_number\":\"#{invoice_n + 3}\"}") - Spy.on(EisBilling::GetInvoiceNumber, :send_invoice).and_return(response) + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - assert_emails 1 do - Invoice.create_from_transaction!(transaction) + registrar = registrars(:bestnames) + transaction = bank_transactions(:one).dup + transaction.reference_no = registrar.reference_no + transaction.sum = 250 + + response = OpenStruct.new(body: "{\"invoice_number\":\"#{invoice_n + 3}\"}") + Spy.on(EisBilling::GetInvoiceNumber, :send_invoice).and_return(response) + + assert_emails 1 do + Invoice.create_from_transaction!(transaction) + end end end end diff --git a/test/models/registrar_test.rb b/test/models/registrar_test.rb index 972f3e4f4..d790a0883 100644 --- a/test/models/registrar_test.rb +++ b/test/models/registrar_test.rb @@ -6,6 +6,7 @@ class RegistrarTest < ActiveJob::TestCase @original_default_language = Setting.default_language @original_days_to_keep_invoices_active = Setting.days_to_keep_invoices_active @old_validation_type = Truemail.configure.default_validation_type + Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) end teardown do @@ -144,70 +145,55 @@ class RegistrarTest < ActiveJob::TestCase end def test_issues_new_invoice - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"120.0\",\"order_reference\":4,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":null,\"custom_field_2\":\"registry\",\"invoice_number\":4}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "", headers: {}) + if Feature.billing_system_integrated? + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - travel_to Time.zone.parse('2010-07-05') - Setting.days_to_keep_invoices_active = 10 + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - invoice = @registrar.issue_prepayment_invoice(100) + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - assert_equal Date.parse('2010-07-05'), invoice.issue_date - assert_equal Date.parse('2010-07-15'), invoice.due_date + travel_to Time.zone.parse('2010-07-05') + Setting.days_to_keep_invoices_active = 10 + + invoice = @registrar.issue_prepayment_invoice(100) + + assert_equal Date.parse('2010-07-05'), invoice.issue_date + assert_equal Date.parse('2010-07-15'), invoice.due_date + end end def test_issues_e_invoice_along_with_invoice - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"120.0\",\"order_reference\":4,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":null,\"custom_field_2\":\"registry\",\"invoice_number\":4}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "", headers: {}) + if Feature.billing_system_integrated? + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + end + EInvoice::Providers::TestProvider.deliveries.clear perform_enqueued_jobs do @registrar.issue_prepayment_invoice(100) end - assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count + unless Feature.billing_system_integrated? + assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count + end end def test_invalid_without_address_street diff --git a/test/system/admin_area/bank_statement_test.rb b/test/system/admin_area/bank_statement_test.rb index 2e0db2c4c..fea19869b 100644 --- a/test/system/admin_area/bank_statement_test.rb +++ b/test/system/admin_area/bank_statement_test.rb @@ -6,6 +6,7 @@ class AdminAreaBankStatementTest < ApplicationSystemTestCase travel_to Time.zone.parse('2010-07-05 00:30:00') @invoice = invoices(:one) + Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) end def test_update_bank_statement @@ -54,31 +55,39 @@ class AdminAreaBankStatementTest < ApplicationSystemTestCase end def test_can_bind_statement_transactions - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") - .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - registrar = registrars(:bestnames) + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + registrar = registrars(:bestnames) - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator") - .to_return(status: 200, body: "", headers: {}) + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator") + .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - registrar.issue_prepayment_invoice(500) - invoice = registrar.invoices.last + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response") + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - create_bank_statement - click_link_or_button 'Add' - assert_text 'Create bank transaction' + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice") + .to_return(status: 200, body: "", headers: {}) - fill_in 'Description', with: "Invoice with id #{invoice.number}" - fill_in 'Reference number', with: invoice.reference_no - fill_in 'Sum', with: invoice.total - fill_in 'Paid at', with: Time.zone.today.to_s - click_link_or_button 'Save' + registrar.issue_prepayment_invoice(500) + invoice = registrar.invoices.last - click_link_or_button 'Back to bank statement' - click_link_or_button 'Bind invoices' + create_bank_statement + click_link_or_button 'Add' + assert_text 'Create bank transaction' - assert_text 'Invoices were fully binded' + fill_in 'Description', with: "Invoice with id #{invoice.number}" + fill_in 'Reference number', with: invoice.reference_no + fill_in 'Sum', with: invoice.total + fill_in 'Paid at', with: Time.zone.today.to_s + click_link_or_button 'Save' + + click_link_or_button 'Back to bank statement' + click_link_or_button 'Bind invoices' + + assert_text 'Invoices were fully binded' + end end def create_bank_statement diff --git a/test/system/admin_area/registrars_test.rb b/test/system/admin_area/registrars_test.rb index 63795af96..851d546c5 100644 --- a/test/system/admin_area/registrars_test.rb +++ b/test/system/admin_area/registrars_test.rb @@ -14,37 +14,30 @@ class AdminRegistrarsSystemTest < ApplicationSystemTestCase end def test_creates_new_registrar - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/reference_number_generator"). - with( - body: "{\"initiator\":\"registry\"}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"reference_number\":\"12332\"}", headers: {}) + if Feature.billing_system_integrated? + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/reference_number_generator"). + to_return(status: 200, body: "{\"reference_number\":\"12332\"}", headers: {}) - assert_nil Registrar.find_by(name: 'Acme Ltd') + assert_nil Registrar.find_by(name: 'Acme Ltd') - visit admin_registrars_path - click_on 'New registrar' + visit admin_registrars_path + click_on 'New registrar' - fill_in 'Name', with: 'Acme Ltd' - fill_in 'Reg no', with: '1234' - fill_in 'Contact e-mail', with: 'any@acme.test' - fill_in 'Street', with: 'any' - fill_in 'City', with: 'any' - fill_in 'State / Province', with: 'any' - fill_in 'Zip', with: 'any' - select 'United States', from: 'Country' - fill_in 'Accounting customer code', with: 'test' - fill_in 'Code', with: 'test' - click_on 'Create registrar' + fill_in 'Name', with: 'Acme Ltd' + fill_in 'Reg no', with: '1234' + fill_in 'Contact e-mail', with: 'any@acme.test' + fill_in 'Street', with: 'any' + fill_in 'City', with: 'any' + fill_in 'State / Province', with: 'any' + fill_in 'Zip', with: 'any' + select 'United States', from: 'Country' + fill_in 'Accounting customer code', with: 'test' + fill_in 'Code', with: 'test' + click_on 'Create registrar' - assert_text 'Registrar has been successfully created' - assert_text 'Acme Ltd' + assert_text 'Registrar has been successfully created' + assert_text 'Acme Ltd' + end end def test_updates_registrar diff --git a/test/system/registrar_area/add_deposits_test.rb b/test/system/registrar_area/add_deposits_test.rb index cd1764404..68841b8d4 100644 --- a/test/system/registrar_area/add_deposits_test.rb +++ b/test/system/registrar_area/add_deposits_test.rb @@ -11,36 +11,25 @@ class AddDepositsTest < ApplicationSystemTestCase end def test_should_send_request_for_creating_invoice_to_eis_system - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"120.0\",\"order_reference\":4,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":\"\",\"custom_field_2\":\"registry\",\"invoice_number\":4}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - # eis_response = OpenStruct.new(body: "{\"payment_link\":\"http://link.test\"}") - # Spy.on_instance_method(EisBilling::AddDeposits, :send_invoice).and_return(eis_response) + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - visit new_registrar_deposit_url - fill_in 'Amount', with: '100.0' - click_button text: 'Add' + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - assert_text 'Everypay link' + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + visit new_registrar_deposit_url + fill_in 'Amount', with: '100.0' + click_button text: 'Add' + + assert_text 'Everypay link' + end end end diff --git a/test/system/registrar_area/billing/balance_top_up_test.rb b/test/system/registrar_area/billing/balance_top_up_test.rb index 5c7526682..3306ffa3e 100644 --- a/test/system/registrar_area/billing/balance_top_up_test.rb +++ b/test/system/registrar_area/billing/balance_top_up_test.rb @@ -7,6 +7,7 @@ class BalanceTopUpTest < ApplicationSystemTestCase eis_response = OpenStruct.new(body: "{\"payment_link\":\"http://link.test\"}") Spy.on_instance_method(EisBilling::AddDeposits, :send_invoice).and_return(eis_response) + Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) end teardown do @@ -14,31 +15,32 @@ class BalanceTopUpTest < ApplicationSystemTestCase end def test_creates_new_invoice - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - Setting.registry_vat_prc = 0.1 + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - visit registrar_invoices_url - click_link_or_button 'Add deposit' - fill_in 'Amount', with: '25.5' + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response") + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - assert_difference 'Invoice.count' do - click_link_or_button 'Add' + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice") + .to_return(status: 200, body: "", headers: {}) + + Setting.registry_vat_prc = 0.1 + + visit registrar_invoices_url + click_link_or_button 'Add deposit' + fill_in 'Amount', with: '25.5' + + assert_difference 'Invoice.count' do + click_link_or_button 'Add' + end + + invoice = Invoice.last + + assert_equal BigDecimal(10), invoice.vat_rate + assert_equal BigDecimal('28.05'), invoice.total + assert_text 'Please pay the following invoice' end - - invoice = Invoice.last - - assert_equal BigDecimal(10), invoice.vat_rate - assert_equal BigDecimal('28.05'), invoice.total - assert_text 'Please pay the following invoice' end end diff --git a/test/system/registrar_area/invoices/new_invoice_payment_test.rb b/test/system/registrar_area/invoices/new_invoice_payment_test.rb index 452a9612b..360d115e3 100644 --- a/test/system/registrar_area/invoices/new_invoice_payment_test.rb +++ b/test/system/registrar_area/invoices/new_invoice_payment_test.rb @@ -27,46 +27,48 @@ class NewInvoicePaymentTest < ApplicationSystemTestCase end def test_create_new_SEB_payment - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - create_invoice_and_visit_its_page - click_link_or_button 'seb' - form = page.find('form') - assert_equal('https://www.seb.ee/cgi-bin/dv.sh/ipank.r', form['action']) - assert_equal('post', form['method']) - assert_equal('240.00', form.find_by_id('VK_AMOUNT', visible: false).value) + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + create_invoice_and_visit_its_page + click_link_or_button 'seb' + form = page.find('form') + assert_equal('https://www.seb.ee/cgi-bin/dv.sh/ipank.r', form['action']) + assert_equal('post', form['method']) + assert_equal('240.00', form.find_by_id('VK_AMOUNT', visible: false).value) + end end def test_create_new_Every_Pay_payment - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - create_invoice_and_visit_its_page - click_link_or_button 'every_pay' - expected_hmac_fields = 'account_id,amount,api_username,callback_url,' + - 'customer_url,hmac_fields,nonce,order_reference,timestamp,transaction_type' + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - form = page.find('form') - assert_equal('https://igw-demo.every-pay.com/transactions/', form['action']) - assert_equal('post', form['method']) - assert_equal(expected_hmac_fields, form.find_by_id('hmac_fields', visible: false).value) - assert_equal('240.00', form.find_by_id('amount', visible: false).value) + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + create_invoice_and_visit_its_page + click_link_or_button 'every_pay' + expected_hmac_fields = 'account_id,amount,api_username,callback_url,' + + 'customer_url,hmac_fields,nonce,order_reference,timestamp,transaction_type' + + form = page.find('form') + assert_equal('https://igw-demo.every-pay.com/transactions/', form['action']) + assert_equal('post', form['method']) + assert_equal(expected_hmac_fields, form.find_by_id('hmac_fields', visible: false).value) + assert_equal('240.00', form.find_by_id('amount', visible: false).value) + end end end diff --git a/test/system/registrar_area/invoices/new_test.rb b/test/system/registrar_area/invoices/new_test.rb index 23dce68fe..1ca36389d 100644 --- a/test/system/registrar_area/invoices/new_test.rb +++ b/test/system/registrar_area/invoices/new_test.rb @@ -17,57 +17,59 @@ class NewInvoiceTest < ApplicationSystemTestCase end def test_create_new_invoice_with_positive_amount - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - visit registrar_invoices_path - click_link_or_button 'Add deposit' - fill_in 'Amount', with: '200.00' - fill_in 'Description', with: 'My first invoice' + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - assert_difference 'Invoice.count', 1 do - click_link_or_button 'Add' + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + visit registrar_invoices_path + click_link_or_button 'Add deposit' + fill_in 'Amount', with: '200.00' + fill_in 'Description', with: 'My first invoice' + + assert_difference 'Invoice.count', 1 do + click_link_or_button 'Add' + end + + assert_text 'Please pay the following invoice' + assert_text "Invoice no. #{invoice_n + 3}" + assert_text 'Subtotal 200,00 €' + assert_text 'Pay invoice' end - - assert_text 'Please pay the following invoice' - assert_text "Invoice no. #{invoice_n + 3}" - assert_text 'Subtotal 200,00 €' - assert_text 'Pay invoice' end def test_create_new_invoice_with_comma_in_number - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - visit registrar_invoices_path - click_link_or_button 'Add deposit' - fill_in 'Amount', with: '200,00' - fill_in 'Description', with: 'My first invoice' + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - assert_difference 'Invoice.count', 1 do - click_link_or_button 'Add' + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + visit registrar_invoices_path + click_link_or_button 'Add deposit' + fill_in 'Amount', with: '200,00' + fill_in 'Description', with: 'My first invoice' + + assert_difference 'Invoice.count', 1 do + click_link_or_button 'Add' + end + + assert_text 'Please pay the following invoice' + assert_text "Invoice no. #{invoice_n + 3}" + assert_text 'Subtotal 200,00 €' + assert_text 'Pay invoice' end - - assert_text 'Please pay the following invoice' - assert_text "Invoice no. #{invoice_n + 3}" - assert_text 'Subtotal 200,00 €' - assert_text 'Pay invoice' end def test_create_new_invoice_fails_when_amount_is_0 diff --git a/test/tasks/invoices/process_payments_test.rb b/test/tasks/invoices/process_payments_test.rb index aeb54d792..b7721db68 100644 --- a/test/tasks/invoices/process_payments_test.rb +++ b/test/tasks/invoices/process_payments_test.rb @@ -77,39 +77,33 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase end def test_if_invoice_is_overdue_than_48_hours - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"0.1\",\"order_reference\":5,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":\"Direct top-up via bank transfer\",\"custom_field_2\":\"registry\",\"invoice_number\":5}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "", headers: {}) + Spy.on_instance_method(SendEInvoiceTwoJob, :perform_now).and_return(true) - assert_not @invoice.paid? + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - @account_activity.update(activity_type: "add_credit", bank_transaction: nil, created_at: Time.zone.today - 3.days, creator_str: 'AdminUser') - @invoice.update(account_activity: @account_activity, total: @payment_amount) - assert @invoice.paid? + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - assert_difference 'AccountActivity.count' do - assert_difference 'Invoice.count' do - capture_io { run_task } + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + + assert_not @invoice.paid? + + @account_activity.update(activity_type: "add_credit", bank_transaction: nil, created_at: Time.zone.today - 3.days, creator_str: 'AdminUser') + @invoice.update(account_activity: @account_activity, total: @payment_amount) + assert @invoice.paid? + + assert_difference 'AccountActivity.count' do + assert_difference 'Invoice.count' do + capture_io { run_task } + end end end end @@ -167,39 +161,32 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase assert payment_order.failed? end - def test_credits_registrar_account_without_invoice_beforehand - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + def test_credits_registrar_athout_invoice_beforehand + if Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}") - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"0.1\",\"order_reference\":5,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":\"Direct top-up via bank transfer\",\"custom_field_2\":\"registry\",\"invoice_number\":5}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "", headers: {}) + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - registrar = registrars(:bestnames) + Spy.on_instance_method(SendEInvoiceTwoJob, :perform_now).and_return(true) - assert_changes -> { registrar.accounts.first.balance } do - run_task - end + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - assert_changes -> { registrar.invoices.count } do - run_task + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + registrar = registrars(:bestnames) + + assert_changes -> { registrar.accounts.first.balance } do + run_task + end + + assert_changes -> { registrar.invoices.count } do + run_task + end end end @@ -211,49 +198,40 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase end def test_topup_creates_invoice_and_send_it_as_paid - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + if Feature.billing_system_integrated? + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"0.1\",\"order_reference\":5,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":\"Direct top-up via bank transfer\",\"custom_field_2\":\"registry\",\"invoice_number\":5}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - registrar = registrars(:bestnames) - @invoice.payment_orders.destroy_all - @invoice.destroy + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - perform_enqueued_jobs do - run_task + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + registrar = registrars(:bestnames) + @invoice.payment_orders.destroy_all + @invoice.destroy + + perform_enqueued_jobs do + run_task + end + + invoice = Invoice.last + assert invoice.paid? + assert_not invoice.e_invoice_sent_at.blank? + + pdf_source = Invoice::PdfGenerator.new(invoice) + pdf_source.send(:invoice_html).include?('Receipt date') + + email= ActionMailer::Base.deliveries.last + assert email.subject.include?('already paid') + + assert_equal 0.1, registrar.invoices.last.total end - - invoice = Invoice.last - assert invoice.paid? - assert_not invoice.e_invoice_sent_at.blank? - - pdf_source = Invoice::PdfGenerator.new(invoice) - pdf_source.send(:invoice_html).include?('Receipt date') - - email= ActionMailer::Base.deliveries.last - assert email.subject.include?('already paid') - - assert_equal 0.1, registrar.invoices.last.total end def test_output diff --git a/test/tasks/registrars/reload_balance_test.rb b/test/tasks/registrars/reload_balance_test.rb index be1b89b74..0e7979d3d 100644 --- a/test/tasks/registrars/reload_balance_test.rb +++ b/test/tasks/registrars/reload_balance_test.rb @@ -5,6 +5,7 @@ class ReloadBalanceTaskTest < ActiveSupport::TestCase setup do @registrar = registrars(:bestnames) + Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) end def test_issues_invoice_when_auto_reload_is_enabled_and_threshold_reached @@ -20,38 +21,30 @@ class ReloadBalanceTaskTest < ActiveSupport::TestCase end def test_issues_invoice_when_auto_reload_is_enabled_and_threshold_reached - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"120.0\",\"order_reference\":4,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":null,\"custom_field_2\":\"registry\",\"invoice_number\":4}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). + if Feature.billing_system_integrated? + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). to_return(status: 200, body: "", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - reload_amount = 100 - registrar = registrar_with_auto_reload_enabled_and_threshold_reached(reload_amount) + reload_amount = 100 + registrar = registrar_with_auto_reload_enabled_and_threshold_reached(reload_amount) - assert_difference -> { registrar.invoices.count } do - capture_io { run_task } + assert_difference -> { registrar.invoices.count } do + capture_io { run_task } + end + + invoice = registrar.invoices.last + assert_equal Time.zone.today, invoice.e_invoice_sent_at.to_date end - - invoice = registrar.invoices.last - assert_equal Time.zone.today, invoice.e_invoice_sent_at.to_date end def test_skips_issuing_invoice_when_threshold_is_not_reached @@ -73,67 +66,51 @@ class ReloadBalanceTaskTest < ActiveSupport::TestCase end def test_marks_registrar_as_pending_balance_reload - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"120.0\",\"order_reference\":4,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":null,\"custom_field_2\":\"registry\",\"invoice_number\":4}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "", headers: {}) + if Feature.billing_system_integrated? + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - registrar = registrar_with_auto_reload_enabled_and_threshold_reached + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - capture_io { run_task } - registrar.reload + registrar = registrar_with_auto_reload_enabled_and_threshold_reached - assert registrar.settings['balance_auto_reload']['pending'] + capture_io { run_task } + registrar.reload + + assert registrar.settings['balance_auto_reload']['pending'] + end end def test_output - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - with( - body: "{\"transaction_amount\":\"120.0\",\"order_reference\":4,\"customer_name\":\"Best Names\",\"customer_email\":\"info@bestnames.test\",\"custom_field_1\":null,\"custom_field_2\":\"registry\",\"invoice_number\":4}", - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "", headers: {}) + if Feature.billing_system_integrated? + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - with( - headers: { - 'Accept'=>'Bearer WA9UvDmzR9UcE5rLqpWravPQtdS8eDMAIynzGdSOTw==--9ZShwwij3qmLeuMJ--NE96w2PnfpfyIuuNzDJTGw==', - 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', - 'Authorization'=>'Bearer foobar', - 'Content-Type'=>'application/json', - 'User-Agent'=>'Ruby' - }). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - reload_amount = 100 - registrar = registrar_with_auto_reload_enabled_and_threshold_reached(reload_amount) - assert_equal 'Best Names', registrar.name + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "http://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - assert_output %(Registrar "Best Names" got #{number_to_currency(reload_amount, unit: 'EUR')}\nInvoiced total: 1\n) do - run_task + stub_request(:put, "http://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "http://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + reload_amount = 100 + registrar = registrar_with_auto_reload_enabled_and_threshold_reached(reload_amount) + assert_equal 'Best Names', registrar.name + + assert_output %(Registrar "Best Names" got #{number_to_currency(reload_amount, unit: 'EUR')}\nInvoiced total: 1\n) do + run_task + end end end