fat_zebra 3.1.0 → 3.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (197) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.travis.yml +2 -1
  4. data/README.md +5 -5
  5. data/fat_zebra.gemspec +4 -6
  6. data/lib/fat_zebra.rb +8 -0
  7. data/lib/fat_zebra/authenticate.rb +64 -0
  8. data/lib/fat_zebra/card.rb +1 -0
  9. data/lib/fat_zebra/paypal/authorization.rb +49 -0
  10. data/lib/fat_zebra/paypal/billing_agreement.rb +56 -0
  11. data/lib/fat_zebra/paypal/capture.rb +36 -0
  12. data/lib/fat_zebra/paypal/order.rb +22 -0
  13. data/lib/fat_zebra/paypal/refund.rb +22 -0
  14. data/lib/fat_zebra/purchase.rb +23 -0
  15. data/lib/fat_zebra/util.rb +1 -1
  16. data/lib/fat_zebra/version.rb +1 -1
  17. data/spec/cassettes/FatZebra_Authenticate/_authenticate/validations/1_3_5_1.yml +46 -0
  18. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_1.yml +90 -0
  19. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_2.yml +90 -0
  20. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_1.yml +90 -0
  21. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_2.yml +90 -0
  22. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_1.yml +90 -0
  23. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_2.yml +87 -0
  24. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_3.yml +92 -0
  25. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_4.yml +91 -0
  26. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_type_validation/1_3_4_1.yml +46 -0
  27. data/spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_invalid/returns_error_when_invalid_token.yml +47 -0
  28. data/spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_valid/decodes_JWT.yml +87 -0
  29. data/spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_given_params.yml +44 -0
  30. data/spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_no_amount.yml +44 -0
  31. data/spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_amount_is_invalid.yml +44 -0
  32. data/spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_currency_is_invalid.yml +46 -0
  33. data/spec/cassettes/FatZebra_BankAccount/_create/1_1_1.yml +8 -14
  34. data/spec/cassettes/FatZebra_BankAccount/_create/1_1_2.yml +8 -14
  35. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_1.yml +30 -30
  36. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_2.yml +30 -30
  37. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_3.yml +30 -30
  38. data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_1.yml +11 -17
  39. data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_2.yml +11 -17
  40. data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_1.yml +11 -17
  41. data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_2.yml +11 -17
  42. data/spec/cassettes/FatZebra_Batch/_find/1_2_1.yml +19 -31
  43. data/spec/cassettes/FatZebra_Batch/_find/1_2_2.yml +19 -31
  44. data/spec/cassettes/FatZebra_Batch/_result/1_4_1.yml +26 -44
  45. data/spec/cassettes/FatZebra_Batch/_search/1_3_1.yml +6 -6
  46. data/spec/cassettes/FatZebra_Batch/_search/1_3_2.yml +6 -6
  47. data/spec/cassettes/FatZebra_Batch/_search/1_3_3.yml +6 -6
  48. data/spec/cassettes/FatZebra_Card/_create/1_1_1.yml +7 -13
  49. data/spec/cassettes/FatZebra_Card/_create/1_1_2.yml +7 -13
  50. data/spec/cassettes/FatZebra_Card/_create/1_1_3.yml +7 -13
  51. data/spec/cassettes/FatZebra_Card/_create/1_1_4.yml +7 -13
  52. data/spec/cassettes/FatZebra_Card/_create/1_1_5.yml +7 -13
  53. data/spec/cassettes/FatZebra_Card/_create/1_1_6.yml +7 -13
  54. data/spec/cassettes/FatZebra_Card/_find/1_3_1.yml +111 -0
  55. data/spec/cassettes/FatZebra_Card/_find/1_3_2.yml +111 -0
  56. data/spec/cassettes/FatZebra_Card/_update/1_2_1.yml +15 -27
  57. data/spec/cassettes/FatZebra_Card/_update/1_2_2.yml +15 -27
  58. data/spec/cassettes/FatZebra_Card/_update/1_2_3.yml +15 -27
  59. data/spec/cassettes/FatZebra_Card/_update/validations/1_2_4_1.yml +7 -13
  60. data/spec/cassettes/FatZebra_Customer/_create/1_1_1.yml +9 -15
  61. data/spec/cassettes/FatZebra_Customer/_create/1_1_2.yml +9 -15
  62. data/spec/cassettes/FatZebra_Customer/_create/1_1_3.yml +9 -15
  63. data/spec/cassettes/FatZebra_Customer/_create/1_1_4.yml +9 -15
  64. data/spec/cassettes/FatZebra_Customer/_create/1_1_5.yml +9 -15
  65. data/spec/cassettes/FatZebra_Customer/_create/1_1_6.yml +9 -15
  66. data/spec/cassettes/FatZebra_Customer/_delete/1_5_1.yml +18 -30
  67. data/spec/cassettes/FatZebra_Customer/_find/1_3_1.yml +18 -30
  68. data/spec/cassettes/FatZebra_Customer/_find/1_3_2.yml +18 -30
  69. data/spec/cassettes/FatZebra_Customer/_search/1_2_1.yml +12 -16
  70. data/spec/cassettes/FatZebra_Customer/_search/1_2_2.yml +12 -16
  71. data/spec/cassettes/FatZebra_Customer/_search/1_2_3.yml +12 -16
  72. data/spec/cassettes/FatZebra_Customer/_update/1_4_1.yml +19 -31
  73. data/spec/cassettes/FatZebra_Customer/_update/1_4_2.yml +19 -31
  74. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_1.yml +8 -14
  75. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_2.yml +8 -14
  76. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_3.yml +8 -14
  77. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_4.yml +8 -14
  78. data/spec/cassettes/FatZebra_DirectCredit/_create/validations/valid/1_1_5_1_1.yml +7 -13
  79. data/spec/cassettes/FatZebra_DirectCredit/_delete/1_4_1.yml +16 -28
  80. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_1.yml +16 -28
  81. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_2.yml +16 -28
  82. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_3.yml +13 -13
  83. data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_1.yml +20 -20
  84. data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_2.yml +20 -20
  85. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_1.yml +8 -14
  86. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_2.yml +8 -14
  87. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_3.yml +8 -14
  88. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_4.yml +8 -14
  89. data/spec/cassettes/FatZebra_DirectDebit/_create/validations/valid/1_1_5_1_1.yml +7 -13
  90. data/spec/cassettes/FatZebra_DirectDebit/_delete/1_4_1.yml +16 -28
  91. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_1.yml +16 -28
  92. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_2.yml +16 -28
  93. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_3.yml +13 -13
  94. data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_1.yml +20 -20
  95. data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_2.yml +20 -20
  96. data/spec/cassettes/FatZebra_Information/_ping/1_1_1.yml +7 -13
  97. data/spec/cassettes/FatZebra_Information/_ping/1_1_2.yml +7 -13
  98. data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_1.yml +48 -48
  99. data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_2.yml +48 -48
  100. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_1.yml +20 -20
  101. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_2.yml +20 -20
  102. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_3.yml +20 -20
  103. data/spec/cassettes/FatZebra_PaymentPlan/_delete/1_5_1.yml +28 -28
  104. data/spec/cassettes/FatZebra_PaymentPlan/_destroy/1_6_1.yml +28 -28
  105. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_1.yml +32 -32
  106. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_2.yml +32 -32
  107. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_3.yml +32 -32
  108. data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_1.yml +34 -34
  109. data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_2.yml +34 -34
  110. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_1.yml +28 -28
  111. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_2.yml +28 -28
  112. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_3.yml +28 -28
  113. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_1.yml +34 -34
  114. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_2.yml +34 -34
  115. data/spec/cassettes/FatZebra_Paypal_Authorization/_capture/returns_a_new_capture_record.yml +45 -0
  116. data/spec/cassettes/FatZebra_Paypal_Authorization/_find/when_found/returns_authorization.yml +46 -0
  117. data/spec/cassettes/FatZebra_Paypal_Authorization/_search/with_date_filter/returns_records_created_after_start_date.yml +46 -0
  118. data/spec/cassettes/FatZebra_Paypal_Authorization/_void/returns_a_voided_capture_record.yml +44 -0
  119. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_charge/Valid_payload/returns_a_new_order_record.yml +48 -0
  120. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_find/when_found/returns_billing_agreement.yml +48 -0
  121. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_search/with_date_filter/returns_records_created_after_start_date.yml +48 -0
  122. data/spec/cassettes/FatZebra_Paypal_Capture/_find/when_found/returns_capture.yml +47 -0
  123. data/spec/cassettes/FatZebra_Paypal_Capture/_refund/returns_a_new_refund_record.yml +45 -0
  124. data/spec/cassettes/FatZebra_Paypal_Capture/_search/with_date_filter/returns_records_created_after_start_date.yml +49 -0
  125. data/spec/cassettes/FatZebra_Paypal_Order/_find/when_found/returns_order.yml +48 -0
  126. data/spec/cassettes/FatZebra_Paypal_Order/_search/with_date_filter/returns_orders_created_after_start_date.yml +55 -0
  127. data/spec/cassettes/FatZebra_Paypal_Refund/_find/when_found/returns_refund.yml +47 -0
  128. data/spec/cassettes/FatZebra_Paypal_Refund/_search/with_date_filter/returns_all_refund_records_created_after_start_date.yml +50 -0
  129. data/spec/cassettes/FatZebra_Purchase/_create/1_1_1.yml +9 -15
  130. data/spec/cassettes/FatZebra_Purchase/_create/1_1_10.yml +9 -15
  131. data/spec/cassettes/FatZebra_Purchase/_create/1_1_11.yml +9 -15
  132. data/spec/cassettes/FatZebra_Purchase/_create/1_1_12.yml +9 -15
  133. data/spec/cassettes/FatZebra_Purchase/_create/1_1_13.yml +9 -15
  134. data/spec/cassettes/FatZebra_Purchase/_create/1_1_2.yml +9 -15
  135. data/spec/cassettes/FatZebra_Purchase/_create/1_1_3.yml +9 -15
  136. data/spec/cassettes/FatZebra_Purchase/_create/1_1_4.yml +9 -15
  137. data/spec/cassettes/FatZebra_Purchase/_create/1_1_5.yml +9 -15
  138. data/spec/cassettes/FatZebra_Purchase/_create/1_1_6.yml +9 -15
  139. data/spec/cassettes/FatZebra_Purchase/_create/1_1_7.yml +9 -15
  140. data/spec/cassettes/FatZebra_Purchase/_create/1_1_8.yml +9 -15
  141. data/spec/cassettes/FatZebra_Purchase/_create/1_1_9.yml +9 -15
  142. data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_1.yml +11 -17
  143. data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_2.yml +11 -17
  144. data/spec/cassettes/FatZebra_Purchase/_extend_/1_9_1.yml +109 -0
  145. data/spec/cassettes/FatZebra_Purchase/_extend_/1_9_2.yml +109 -0
  146. data/spec/cassettes/FatZebra_Purchase/_extend_/1_9_3.yml +109 -0
  147. data/spec/cassettes/FatZebra_Purchase/_increment/1_10_1.yml +109 -0
  148. data/spec/cassettes/FatZebra_Purchase/_increment/1_10_2.yml +109 -0
  149. data/spec/cassettes/FatZebra_Purchase/_increment/1_10_3.yml +109 -0
  150. data/spec/cassettes/FatZebra_Purchase/_increment/1_10_4.yml +109 -0
  151. data/spec/cassettes/FatZebra_Purchase/_void/1_6_1.yml +18 -30
  152. data/spec/cassettes/FatZebra_Purchase/_void/1_6_2.yml +18 -30
  153. data/spec/cassettes/FatZebra_Purchase/_void/1_6_3.yml +18 -30
  154. data/spec/cassettes/FatZebra_Purchase/_void/1_6_4.yml +18 -30
  155. data/spec/cassettes/FatZebra_Purchase/_void/1_7_1.yml +18 -30
  156. data/spec/cassettes/FatZebra_Purchase/_void/1_7_2.yml +18 -30
  157. data/spec/cassettes/FatZebra_Purchase/_void/1_7_3.yml +18 -30
  158. data/spec/cassettes/FatZebra_Purchase/_void/1_7_4.yml +18 -30
  159. data/spec/cassettes/FatZebra_Refund/_create/1_1_1.yml +16 -16
  160. data/spec/cassettes/FatZebra_Refund/_create/1_1_10.yml +16 -16
  161. data/spec/cassettes/FatZebra_Refund/_create/1_1_2.yml +16 -16
  162. data/spec/cassettes/FatZebra_Refund/_create/1_1_3.yml +16 -16
  163. data/spec/cassettes/FatZebra_Refund/_create/1_1_4.yml +16 -16
  164. data/spec/cassettes/FatZebra_Refund/_create/1_1_5.yml +16 -16
  165. data/spec/cassettes/FatZebra_Refund/_create/1_1_6.yml +16 -16
  166. data/spec/cassettes/FatZebra_Refund/_create/1_1_7.yml +16 -16
  167. data/spec/cassettes/FatZebra_Refund/_create/1_1_8.yml +16 -16
  168. data/spec/cassettes/FatZebra_Refund/_create/1_1_9.yml +16 -16
  169. data/spec/cassettes/FatZebra_Refund/_find/1_2_1.yml +24 -24
  170. data/spec/cassettes/FatZebra_Refund/_find/1_2_2.yml +24 -24
  171. data/spec/cassettes/FatZebra_Refund/_find/1_2_3.yml +24 -24
  172. data/spec/cassettes/FatZebra_Refund/_search/responds_with_the_newly-created_refunds.yml +40 -40
  173. data/spec/cassettes/FatZebra_Refund/_void/1_4_1.yml +24 -24
  174. data/spec/cassettes/FatZebra_Refund/_void/1_4_2.yml +24 -24
  175. data/spec/cassettes/FatZebra_Refund/_void/1_4_3.yml +24 -24
  176. data/spec/cassettes/FatZebra_Refund/_void/1_4_4.yml +24 -24
  177. data/spec/cassettes/FatZebra_WebHook/_create/1_1_1.yml +7 -13
  178. data/spec/cassettes/FatZebra_WebHook/_create/1_1_2.yml +7 -13
  179. data/spec/cassettes/FatZebra_WebHook/_create/1_1_3.yml +7 -13
  180. data/spec/cassettes/FatZebra_WebHook/_delete/1_4_1.yml +15 -27
  181. data/spec/cassettes/FatZebra_WebHook/_search/1_2_1.yml +160 -133
  182. data/spec/cassettes/FatZebra_WebHook/_search/1_2_2.yml +162 -135
  183. data/spec/cassettes/FatZebra_WebHook/_update/1_3_1.yml +15 -27
  184. data/spec/cassettes/FatZebra_WebHook/_update/1_3_2.yml +15 -27
  185. data/spec/lib/fat_zebra/authenticate_spec.rb +187 -0
  186. data/spec/lib/fat_zebra/card_spec.rb +8 -0
  187. data/spec/lib/fat_zebra/paypal/authorization_spec.rb +79 -0
  188. data/spec/lib/fat_zebra/paypal/billing_agreement_spec.rb +62 -0
  189. data/spec/lib/fat_zebra/paypal/capture_spec.rb +60 -0
  190. data/spec/lib/fat_zebra/paypal/order_spec.rb +35 -0
  191. data/spec/lib/fat_zebra/paypal/refund_spec.rb +36 -0
  192. data/spec/lib/fat_zebra/purchase_spec.rb +21 -3
  193. data/spec/lib/fat_zebra/refund_spec.rb +1 -1
  194. data/spec/spec_helper.rb +0 -1
  195. data/spec/support/payloads.rb +135 -0
  196. metadata +61 -12
  197. data/spec/cassettes/FatZebra_DirectDebit/_create/validations/failed_with_non-float/1_1_5_3_1.yml +0 -52
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::BillingAgreement do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:billing_agreement) { FatZebra::Paypal::BillingAgreement.find(id) }
7
+
8
+ context 'when found' do
9
+ let(:id) { '071-PBA-PYG1L6M4CV4DYHTZ' }
10
+
11
+ it 'returns billing_agreement' do
12
+ expect(billing_agreement).to be_accepted
13
+ expect(billing_agreement.id).to eq(id)
14
+ end
15
+ end
16
+ end
17
+
18
+ describe '.search', :vcr do
19
+ context 'with date filter' do
20
+ subject(:billing_agreements) { FatZebra::Paypal::BillingAgreement.search(from: start) }
21
+
22
+ let(:start) { Date.parse('2020-08-05') }
23
+
24
+ it 'returns records created after start date' do
25
+ created_date_check = billing_agreements.data.map { |rec| DateTime.strptime(rec.created_at, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
26
+
27
+ is_expected.to be_accepted
28
+
29
+ expect(billing_agreements.data).to be_a(Array)
30
+ expect(billing_agreements.data.first).to be_a(FatZebra::Paypal::BillingAgreement)
31
+ expect(created_date_check.all?).to be(true)
32
+ end
33
+ end
34
+ end
35
+
36
+ describe '#charge', :vcr do
37
+ let(:id) { '071-PBA-PYG1L6M4CV4DYHTZ' }
38
+
39
+ context 'Valid payload' do
40
+ subject(:charge) { FatZebra::Paypal::BillingAgreement.charge(id, valid_charge_billing_agreement_payload) }
41
+
42
+ it 'returns a new order record' do
43
+ is_expected.to be_accepted
44
+ is_expected.to be_successful
45
+
46
+ expect(charge).to be_a(FatZebra::Paypal::Order)
47
+ expect(charge.billing_agreement_id).to eq(id)
48
+ expect(charge.payment_source).to eq('BILLING_AGREEMENT')
49
+ expect(charge.id).to include('PPO')
50
+ expect(charge.captures.count).to eq(1)
51
+ end
52
+ end
53
+
54
+ context 'Invalid payload' do
55
+ subject(:charge) { FatZebra::Paypal::BillingAgreement.charge(id, {}) }
56
+
57
+ it 'failed to execute call' do
58
+ expect{ charge }.to raise_error(FatZebra::RequestValidationError)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::Capture do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:capture) { FatZebra::Paypal::Capture.find(capture_id) }
7
+
8
+ context 'when found' do
9
+ let(:capture_id) { '071-PPC-TUOHT8YJHBY7SBJU' }
10
+
11
+ it 'returns capture' do
12
+ expect(capture).to be_accepted
13
+ expect(capture.id).to eq(capture_id)
14
+ expect(capture.order).to include('PPO')
15
+ end
16
+ end
17
+ end
18
+
19
+ describe '.search', :vcr do
20
+ context 'with date filter' do
21
+ subject(:captures) { FatZebra::Paypal::Capture.search(from: start) }
22
+
23
+ let(:start) { Date.parse('2020-08-05') }
24
+
25
+ it 'returns records created after start date' do
26
+ created_date_check = captures.data.map { |rec| DateTime.strptime(rec.transaction_date, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
27
+
28
+ is_expected.to be_accepted
29
+
30
+ expect(captures.data).to be_a(Array)
31
+ expect(captures.data.first).to be_a(FatZebra::Paypal::Capture)
32
+ expect(created_date_check.all?).to be(true)
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#refund', :vcr do
38
+ subject(:refund_record) { FatZebra::Paypal::Capture.refund(capture_id, params_for_refund) }
39
+
40
+ let(:capture_id) { '071-PPC-TUOHT8YJHBY7SBJU' }
41
+ let(:refund_amount) { 100 }
42
+ let(:params_for_refund) do
43
+ {
44
+ amount: refund_amount,
45
+ note_to_payer: 'test note'
46
+ }
47
+ end
48
+
49
+ it 'returns a new refund record' do
50
+ is_expected.to be_accepted
51
+ is_expected.to be_successful
52
+
53
+ expect(refund_record).to be_a(FatZebra::Paypal::Refund)
54
+ expect(refund_record.amount).to eq(refund_amount)
55
+ expect(refund_record.note_to_payer).to eq('test note')
56
+ expect(refund_record.id).to include('PPR')
57
+ expect(refund_record.order).to include('PPO')
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::Order do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:order) { FatZebra::Paypal::Order.find(order_id) }
7
+
8
+ context 'when found' do
9
+ let(:order_id) { '071-PPO-U7RRMGM3OY3V2ZMN' }
10
+
11
+ it 'returns order' do
12
+ expect(order).to be_accepted
13
+ expect(order.id).to eq(order_id)
14
+ end
15
+ end
16
+ end
17
+
18
+ describe '.search', :vcr do
19
+ context 'with date filter' do
20
+ subject(:orders) { FatZebra::Paypal::Order.search(from: start) }
21
+
22
+ let(:start) { Date.parse('2020-08-05') }
23
+
24
+ it 'returns orders created after start date' do
25
+ created_date_check = orders.data.map { |rec| DateTime.strptime(rec.transaction_date, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
26
+
27
+ is_expected.to be_accepted
28
+
29
+ expect(orders.data).to be_a(Array)
30
+ expect(orders.data.first).to be_a(FatZebra::Paypal::Order)
31
+ expect(created_date_check.all?).to be(true)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::Refund do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:refund) { FatZebra::Paypal::Refund.find(refund_id) }
7
+
8
+ context 'when found' do
9
+ let(:refund_id) { '071-PPR-SRR9FP7ZKXT9IXU3' }
10
+
11
+ it 'returns refund' do
12
+ expect(refund).to be_accepted
13
+ expect(refund.id).to eq(refund_id)
14
+ expect(refund.order).to include('PPO')
15
+ end
16
+ end
17
+ end
18
+
19
+ describe '.search', :vcr do
20
+ context 'with date filter' do
21
+ subject(:refunds) { FatZebra::Paypal::Refund.search(from: start) }
22
+
23
+ let(:start) { Date.parse('2020-08-05') }
24
+
25
+ it 'returns all refund records created after start date' do
26
+ created_date_check = refunds.data.map { |rec| DateTime.strptime(rec.transaction_date, '%Y-%m-%dT%H:%M:%S%z').iso8601 >= start.iso8601 }
27
+
28
+ is_expected.to be_accepted
29
+
30
+ expect(refunds.data).to be_a(Array)
31
+ expect(refunds.data.first).to be_a(FatZebra::Paypal::Refund)
32
+ expect(created_date_check.all?).to be(true)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -16,7 +16,7 @@ describe FatZebra::Purchase do
16
16
  it { expect(purchase.card_category).to eq('Credit') }
17
17
  it { expect(purchase.card_token).to_not be_empty }
18
18
  it { expect(purchase.addendum_data).to eq({}) }
19
- it { expect(purchase.metadata).to eq({}) }
19
+ it { expect(purchase.metadata).to eq({ "authorization_tracking_id" => "", "original_transaction_reference" => "" }) }
20
20
  it { expect(purchase.response_code).to eq('00') }
21
21
 
22
22
  context 'bad request' do
@@ -77,7 +77,7 @@ describe FatZebra::Purchase do
77
77
  subject(:void) { FatZebra::Purchase.void(purchase.id) }
78
78
 
79
79
  it { is_expected.to be_accepted }
80
- it { is_expected.to_not be_successful }
80
+ it { is_expected.to be_successful }
81
81
  it { expect(void.message).to eq('Voided') }
82
82
  it { expect(void).to be_a(FatZebra::Purchase) }
83
83
  end
@@ -87,7 +87,7 @@ describe FatZebra::Purchase do
87
87
  before { expect(purchase.void).to be_truthy }
88
88
 
89
89
  it { is_expected.to be_accepted }
90
- it { is_expected.to_not be_successful }
90
+ it { is_expected.to be_successful }
91
91
  it { expect(purchase.message).to eq('Voided') }
92
92
  it { expect(purchase).to be_a(FatZebra::Purchase) }
93
93
  end
@@ -102,4 +102,22 @@ describe FatZebra::Purchase do
102
102
  it { expect(settlement.data.first).to be_a(FatZebra::Purchase) }
103
103
  end
104
104
 
105
+ describe '#extend!', :vcr do
106
+ let(:purchase) { FatZebra::Purchase.create(valid_purchase_payload.merge(capture: false)) }
107
+ subject(:extend) { purchase.extend! }
108
+
109
+ it { is_expected.to be_accepted }
110
+ it { is_expected.to be_successful }
111
+ it { expect(extend).to be_a(FatZebra::Purchase) }
112
+ end
113
+
114
+ describe '#increment', :vcr do
115
+ let(:purchase) { FatZebra::Purchase.create(valid_purchase_payload.merge(capture: false)) }
116
+ subject(:increment) { purchase.increment!(200) }
117
+
118
+ it { is_expected.to be_accepted }
119
+ it { is_expected.to be_successful }
120
+ it { expect(increment).to be_a(FatZebra::Purchase) }
121
+ it { expect(increment.amount).to eq(valid_purchase_payload[:amount] + 200) }
122
+ end
105
123
  end
@@ -72,7 +72,7 @@ describe FatZebra::Refund do
72
72
  let(:reference) { purchase.reference }
73
73
 
74
74
  it { is_expected.to be_accepted }
75
- it { is_expected.to_not be_successful }
75
+ it { is_expected.to be_successful }
76
76
  it { expect(refund.message).to eq('Voided') }
77
77
  it { expect(refund).to be_a(FatZebra::Refund) }
78
78
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
- require 'pry'
4
3
  require 'rspec'
5
4
  require 'vcr'
6
5
  require 'webmock/rspec'
@@ -40,4 +40,139 @@ shared_context 'payloads' do
40
40
  }
41
41
  }}
42
42
 
43
+ let(:valid_sca_enrollment_payload) {{
44
+ customer: {
45
+ address_1: '23 Smith Road',
46
+ address_2: 'North Shore',
47
+ city: 'Canberra',
48
+ country: 'AU',
49
+ state: 'NSW',
50
+ email: 'test@test.com',
51
+ first_name: 'James',
52
+ last_name: 'Smith',
53
+ phone_number: '0444555666',
54
+ post_code: '2000',
55
+ passport_number: 'X1234567890',
56
+ passport_country: '036',
57
+ account_changed_at: '20191210',
58
+ account_created_at: '20191210',
59
+ account_password_changed_at: '20191210'
60
+ },
61
+ shipping_address: {
62
+ address_1: '23 Smith Road',
63
+ address_2: 'North Shore',
64
+ city: 'Sydney',
65
+ country: 'AU',
66
+ state: 'NSW',
67
+ email: 'test@test.com',
68
+ first_name: 'James',
69
+ last_name: 'Smith',
70
+ phone_number: '0444555666',
71
+ post_code: '2000',
72
+ method: 'pickup',
73
+ destination_code: '01',
74
+ },
75
+ custom: {
76
+ transaction_mode: 'mobile',
77
+ reference_id: SecureRandom.hex,
78
+
79
+ merchant_name: 'TEST',
80
+ merchant_new_customer: true,
81
+ preorder: 1,
82
+
83
+ http_accept: 'text/html',
84
+ http_user_agent: 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0',
85
+
86
+ recurring_end_date: '20201201',
87
+ recurring_frequency: 3,
88
+ recurring_original_purchase_date: '2019120112:00:00'
89
+ },
90
+ items: [
91
+ {
92
+ unit_price: 23.3,
93
+ product_description: 'Widgets',
94
+ product_name: 'Watch',
95
+ quantity: 1,
96
+ product_sku: '9999',
97
+ passenger_first_name: 'John',
98
+ passenger_last_name: 'Smith',
99
+ }
100
+ ],
101
+ airline_data: {
102
+ legs: [
103
+ {
104
+ carrier_code: 'code',
105
+ departure_date: '20221012',
106
+ destination: 'SYD',
107
+ originating_airport_code: 'MEL',
108
+ }
109
+ ],
110
+ number_of_passengers: 2,
111
+ passengers: [
112
+ {
113
+ first_name: 'John',
114
+ last_name: 'Smith',
115
+ },
116
+ {
117
+ first_name: 'Megan',
118
+ last_name: 'Doe',
119
+ }
120
+ ]
121
+ }
122
+ }}
123
+
124
+ let(:valid_sca_validation_payload) {{
125
+ authentication_transaction_id: SecureRandom.hex,
126
+ signed_pares: SecureRandom.hex
127
+ }}
128
+
129
+ let(:valid_sca_authentication_payload) {{
130
+ card_token: credit_card.token,
131
+ amount: 100,
132
+ currency: 'AUD',
133
+ customer_ip: '111.111.111.111',
134
+ sca: {
135
+ type: 'enrollment',
136
+ merchant_reference_code: SecureRandom.uuid,
137
+ }
138
+ }}
139
+
140
+ let(:valid_charge_billing_agreement_payload) {{
141
+ reference: SecureRandom.uuid,
142
+ amount: 1100,
143
+ currency: "AUD",
144
+ customer_ip: '1.2.3.4',
145
+ options: {
146
+ brand_name: "EXAMPLE INC"
147
+ },
148
+ purchases: [{
149
+ description: "Sporting Goods",
150
+ custom_id: "CUST-HighFashions",
151
+ soft_descriptor: "HighFashions",
152
+ amount: {
153
+ item_total: 900,
154
+ shipping: 200
155
+ },
156
+ items: [{
157
+ name: "T-Shirt",
158
+ unit_amount: 900,
159
+ qty: 1,
160
+ category: "PHYSICAL_GOODS"
161
+ }],
162
+ shipping_address: {
163
+ method: "United States Postal Service 1",
164
+ address: {
165
+ first_name: "John",
166
+ last_name: "Doe",
167
+ address_1: "100 Kent Street",
168
+ address_2: "Cafe Lane",
169
+ city: "Sydney",
170
+ state: "NSW",
171
+ postcode: "2000",
172
+ country: "AU"
173
+ }
174
+ }
175
+ }]
176
+ }}
177
+
43
178
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fat_zebra
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.4
5
5
  platform: ruby
6
6
  authors:
7
- - Matthew Savage
8
- autorequire:
7
+ - Fat Zebra
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-29 00:00:00.000000000 Z
11
+ date: 2021-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: pry
14
+ name: byebug
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -94,10 +94,10 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '3.0'
97
- description: Provides integration with the Fat Zebra internet payment gateway (www.fatzebra.com.au),
97
+ description: Provides integration with the Fat Zebra internet payment gateway (www.fatzebra.com),
98
98
  including purchase, refund, auth, capture and recurring billing functionality.
99
99
  email:
100
- - matt@amasses.net
100
+ - support@fatzebra.com
101
101
  executables: []
102
102
  extensions: []
103
103
  extra_rdoc_files: []
@@ -118,6 +118,7 @@ files:
118
118
  - lib/fat_zebra/api_operation/search.rb
119
119
  - lib/fat_zebra/api_operation/void.rb
120
120
  - lib/fat_zebra/api_resource.rb
121
+ - lib/fat_zebra/authenticate.rb
121
122
  - lib/fat_zebra/bank_account.rb
122
123
  - lib/fat_zebra/batch.rb
123
124
  - lib/fat_zebra/card.rb
@@ -130,6 +131,11 @@ files:
130
131
  - lib/fat_zebra/information.rb
131
132
  - lib/fat_zebra/object_helper.rb
132
133
  - lib/fat_zebra/payment_plan.rb
134
+ - lib/fat_zebra/paypal/authorization.rb
135
+ - lib/fat_zebra/paypal/billing_agreement.rb
136
+ - lib/fat_zebra/paypal/capture.rb
137
+ - lib/fat_zebra/paypal/order.rb
138
+ - lib/fat_zebra/paypal/refund.rb
133
139
  - lib/fat_zebra/purchase.rb
134
140
  - lib/fat_zebra/refund.rb
135
141
  - lib/fat_zebra/request.rb
@@ -142,6 +148,22 @@ files:
142
148
  - lib/fat_zebra/validation.rb
143
149
  - lib/fat_zebra/version.rb
144
150
  - lib/fat_zebra/web_hook.rb
151
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/validations/1_3_5_1.yml
152
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_1.yml
153
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_2.yml
154
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_1.yml
155
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_2.yml
156
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_1.yml
157
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_2.yml
158
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_3.yml
159
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_4.yml
160
+ - spec/cassettes/FatZebra_Authenticate/_authenticate/with_type_validation/1_3_4_1.yml
161
+ - spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_invalid/returns_error_when_invalid_token.yml
162
+ - spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_valid/decodes_JWT.yml
163
+ - spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_given_params.yml
164
+ - spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_no_amount.yml
165
+ - spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_amount_is_invalid.yml
166
+ - spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_currency_is_invalid.yml
145
167
  - spec/cassettes/FatZebra_BankAccount/_create/1_1_1.yml
146
168
  - spec/cassettes/FatZebra_BankAccount/_create/1_1_2.yml
147
169
  - spec/cassettes/FatZebra_BankAccount/_search/1_2_1.yml
@@ -163,6 +185,8 @@ files:
163
185
  - spec/cassettes/FatZebra_Card/_create/1_1_4.yml
164
186
  - spec/cassettes/FatZebra_Card/_create/1_1_5.yml
165
187
  - spec/cassettes/FatZebra_Card/_create/1_1_6.yml
188
+ - spec/cassettes/FatZebra_Card/_find/1_3_1.yml
189
+ - spec/cassettes/FatZebra_Card/_find/1_3_2.yml
166
190
  - spec/cassettes/FatZebra_Card/_update/1_2_1.yml
167
191
  - spec/cassettes/FatZebra_Card/_update/1_2_2.yml
168
192
  - spec/cassettes/FatZebra_Card/_update/1_2_3.yml
@@ -196,7 +220,6 @@ files:
196
220
  - spec/cassettes/FatZebra_DirectDebit/_create/1_1_2.yml
197
221
  - spec/cassettes/FatZebra_DirectDebit/_create/1_1_3.yml
198
222
  - spec/cassettes/FatZebra_DirectDebit/_create/1_1_4.yml
199
- - spec/cassettes/FatZebra_DirectDebit/_create/validations/failed_with_non-float/1_1_5_3_1.yml
200
223
  - spec/cassettes/FatZebra_DirectDebit/_create/validations/valid/1_1_5_1_1.yml
201
224
  - spec/cassettes/FatZebra_DirectDebit/_delete/1_4_1.yml
202
225
  - spec/cassettes/FatZebra_DirectDebit/_find/1_2_1.yml
@@ -223,6 +246,20 @@ files:
223
246
  - spec/cassettes/FatZebra_PaymentPlan/_update/1_3_3.yml
224
247
  - spec/cassettes/FatZebra_PaymentPlan/_update/1_4_1.yml
225
248
  - spec/cassettes/FatZebra_PaymentPlan/_update/1_4_2.yml
249
+ - spec/cassettes/FatZebra_Paypal_Authorization/_capture/returns_a_new_capture_record.yml
250
+ - spec/cassettes/FatZebra_Paypal_Authorization/_find/when_found/returns_authorization.yml
251
+ - spec/cassettes/FatZebra_Paypal_Authorization/_search/with_date_filter/returns_records_created_after_start_date.yml
252
+ - spec/cassettes/FatZebra_Paypal_Authorization/_void/returns_a_voided_capture_record.yml
253
+ - spec/cassettes/FatZebra_Paypal_BillingAgreement/_charge/Valid_payload/returns_a_new_order_record.yml
254
+ - spec/cassettes/FatZebra_Paypal_BillingAgreement/_find/when_found/returns_billing_agreement.yml
255
+ - spec/cassettes/FatZebra_Paypal_BillingAgreement/_search/with_date_filter/returns_records_created_after_start_date.yml
256
+ - spec/cassettes/FatZebra_Paypal_Capture/_find/when_found/returns_capture.yml
257
+ - spec/cassettes/FatZebra_Paypal_Capture/_refund/returns_a_new_refund_record.yml
258
+ - spec/cassettes/FatZebra_Paypal_Capture/_search/with_date_filter/returns_records_created_after_start_date.yml
259
+ - spec/cassettes/FatZebra_Paypal_Order/_find/when_found/returns_order.yml
260
+ - spec/cassettes/FatZebra_Paypal_Order/_search/with_date_filter/returns_orders_created_after_start_date.yml
261
+ - spec/cassettes/FatZebra_Paypal_Refund/_find/when_found/returns_refund.yml
262
+ - spec/cassettes/FatZebra_Paypal_Refund/_search/with_date_filter/returns_all_refund_records_created_after_start_date.yml
226
263
  - spec/cassettes/FatZebra_Purchase/_capture/1_5_1.yml
227
264
  - spec/cassettes/FatZebra_Purchase/_capture/1_5_2.yml
228
265
  - spec/cassettes/FatZebra_Purchase/_capture/1_5_3.yml
@@ -241,10 +278,17 @@ files:
241
278
  - spec/cassettes/FatZebra_Purchase/_create/1_1_9.yml
242
279
  - spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_1.yml
243
280
  - spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_2.yml
281
+ - spec/cassettes/FatZebra_Purchase/_extend_/1_9_1.yml
282
+ - spec/cassettes/FatZebra_Purchase/_extend_/1_9_2.yml
283
+ - spec/cassettes/FatZebra_Purchase/_extend_/1_9_3.yml
244
284
  - spec/cassettes/FatZebra_Purchase/_find/1_2_1.yml
245
285
  - spec/cassettes/FatZebra_Purchase/_find/1_2_2.yml
246
286
  - spec/cassettes/FatZebra_Purchase/_find/1_2_3.yml
247
287
  - spec/cassettes/FatZebra_Purchase/_find/1_2_4.yml
288
+ - spec/cassettes/FatZebra_Purchase/_increment/1_10_1.yml
289
+ - spec/cassettes/FatZebra_Purchase/_increment/1_10_2.yml
290
+ - spec/cassettes/FatZebra_Purchase/_increment/1_10_3.yml
291
+ - spec/cassettes/FatZebra_Purchase/_increment/1_10_4.yml
248
292
  - spec/cassettes/FatZebra_Purchase/_refund/1_4_1.yml
249
293
  - spec/cassettes/FatZebra_Purchase/_refund/1_4_2.yml
250
294
  - spec/cassettes/FatZebra_Purchase/_refund/1_4_3.yml
@@ -290,6 +334,7 @@ files:
290
334
  - spec/cassettes/FatZebra_WebHook/_update/1_3_2.yml
291
335
  - spec/fixtures/batch_test.csv
292
336
  - spec/lib/fat_zebra/api_resource_spec.rb
337
+ - spec/lib/fat_zebra/authenticate_spec.rb
293
338
  - spec/lib/fat_zebra/bank_account_spec.rb
294
339
  - spec/lib/fat_zebra/batch_spec.rb
295
340
  - spec/lib/fat_zebra/card_spec.rb
@@ -300,6 +345,11 @@ files:
300
345
  - spec/lib/fat_zebra/fat_zebra_object_spec.rb
301
346
  - spec/lib/fat_zebra/information_spec.rb
302
347
  - spec/lib/fat_zebra/payment_plan_spec.rb
348
+ - spec/lib/fat_zebra/paypal/authorization_spec.rb
349
+ - spec/lib/fat_zebra/paypal/billing_agreement_spec.rb
350
+ - spec/lib/fat_zebra/paypal/capture_spec.rb
351
+ - spec/lib/fat_zebra/paypal/order_spec.rb
352
+ - spec/lib/fat_zebra/paypal/refund_spec.rb
303
353
  - spec/lib/fat_zebra/purchase_spec.rb
304
354
  - spec/lib/fat_zebra/refund_spec.rb
305
355
  - spec/lib/fat_zebra/request_spec.rb
@@ -312,7 +362,7 @@ files:
312
362
  homepage: ''
313
363
  licenses: []
314
364
  metadata: {}
315
- post_install_message:
365
+ post_install_message:
316
366
  rdoc_options: []
317
367
  require_paths:
318
368
  - lib
@@ -327,9 +377,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
327
377
  - !ruby/object:Gem::Version
328
378
  version: '0'
329
379
  requirements: []
330
- rubyforge_project: fat_zebra
331
- rubygems_version: 2.6.12
332
- signing_key:
380
+ rubygems_version: 3.1.2
381
+ signing_key:
333
382
  specification_version: 4
334
383
  summary: Fat Zebra payments gem - integrate your ruby app with Fat Zebra
335
384
  test_files: []