workarea-kount 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +20 -0
  3. data/.eslintrc +24 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  5. data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
  6. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  7. data/.github/workflows/ci.yml +58 -0
  8. data/.gitignore +14 -0
  9. data/.rubocop.yml +2 -0
  10. data/CHANGELOG.md +212 -0
  11. data/CODE_OF_CONDUCT.md +3 -0
  12. data/CONTRIBUTING.md +3 -0
  13. data/Gemfile +17 -0
  14. data/LICENSE.md +3 -0
  15. data/README.md +98 -0
  16. data/Rakefile +53 -0
  17. data/app/controllers/workarea/admin/orders_controller.decorator +5 -0
  18. data/app/controllers/workarea/storefront/checkout/place_order_controller.decorator +11 -0
  19. data/app/controllers/workarea/storefront/kount_controller.rb +19 -0
  20. data/app/controllers/workarea/storefront/kount_orders_controller.rb +40 -0
  21. data/app/lib/active_shipping/rate_estimate.decorator +10 -0
  22. data/app/mailers/workarea/storefront/order_mailer.decorator +14 -0
  23. data/app/models/workarea/checkout.decorator +37 -0
  24. data/app/models/workarea/checkout/fraud/kount_analyzer.rb +71 -0
  25. data/app/models/workarea/kount/ens_event.rb +13 -0
  26. data/app/models/workarea/kount/order.rb +14 -0
  27. data/app/models/workarea/order.decorator +62 -0
  28. data/app/models/workarea/order/fraud_decision.decorator +9 -0
  29. data/app/models/workarea/order/item.decorator +8 -0
  30. data/app/models/workarea/order/status/review.rb +13 -0
  31. data/app/models/workarea/payment/credit_card.decorator +13 -0
  32. data/app/models/workarea/payment/payment.decorator +11 -0
  33. data/app/models/workarea/payment/status/kount_declined.rb +13 -0
  34. data/app/models/workarea/payment/status/kount_review.rb +13 -0
  35. data/app/models/workarea/payment/tender/credit_card.decorator +10 -0
  36. data/app/models/workarea/search/admin.decorator +12 -0
  37. data/app/models/workarea/search/admin/order.decorator +7 -0
  38. data/app/models/workarea/shipping/rate_lookup.decorator +26 -0
  39. data/app/models/workarea/shipping/service.decorator +9 -0
  40. data/app/models/workarea/shipping/service_selection.decorator +7 -0
  41. data/app/models/workarea/shipping_option.decorator +27 -0
  42. data/app/services/workarea/kount/cancel_order_under_review.rb +28 -0
  43. data/app/services/workarea/kount/event.rb +43 -0
  44. data/app/services/workarea/kount/event/dmc_event.rb +9 -0
  45. data/app/services/workarea/kount/event/risk_change_event.rb +21 -0
  46. data/app/services/workarea/kount/event/special_alert_event.rb +21 -0
  47. data/app/services/workarea/kount/event/workflow_event.rb +25 -0
  48. data/app/services/workarea/kount/event_batch.rb +37 -0
  49. data/app/services/workarea/kount/order_fraud_update_service.rb +42 -0
  50. data/app/services/workarea/kount/ris_inquiry.rb +120 -0
  51. data/app/services/workarea/kount/ris_inquiry/product.rb +53 -0
  52. data/app/services/workarea/kount/ris_request.rb +84 -0
  53. data/app/services/workarea/kount/ris_update.rb +39 -0
  54. data/app/view_models/workarea/admin/order_view_model.decorator +35 -0
  55. data/app/view_models/workarea/storefront/order_view_model.decorator +11 -0
  56. data/app/views/workarea/admin/orders/_kount.html.haml +28 -0
  57. data/app/views/workarea/admin/orders/kount.html.haml +46 -0
  58. data/app/views/workarea/storefront/checkouts/_kount_data_collector.html.haml +4 -0
  59. data/app/views/workarea/storefront/order_mailer/hold_denial.html.haml +14 -0
  60. data/app/workers/workarea/kount/process_review_order.rb +75 -0
  61. data/app/workers/workarea/kount/update_ris_inquiry.rb +31 -0
  62. data/bin/rails +18 -0
  63. data/config/initializers/appends.rb +11 -0
  64. data/config/initializers/workarea.rb +26 -0
  65. data/config/locales/en.yml +26 -0
  66. data/config/routes.rb +14 -0
  67. data/doc/Kount Technical Specification Guide 5.5.5.pdf +0 -0
  68. data/lib/workarea/kount.rb +87 -0
  69. data/lib/workarea/kount/address.rb +39 -0
  70. data/lib/workarea/kount/bogus_gateway.rb +415 -0
  71. data/lib/workarea/kount/engine.rb +8 -0
  72. data/lib/workarea/kount/errors.rb +2 -0
  73. data/lib/workarea/kount/gateway.rb +50 -0
  74. data/lib/workarea/kount/mappings.rb +195 -0
  75. data/lib/workarea/kount/payment_types.rb +50 -0
  76. data/lib/workarea/kount/response.rb +141 -0
  77. data/lib/workarea/kount/security_mash.rb +79 -0
  78. data/lib/workarea/kount/user_defined_fields.rb +16 -0
  79. data/lib/workarea/kount/version.rb +5 -0
  80. data/lib/workarea/mailer_previews/storefront/order_mailer_preview.rb +10 -0
  81. data/test/dummy/Rakefile +6 -0
  82. data/test/dummy/app/assets/config/manifest.js +4 -0
  83. data/test/dummy/app/assets/images/.keep +0 -0
  84. data/test/dummy/app/assets/javascripts/application.js +13 -0
  85. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  86. data/test/dummy/app/controllers/application_controller.rb +3 -0
  87. data/test/dummy/app/controllers/concerns/.keep +0 -0
  88. data/test/dummy/app/helpers/application_helper.rb +2 -0
  89. data/test/dummy/app/jobs/application_job.rb +2 -0
  90. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  91. data/test/dummy/app/models/concerns/.keep +0 -0
  92. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  93. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  94. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  95. data/test/dummy/bin/bundle +3 -0
  96. data/test/dummy/bin/rails +4 -0
  97. data/test/dummy/bin/rake +4 -0
  98. data/test/dummy/bin/setup +34 -0
  99. data/test/dummy/bin/update +29 -0
  100. data/test/dummy/config.ru +5 -0
  101. data/test/dummy/config/application.rb +23 -0
  102. data/test/dummy/config/boot.rb +5 -0
  103. data/test/dummy/config/cable.yml +9 -0
  104. data/test/dummy/config/environment.rb +5 -0
  105. data/test/dummy/config/environments/development.rb +56 -0
  106. data/test/dummy/config/environments/production.rb +86 -0
  107. data/test/dummy/config/environments/test.rb +44 -0
  108. data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
  109. data/test/dummy/config/initializers/assets.rb +11 -0
  110. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  111. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  112. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  113. data/test/dummy/config/initializers/inflections.rb +16 -0
  114. data/test/dummy/config/initializers/mime_types.rb +4 -0
  115. data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
  116. data/test/dummy/config/initializers/session_store.rb +3 -0
  117. data/test/dummy/config/initializers/workarea.rb +5 -0
  118. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  119. data/test/dummy/config/locales/en.yml +23 -0
  120. data/test/dummy/config/puma.rb +47 -0
  121. data/test/dummy/config/routes.rb +6 -0
  122. data/test/dummy/config/secrets.yml +22 -0
  123. data/test/dummy/config/spring.rb +6 -0
  124. data/test/dummy/db/seeds.rb +2 -0
  125. data/test/dummy/lib/assets/.keep +0 -0
  126. data/test/dummy/log/.keep +0 -0
  127. data/test/dummy/public/404.html +67 -0
  128. data/test/dummy/public/422.html +67 -0
  129. data/test/dummy/public/500.html +66 -0
  130. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  131. data/test/dummy/public/apple-touch-icon.png +0 -0
  132. data/test/dummy/public/favicon.ico +0 -0
  133. data/test/factories/kount.rb +164 -0
  134. data/test/integration/workarea/api/admin/payment_transactions_integration_test.decorator +29 -0
  135. data/test/integration/workarea/kount_moneris_integration_test.rb +37 -0
  136. data/test/integration/workarea/storefront/kount_integration_test.rb +37 -0
  137. data/test/integration/workarea/storefront/kount_orders_integration_test.rb +89 -0
  138. data/test/lib/workarea/kount/response_test.rb +95 -0
  139. data/test/lib/workarea/kount/security_mash_test.rb +62 -0
  140. data/test/models/workarea/checkout/fraud/kount_analyzer_test.rb +44 -0
  141. data/test/models/workarea/checkout_test.decorator +22 -0
  142. data/test/models/workarea/order/queries_test.decorator +28 -0
  143. data/test/models/workarea/order_test.decorator +25 -0
  144. data/test/models/workarea/payment/payment_test.rb +106 -0
  145. data/test/models/workarea/payment/saved_credit_card_test.rb +24 -0
  146. data/test/models/workarea/payment_test.decorator +54 -0
  147. data/test/models/workarea/shipping_option_test.rb +29 -0
  148. data/test/services/workarea/kount/event_batch_test.rb +95 -0
  149. data/test/services/workarea/kount/event_test.rb +51 -0
  150. data/test/services/workarea/kount/order_fraud_update_service_test.rb +48 -0
  151. data/test/support/workarea/kount_api_config.rb +27 -0
  152. data/test/system/workarea/kount_system_test.rb +72 -0
  153. data/test/system/workarea/storefront/kount_guest_checkout_system_test.rb +32 -0
  154. data/test/system/workarea/storefront/kount_logged_in_checkout_system_test.rb +102 -0
  155. data/test/test_helper.rb +16 -0
  156. data/test/vcr_cassettes/kount/basic_fraud_test.yml +43 -0
  157. data/test/vcr_cassettes/kount/integration/moneris_new_credit_card.yml +84 -0
  158. data/test/vcr_cassettes/kount/integration/moneris_saved_credit_card.yml +84 -0
  159. data/test/vcr_cassettes/kount/order_fraud_update.yml +82 -0
  160. data/test/workers/workarea/kount/clean_orders_test.rb +40 -0
  161. data/test/workers/workarea/kount/process_review_order_test.rb +100 -0
  162. data/workarea-kount.gemspec +17 -0
  163. metadata +238 -0
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Kount
5
+ class EventTest < Workarea::TestCase
6
+ def test_create
7
+ assert_instance_of(Kount::DmcEvent, Event.create(dmc_xml))
8
+ assert_instance_of(Kount::WorkflowEvent, Event.create(workflow_xml))
9
+ end
10
+
11
+ private
12
+
13
+ def dmc_xml
14
+ xml = <<~XML
15
+ <event>
16
+ <name>DMC_ADDRESS_ADD</name>
17
+ <key>
18
+ <address_1>Street Address </address_1>
19
+ <address_2>Optional Address </address_2>
20
+ <city>City </city>
21
+ <state>State </state>
22
+ <postal_code>Postal Code </postal_code>
23
+ <type>Address Type </type>
24
+ </key>
25
+ <old_value>null </old_value>
26
+ <new_value>New Status </new_value>
27
+ <agent>agent@email.com </agent>
28
+ <occurred>2015-09-05 13:19:24 </occurred>
29
+ </event>
30
+ XML
31
+
32
+ Nokogiri::XML.parse(xml).children.first
33
+ end
34
+
35
+ def workflow_xml
36
+ xml = <<~XML
37
+ <event>
38
+ <name>WORKFLOW_STATUS_EDIT</name>
39
+ <key order_number="D58470FCF0" site="DEFAULT">7JG1075ML345</key>
40
+ <old_value>R</old_value>
41
+ <new_value>A</new_value>
42
+ <agent>SYSTEM@KOUNT.NET</agent>
43
+ <occurred>2018-05-18 06:47:47.413756</occurred>
44
+ </event>
45
+ XML
46
+
47
+ Nokogiri::XML.parse(xml).children.first
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,48 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Kount
5
+ class OrderFraudUpdateServiceTest < Workarea::TestCase
6
+ setup :setup_sandbox_credentials
7
+ teardown :restore_credentials
8
+
9
+ def test_update_with_auth
10
+ VCR.use_cassette('kount/order_fraud_update') do
11
+ checkout = create_purchasable_checkout(order: {
12
+ kount_session_id: '12345666',
13
+ ip_address: '170.115.187.68'
14
+ })
15
+
16
+ assert(checkout.place_order)
17
+
18
+ update_response = OrderFraudUpdateService.new(
19
+ order: checkout.order,
20
+ payment: checkout.payment
21
+ ).perform!
22
+
23
+ assert(update_response.success?)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def setup_sandbox_credentials
30
+ @_old_credentials = Workarea::Kount.credentials
31
+
32
+ Rails.application.secrets.kount = {
33
+ merchant_id: '200755',
34
+ version: '0630',
35
+ key: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIyMDA3NTUiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTAwNDA3NTE1LCJzY3AiOnsia2EiOm51bGwsImtjIjpudWxsLCJhcGkiOnRydWUsInJpcyI6dHJ1ZX19.1YwTR1G8qBQ_TDK8MBYxDB2EhpUD0IlwWdvqHVOnm0o',
36
+ ksalt: '4077th hawkeye trapper radar section-8',
37
+ is_test: true
38
+ }
39
+
40
+ Workarea.config.fraud_analyzer = 'Workarea::Checkout::Fraud::KountAnalyzer'
41
+ end
42
+
43
+ def restore_credentials
44
+ Rails.application.secrets.kount = @_old_credentials
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,27 @@
1
+ module Workarea
2
+ module KountApiConfig
3
+ def self.included(test)
4
+ super
5
+ test.setup :set_kount_credentials
6
+ test.teardown :reset_kount_credentials
7
+ end
8
+
9
+ private
10
+
11
+ def set_kount_credentials
12
+ @_old_credentials = Workarea::Kount.credentials
13
+
14
+ Rails.application.secrets.kount = {
15
+ merchant_id: '200755',
16
+ version: '0630',
17
+ key: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIyMDA3NTUiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTAwNDA3NTE1LCJzY3AiOnsia2EiOm51bGwsImtjIjpudWxsLCJhcGkiOnRydWUsInJpcyI6dHJ1ZX19.1YwTR1G8qBQ_TDK8MBYxDB2EhpUD0IlwWdvqHVOnm0o',
18
+ ksalt: '4077th hawkeye trapper radar section-8',
19
+ is_test: true
20
+ }
21
+ end
22
+
23
+ def reset_kount_credentials
24
+ Rails.application.secrets.kount = @_old_credentials
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,72 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ class KountSystemTest < Workarea::SystemTest
5
+ include Admin::IntegrationTest
6
+
7
+ def test_review_orders_are_index_in_admin_search
8
+ checkout = create_purchasable_checkout
9
+
10
+ checkout.order.update_attributes!(kount_decision: :review)
11
+ assert(checkout.handle_kount_review)
12
+
13
+ visit admin.root_path
14
+ fill_in 'q', with: checkout.order.id
15
+ click_button 'search_admin'
16
+
17
+ assert page.has_content? checkout.order.id
18
+ end
19
+
20
+ def test_decline_orders_are_index_in_admin_search
21
+ checkout = create_purchasable_checkout
22
+
23
+ checkout.order.update_attributes!(kount_decision: :decline)
24
+
25
+ visit admin.root_path
26
+ fill_in 'q', with: checkout.order.id
27
+ click_button 'search_admin'
28
+
29
+ assert page.has_content? checkout.order.id
30
+ end
31
+
32
+ def test_review_order_payments_have_kount_review_state
33
+ checkout = create_purchasable_checkout
34
+
35
+ checkout.order.update_attributes!(kount_decision: :review)
36
+ assert(checkout.handle_kount_review)
37
+
38
+ visit admin.order_path checkout.order
39
+
40
+ refute page.has_content? 'Pending'
41
+ assert page.has_content? 'Kount Review'
42
+ end
43
+
44
+ def test_decline_order_payments_have_kount_declined_state
45
+ checkout = create_purchasable_checkout
46
+
47
+ checkout.order.update_attributes!(kount_decision: :decline)
48
+
49
+ visit admin.order_path checkout.order
50
+
51
+ refute page.has_content? 'Pending'
52
+ assert page.has_content? 'Kount Declined'
53
+ end
54
+
55
+ def test_viewing_order_kount_card
56
+ checkout = create_purchasable_checkout
57
+
58
+ _kount_order = create_kount_order(id: checkout.order.id)
59
+
60
+ checkout.order.update_attributes!(kount_decision: :approve)
61
+ assert(checkout.place_order)
62
+
63
+ visit admin.kount_order_path checkout.order
64
+
65
+ assert page.has_content? t('workarea.admin.orders.cards.kount.decision')
66
+ assert page.has_content? t('workarea.admin.orders.cards.kount.score')
67
+ assert page.has_content? t('workarea.admin.orders.cards.kount.credit_cards')
68
+ assert page.has_content? t('workarea.admin.orders.cards.kount.email_addresses')
69
+ assert page.has_content? t('workarea.admin.orders.cards.kount.devices')
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Storefront
5
+ class KountGuestCheckoutSystemTest < Workarea::SystemTest
6
+ include Storefront::SystemTest
7
+
8
+ setup :setup_checkout_specs
9
+ setup :start_guest_checkout
10
+
11
+ def test_fraud_payment_failure
12
+ assert_current_path(storefront.checkout_addresses_path)
13
+ fill_in 'email', with: 'decline@workarea.com'
14
+ fill_in_shipping_address
15
+ uncheck 'same_as_shipping'
16
+ fill_in_billing_address
17
+ click_button t('workarea.storefront.checkouts.continue_to_shipping')
18
+
19
+ assert_current_path(storefront.checkout_shipping_path)
20
+ click_button t('workarea.storefront.checkouts.continue_to_payment')
21
+
22
+ assert_current_path(storefront.checkout_payment_path)
23
+ fill_in_credit_card
24
+ fill_in 'credit_card[number]', with: '1'
25
+ click_button t('workarea.storefront.checkouts.place_order')
26
+
27
+ assert_current_path(storefront.checkout_place_order_path)
28
+ assert(page.has_content?('Error'))
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,102 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module Storefront
5
+ class KountLoggedInCheckoutSystemTest < Workarea::SystemTest
6
+ include Storefront::SystemTest
7
+
8
+ def test_review_orders_are_not_still_in_cart
9
+ # setup
10
+ Workarea.config.fraud_analyzer =
11
+ 'Workarea::Checkout::Fraud::KountAnalyzer'
12
+ email = 'review@workarea.com'
13
+ create_supporting_data email: email
14
+ add_product_to_cart
15
+ add_user_data email: email
16
+ start_user_checkout email: email
17
+
18
+ click_button t('workarea.storefront.checkouts.place_order')
19
+ assert_current_path(storefront.checkout_confirmation_path)
20
+ assert(page.has_content?('Success'))
21
+ assert_equal(:review, Order.first.status)
22
+
23
+ visit storefront.cart_path
24
+
25
+ assert(page.has_no_content?('Integration Product'))
26
+ end
27
+
28
+ private
29
+
30
+ def create_supporting_data(email: 'bcrouse@workarea.com')
31
+ create_tax_category(
32
+ name: 'Sales Tax',
33
+ code: '001',
34
+ rates: [{ percentage: 0.07, country: 'US', region: 'PA' }]
35
+ )
36
+
37
+ create_shipping_service(
38
+ name: 'Ground',
39
+ tax_code: '001',
40
+ rates: [{ price: 7.to_m }]
41
+ )
42
+
43
+ create_inventory(id: 'SKU', policy: 'standard', available: 5)
44
+
45
+ @product = create_product(
46
+ id: 'INT_PRODUCT',
47
+ name: 'Integration Product',
48
+ variants: [{ sku: 'SKU', tax_code: '001', regular: 5.to_m }]
49
+ )
50
+
51
+ create_user(email: email, password: 'W3bl1nc!')
52
+ end
53
+
54
+ def add_user_data(email: 'bcrouse@workarea.com')
55
+ user = User.find_by_email email
56
+
57
+ user.auto_save_shipping_address(
58
+ first_name: 'Ben',
59
+ last_name: 'Crouse',
60
+ street: '22 S. 3rd St.',
61
+ city: 'Philadelphia',
62
+ region: 'PA',
63
+ postal_code: '19106',
64
+ country: 'US',
65
+ phone_number: '2159251800'
66
+ )
67
+
68
+ user.auto_save_billing_address(
69
+ first_name: 'Ben',
70
+ last_name: 'Crouse',
71
+ street: '1019 S. 47th St.',
72
+ city: 'Philadelphia',
73
+ region: 'PA',
74
+ postal_code: '19143',
75
+ country: 'US',
76
+ phone_number: '2159251800'
77
+ )
78
+
79
+ profile = Payment::Profile.lookup(PaymentReference.new(user))
80
+ profile.credit_cards.create!(
81
+ first_name: 'Ben',
82
+ last_name: 'Crouse',
83
+ number: '1',
84
+ month: 1,
85
+ year: Time.current.year + 1,
86
+ cvv: '999'
87
+ )
88
+ end
89
+
90
+ def start_user_checkout(email: 'bcrouse@workarea.com')
91
+ visit storefront.checkout_path
92
+ click_link t('workarea.storefront.checkouts.login_title')
93
+
94
+ within '#login_form' do
95
+ fill_in 'email', with: email
96
+ fill_in 'password', with: 'W3bl1nc!'
97
+ click_button t('workarea.storefront.users.login')
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,16 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.start 'rails' do
4
+ add_group 'View Models', 'app/view_models'
5
+ add_filter 'lib/workarea/kount/version.rb'
6
+ add_filter 'lib/workarea/mailer_previews/storefront/order_mailer_preview.rb'
7
+ add_filter 'lib/workarea/kount/bogus_gateway.rb'
8
+ add_filter %r{app/services/workarea/kount/event/.*\.rb}
9
+ end
10
+
11
+ ENV['RAILS_ENV'] = 'test'
12
+ require File.expand_path('../../test/dummy/config/environment.rb', __FILE__)
13
+ require 'rails/test_help'
14
+ require 'workarea/test_help'
15
+
16
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://risk.test.kount.net/
6
+ body:
7
+ encoding: UTF-8
8
+ string: MACK=Y&AUTH=A&SESS=12345666&MODE=Q&SITE=DEFAULT&S2A1=22+S.+3rd+St.&S2A2=Second+Floor&S2CI=Philadelphia&S2ST=PA&S2PC=19106&S2CC=US&S2PN&B2A1=22+S.+3rd+St.&B2A2=Second+Floor&B2CI=Philadelphia&B2ST=PA&B2PC=19106&B2CC=US&B2PN&PTYP=CARD&PTOK=411111WMS5YA6FUZA1KC&PENC=KHASH&SHTP=ST&TOTL=1100&CURR=USD&EMAL=bcrouse-new%40workarea.com&NAME=Ben+Crouse&IPAD=170.115.187.68&ORDR=21405EF57F&PROD_TYPE[]=Test+Product&PROD_DESC[]=Test+Product+-+&PROD_ITEM[]=SKU&PROD_PRICE[]=500&PROD_QUANT[]=2&VERS=0630&MERC=200755&FRMT=JSON
9
+ headers:
10
+ Accept:
11
+ - "*/*"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - rest-client/2.0.2 (darwin17.4.0 x86_64) ruby/2.4.4p296
16
+ X-Kount-Api-Key:
17
+ - eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIyMDA3NTUiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTAwNDA3NTE1LCJzY3AiOnsia2EiOm51bGwsImtjIjpudWxsLCJhcGkiOnRydWUsInJpcyI6dHJ1ZX19.1YwTR1G8qBQ_TDK8MBYxDB2EhpUD0IlwWdvqHVOnm0o
18
+ Content-Length:
19
+ - '512'
20
+ Content-Type:
21
+ - application/x-www-form-urlencoded
22
+ Host:
23
+ - risk.test.kount.net
24
+ response:
25
+ status:
26
+ code: 200
27
+ message: OK
28
+ headers:
29
+ Date:
30
+ - Fri, 01 Jun 2018 12:44:28 GMT
31
+ Server:
32
+ - Apache
33
+ Content-Length:
34
+ - '941'
35
+ Content-Type:
36
+ - text/plain;charset=UTF-8
37
+ body:
38
+ encoding: UTF-8
39
+ string: '{"VERS":"0630","MODE":"Q","TRAN":"7J1X0DS1H8VX","MERC":"200755","SESS":"12345666","ORDR":"21405EF57F","AUTO":"A","SCOR":"34","GEOX":"US","BRND":"VISA","REGN":"US_PA","NETW":"N","KAPT":"N","CARDS":"1","DEVICES":"1","EMAILS":"1","VELO":"0","VMAX":"0","SITE":"DEFAULT","DEVICE_LAYERS":"....","FINGERPRINT":null,"TIMEZONE":null,"LOCALTIME":"
40
+ ","REGION":null,"COUNTRY":null,"PROXY":null,"JAVASCRIPT":null,"FLASH":null,"COOKIES":null,"HTTP_COUNTRY":null,"LANGUAGE":null,"MOBILE_DEVICE":null,"MOBILE_TYPE":null,"MOBILE_FORWARDER":null,"VOICE_DEVICE":null,"PC_REMOTE":null,"RULES_TRIGGERED":0,"COUNTERS_TRIGGERED":0,"REASON_CODE":null,"MASTERCARD":"","DDFS":null,"DSR":null,"UAS":null,"BROWSER":null,"OS":null,"PIP_IPAD":null,"PIP_LAT":null,"PIP_LON":null,"PIP_COUNTRY":null,"PIP_REGION":null,"PIP_CITY":null,"PIP_ORG":null,"IP_IPAD":null,"IP_LAT":null,"IP_LON":null,"IP_COUNTRY":null,"IP_REGION":null,"IP_CITY":null,"IP_ORG":null,"WARNING_COUNT":0}'
41
+ http_version:
42
+ recorded_at: Fri, 01 Jun 2018 12:44:29 GMT
43
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,84 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://esqa.moneris.com/gateway2/servlet/MpgRequest
6
+ body:
7
+ encoding: UTF-8
8
+ string: "<request><store_id>monca02501</store_id><api_token>YSI4CKbdvgSbr6is4JMZ</api_token><res_add_cc><pan>4111111111111111</pan><expdate>2101</expdate><crypt_type>7</crypt_type></res_add_cc></request>"
9
+ headers:
10
+ Content-Type:
11
+ - application/x-www-form-urlencoded
12
+ Connection:
13
+ - close
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ User-Agent:
19
+ - Ruby
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Mon, 21 Sep 2020 18:36:53 GMT
27
+ X-Ua-Compatible:
28
+ - IE=Edge
29
+ Connection:
30
+ - close
31
+ Content-Type:
32
+ - text/html
33
+ Set-Cookie:
34
+ - TS019df888=015d06d254c8e6a1d7fac341c1d4e33abe70a8558e0ccc0b192b395eae3c6553e67eff9305bf693eec83c3b5c4a6904a092912b70d;
35
+ Path=/; Domain=.esqa.moneris.com; Secure
36
+ Transfer-Encoding:
37
+ - chunked
38
+ body:
39
+ encoding: UTF-8
40
+ string: <?xml version="1.0"?><response><receipt><DataKey>xoYWod1B0UxAR16TkhVX48yy1</DataKey><ReceiptId>null</ReceiptId><ReferenceNum>null</ReferenceNum><ResponseCode>001</ResponseCode><ISO>null</ISO><AuthCode>null</AuthCode><Message>Successfully
41
+ registered CC details.</Message><TransTime>14:36:53</TransTime><TransDate>2020-09-21</TransDate><TransType>null</TransType><Complete>true</Complete><TransAmount>null</TransAmount><CardType>null</CardType><TransID>null</TransID><TimedOut>false</TimedOut><CorporateCard>null</CorporateCard><RecurSuccess>null</RecurSuccess><AvsResultCode>null</AvsResultCode><CvdResultCode>null</CvdResultCode><ResSuccess>true</ResSuccess><PaymentType>cc</PaymentType><IsVisaDebit>null</IsVisaDebit><ResolveData><cust_id></cust_id><phone></phone><email></email><note></note><avs_street_number></avs_street_number><avs_street_name></avs_street_name><avs_zipcode></avs_zipcode><masked_pan>4111***1111</masked_pan><expdate>2101</expdate><crypt_type>7</crypt_type></ResolveData></receipt></response>
42
+ http_version:
43
+ recorded_at: Mon, 21 Sep 2020 18:36:53 GMT
44
+ - request:
45
+ method: post
46
+ uri: https://esqa.moneris.com/gateway2/servlet/MpgRequest
47
+ body:
48
+ encoding: UTF-8
49
+ string: "<request><store_id>monca02501</store_id><api_token>YSI4CKbdvgSbr6is4JMZ</api_token><res_preauth_cc><data_key>xoYWod1B0UxAR16TkhVX48yy1</data_key><order_id>10E81C2F22_2020_09_21_14_36_53</order_id><amount>11.00</amount><crypt_type>7</crypt_type></res_preauth_cc></request>"
50
+ headers:
51
+ Content-Type:
52
+ - application/x-www-form-urlencoded
53
+ Connection:
54
+ - close
55
+ Accept-Encoding:
56
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
57
+ Accept:
58
+ - "*/*"
59
+ User-Agent:
60
+ - Ruby
61
+ response:
62
+ status:
63
+ code: 200
64
+ message: OK
65
+ headers:
66
+ Date:
67
+ - Mon, 21 Sep 2020 18:36:53 GMT
68
+ X-Ua-Compatible:
69
+ - IE=Edge
70
+ Connection:
71
+ - close
72
+ Content-Type:
73
+ - text/html
74
+ Set-Cookie:
75
+ - TS019df888=015d06d254daf1e5ced1dfa9a9f751e875b1a340424965c106769e0b65f63995477863bf6c92883aeea931bb04844a8552f4a366df;
76
+ Path=/; Domain=.esqa.moneris.com; Secure
77
+ Transfer-Encoding:
78
+ - chunked
79
+ body:
80
+ encoding: UTF-8
81
+ string: <?xml version="1.0"?><response><receipt><DataKey>xoYWod1B0UxAR16TkhVX48yy1</DataKey><ReceiptId>10E81C2F22_2020_09_21_14_36_53</ReceiptId><ReferenceNum>660189810010090010</ReferenceNum><ResponseCode>027</ResponseCode><ISO>01</ISO><AuthCode>938169</AuthCode><Message>APPROVED * =</Message><TransTime>14:36:53</TransTime><TransDate>2020-09-21</TransDate><TransType>01</TransType><Complete>true</Complete><TransAmount>11.00</TransAmount><CardType>V</CardType><TransID>159-0_15</TransID><TimedOut>false</TimedOut><CorporateCard>false</CorporateCard><RecurSuccess>null</RecurSuccess><AvsResultCode>null</AvsResultCode><CvdResultCode>null</CvdResultCode><ResSuccess>true</ResSuccess><PaymentType>cc</PaymentType><IsVisaDebit>false</IsVisaDebit><ResolveData><cust_id></cust_id><phone></phone><email></email><note></note><expdate>2101</expdate><masked_pan>4111***1111</masked_pan><crypt_type>7</crypt_type><avs_street_number></avs_street_number><avs_street_name></avs_street_name><avs_zipcode></avs_zipcode></ResolveData></receipt></response>
82
+ http_version:
83
+ recorded_at: Mon, 21 Sep 2020 18:36:54 GMT
84
+ recorded_with: VCR 2.9.3