fat_zebra 3.0.10 → 3.2.2

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 (215) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +3 -5
  4. data/.travis.yml +3 -3
  5. data/README.md +5 -5
  6. data/fat_zebra.gemspec +5 -5
  7. data/lib/fat_zebra.rb +8 -0
  8. data/lib/fat_zebra/api_operation/search.rb +1 -1
  9. data/lib/fat_zebra/authenticate.rb +64 -0
  10. data/lib/fat_zebra/batch.rb +3 -1
  11. data/lib/fat_zebra/card.rb +1 -0
  12. data/lib/fat_zebra/direct_credit.rb +1 -1
  13. data/lib/fat_zebra/direct_debit.rb +1 -1
  14. data/lib/fat_zebra/paypal/authorization.rb +49 -0
  15. data/lib/fat_zebra/paypal/billing_agreement.rb +56 -0
  16. data/lib/fat_zebra/paypal/capture.rb +36 -0
  17. data/lib/fat_zebra/paypal/order.rb +22 -0
  18. data/lib/fat_zebra/paypal/refund.rb +22 -0
  19. data/lib/fat_zebra/refund.rb +4 -0
  20. data/lib/fat_zebra/validation.rb +4 -0
  21. data/lib/fat_zebra/version.rb +1 -1
  22. data/spec/cassettes/FatZebra_Authenticate/_authenticate/validations/1_3_5_1.yml +46 -0
  23. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_1.yml +90 -0
  24. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_2.yml +90 -0
  25. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_1.yml +90 -0
  26. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_2.yml +90 -0
  27. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_1.yml +90 -0
  28. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_2.yml +87 -0
  29. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_3.yml +92 -0
  30. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_4.yml +91 -0
  31. data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_type_validation/1_3_4_1.yml +46 -0
  32. data/spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_invalid/returns_error_when_invalid_token.yml +47 -0
  33. data/spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_valid/decodes_JWT.yml +87 -0
  34. data/spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_given_params.yml +44 -0
  35. data/spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_no_amount.yml +44 -0
  36. data/spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_amount_is_invalid.yml +44 -0
  37. data/spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_currency_is_invalid.yml +46 -0
  38. data/spec/cassettes/FatZebra_BankAccount/_create/1_1_1.yml +7 -9
  39. data/spec/cassettes/FatZebra_BankAccount/_create/1_1_2.yml +7 -9
  40. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_1.yml +32 -38
  41. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_2.yml +32 -38
  42. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_3.yml +32 -38
  43. data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_1.yml +10 -14
  44. data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_2.yml +10 -14
  45. data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_1.yml +10 -14
  46. data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_2.yml +10 -14
  47. data/spec/cassettes/FatZebra_Batch/_find/1_2_1.yml +18 -24
  48. data/spec/cassettes/FatZebra_Batch/_find/1_2_2.yml +18 -24
  49. data/spec/cassettes/FatZebra_Batch/_result/1_4_1.yml +26 -34
  50. data/spec/cassettes/FatZebra_Batch/_search/1_3_1.yml +8 -10
  51. data/spec/cassettes/FatZebra_Batch/_search/1_3_2.yml +8 -10
  52. data/spec/cassettes/FatZebra_Batch/_search/1_3_3.yml +8 -10
  53. data/spec/cassettes/FatZebra_Card/_create/1_1_1.yml +7 -9
  54. data/spec/cassettes/FatZebra_Card/_create/1_1_2.yml +7 -9
  55. data/spec/cassettes/FatZebra_Card/_create/1_1_3.yml +7 -9
  56. data/spec/cassettes/FatZebra_Card/_create/1_1_4.yml +7 -9
  57. data/spec/cassettes/FatZebra_Card/_create/1_1_5.yml +7 -9
  58. data/spec/cassettes/FatZebra_Card/_create/1_1_6.yml +7 -9
  59. data/spec/cassettes/FatZebra_Card/_find/1_3_1.yml +111 -0
  60. data/spec/cassettes/FatZebra_Card/_find/1_3_2.yml +111 -0
  61. data/spec/cassettes/FatZebra_Card/_update/1_2_1.yml +14 -18
  62. data/spec/cassettes/FatZebra_Card/_update/1_2_2.yml +14 -18
  63. data/spec/cassettes/FatZebra_Card/_update/1_2_3.yml +14 -18
  64. data/spec/cassettes/FatZebra_Card/_update/validations/1_2_4_1.yml +7 -9
  65. data/spec/cassettes/FatZebra_Customer/_create/1_1_1.yml +8 -10
  66. data/spec/cassettes/FatZebra_Customer/_create/1_1_2.yml +8 -10
  67. data/spec/cassettes/FatZebra_Customer/_create/1_1_3.yml +8 -10
  68. data/spec/cassettes/FatZebra_Customer/_create/1_1_4.yml +8 -10
  69. data/spec/cassettes/FatZebra_Customer/_create/1_1_5.yml +8 -10
  70. data/spec/cassettes/FatZebra_Customer/_create/1_1_6.yml +8 -10
  71. data/spec/cassettes/FatZebra_Customer/_delete/1_5_1.yml +16 -20
  72. data/spec/cassettes/FatZebra_Customer/_find/1_3_1.yml +17 -21
  73. data/spec/cassettes/FatZebra_Customer/_find/1_3_2.yml +17 -21
  74. data/spec/cassettes/FatZebra_Customer/_search/1_2_1.yml +14 -20
  75. data/spec/cassettes/FatZebra_Customer/_search/1_2_2.yml +14 -20
  76. data/spec/cassettes/FatZebra_Customer/_search/1_2_3.yml +14 -20
  77. data/spec/cassettes/FatZebra_Customer/_update/1_4_1.yml +17 -21
  78. data/spec/cassettes/FatZebra_Customer/_update/1_4_2.yml +17 -21
  79. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_1.yml +7 -9
  80. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_2.yml +7 -9
  81. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_3.yml +7 -9
  82. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_4.yml +7 -9
  83. data/spec/cassettes/FatZebra_DirectCredit/_create/validations/valid/1_1_5_1_1.yml +6 -8
  84. data/spec/cassettes/FatZebra_DirectCredit/_delete/1_4_1.yml +14 -18
  85. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_1.yml +15 -19
  86. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_2.yml +15 -19
  87. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_3.yml +103 -0
  88. data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_1.yml +22 -28
  89. data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_2.yml +22 -28
  90. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_1.yml +7 -9
  91. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_2.yml +7 -9
  92. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_3.yml +7 -9
  93. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_4.yml +7 -9
  94. data/spec/cassettes/FatZebra_DirectDebit/_create/validations/valid/1_1_5_1_1.yml +6 -8
  95. data/spec/cassettes/FatZebra_DirectDebit/_delete/1_4_1.yml +14 -18
  96. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_1.yml +15 -19
  97. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_2.yml +15 -19
  98. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_3.yml +103 -0
  99. data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_1.yml +22 -28
  100. data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_2.yml +22 -28
  101. data/spec/cassettes/FatZebra_Information/_ping/1_1_1.yml +7 -9
  102. data/spec/cassettes/FatZebra_Information/_ping/1_1_2.yml +7 -9
  103. data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_1.yml +48 -56
  104. data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_2.yml +48 -56
  105. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_1.yml +20 -24
  106. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_2.yml +20 -24
  107. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_3.yml +20 -24
  108. data/spec/cassettes/FatZebra_PaymentPlan/_delete/1_5_1.yml +28 -34
  109. data/spec/cassettes/FatZebra_PaymentPlan/_destroy/1_6_1.yml +28 -34
  110. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_1.yml +33 -39
  111. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_2.yml +33 -39
  112. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_3.yml +33 -39
  113. data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_1.yml +34 -40
  114. data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_2.yml +34 -40
  115. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_1.yml +28 -34
  116. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_2.yml +28 -34
  117. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_3.yml +28 -34
  118. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_1.yml +34 -40
  119. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_2.yml +34 -40
  120. data/spec/cassettes/FatZebra_Paypal_Authorization/_capture/returns_a_new_capture_record.yml +45 -0
  121. data/spec/cassettes/FatZebra_Paypal_Authorization/_find/when_found/returns_authorization.yml +46 -0
  122. data/spec/cassettes/FatZebra_Paypal_Authorization/_search/with_date_filter/returns_records_created_after_start_date.yml +46 -0
  123. data/spec/cassettes/FatZebra_Paypal_Authorization/_void/returns_a_voided_capture_record.yml +44 -0
  124. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_charge/Valid_payload/returns_a_new_order_record.yml +48 -0
  125. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_find/when_found/returns_billing_agreement.yml +48 -0
  126. data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_search/with_date_filter/returns_records_created_after_start_date.yml +48 -0
  127. data/spec/cassettes/FatZebra_Paypal_Capture/_find/when_found/returns_capture.yml +47 -0
  128. data/spec/cassettes/FatZebra_Paypal_Capture/_refund/returns_a_new_refund_record.yml +45 -0
  129. data/spec/cassettes/FatZebra_Paypal_Capture/_search/with_date_filter/returns_records_created_after_start_date.yml +49 -0
  130. data/spec/cassettes/FatZebra_Paypal_Order/_find/when_found/returns_order.yml +48 -0
  131. data/spec/cassettes/FatZebra_Paypal_Order/_search/with_date_filter/returns_orders_created_after_start_date.yml +55 -0
  132. data/spec/cassettes/FatZebra_Paypal_Refund/_find/when_found/returns_refund.yml +47 -0
  133. data/spec/cassettes/FatZebra_Paypal_Refund/_search/with_date_filter/returns_all_refund_records_created_after_start_date.yml +50 -0
  134. data/spec/cassettes/FatZebra_Purchase/_capture/1_5_1.yml +30 -22
  135. data/spec/cassettes/FatZebra_Purchase/_capture/1_5_2.yml +30 -22
  136. data/spec/cassettes/FatZebra_Purchase/_capture/1_5_3.yml +30 -22
  137. data/spec/cassettes/FatZebra_Purchase/_create/1_1_1.yml +8 -10
  138. data/spec/cassettes/FatZebra_Purchase/_create/1_1_10.yml +8 -10
  139. data/spec/cassettes/FatZebra_Purchase/_create/1_1_11.yml +8 -10
  140. data/spec/cassettes/FatZebra_Purchase/_create/1_1_12.yml +8 -10
  141. data/spec/cassettes/FatZebra_Purchase/_create/1_1_13.yml +8 -10
  142. data/spec/cassettes/FatZebra_Purchase/_create/1_1_2.yml +8 -10
  143. data/spec/cassettes/FatZebra_Purchase/_create/1_1_3.yml +8 -10
  144. data/spec/cassettes/FatZebra_Purchase/_create/1_1_4.yml +8 -10
  145. data/spec/cassettes/FatZebra_Purchase/_create/1_1_5.yml +8 -10
  146. data/spec/cassettes/FatZebra_Purchase/_create/1_1_6.yml +8 -10
  147. data/spec/cassettes/FatZebra_Purchase/_create/1_1_7.yml +8 -10
  148. data/spec/cassettes/FatZebra_Purchase/_create/1_1_8.yml +8 -10
  149. data/spec/cassettes/FatZebra_Purchase/_create/1_1_9.yml +8 -10
  150. data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_1.yml +10 -12
  151. data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_2.yml +10 -12
  152. data/spec/cassettes/FatZebra_Purchase/_find/1_2_1.yml +31 -23
  153. data/spec/cassettes/FatZebra_Purchase/_find/1_2_2.yml +31 -23
  154. data/spec/cassettes/FatZebra_Purchase/_find/1_2_3.yml +31 -23
  155. data/spec/cassettes/FatZebra_Purchase/_find/1_2_4.yml +31 -23
  156. data/spec/cassettes/FatZebra_Purchase/_refund/1_4_1.yml +30 -22
  157. data/spec/cassettes/FatZebra_Purchase/_refund/1_4_2.yml +30 -22
  158. data/spec/cassettes/FatZebra_Purchase/_refund/1_4_3.yml +30 -22
  159. data/spec/cassettes/FatZebra_Purchase/_search/1_3_1.yml +34 -40
  160. data/spec/cassettes/FatZebra_Purchase/_search/1_3_2.yml +34 -40
  161. data/spec/cassettes/FatZebra_Purchase/_search/1_3_3.yml +34 -40
  162. data/spec/cassettes/FatZebra_Purchase/_settlement/1_8_1.yml +523 -511
  163. data/spec/cassettes/FatZebra_Purchase/_settlement/1_8_2.yml +523 -511
  164. data/spec/cassettes/FatZebra_Purchase/_settlement/1_8_3.yml +523 -511
  165. data/spec/cassettes/FatZebra_Purchase/_void/1_6_1.yml +16 -20
  166. data/spec/cassettes/FatZebra_Purchase/_void/1_6_2.yml +16 -20
  167. data/spec/cassettes/FatZebra_Purchase/_void/1_6_3.yml +16 -20
  168. data/spec/cassettes/FatZebra_Purchase/_void/1_6_4.yml +16 -20
  169. data/spec/cassettes/FatZebra_Purchase/_void/1_7_1.yml +16 -20
  170. data/spec/cassettes/FatZebra_Purchase/_void/1_7_2.yml +16 -20
  171. data/spec/cassettes/FatZebra_Purchase/_void/1_7_3.yml +16 -20
  172. data/spec/cassettes/FatZebra_Purchase/_void/1_7_4.yml +16 -20
  173. data/spec/cassettes/FatZebra_Refund/_create/1_1_1.yml +16 -20
  174. data/spec/cassettes/FatZebra_Refund/_create/1_1_10.yml +16 -20
  175. data/spec/cassettes/FatZebra_Refund/_create/1_1_2.yml +16 -20
  176. data/spec/cassettes/FatZebra_Refund/_create/1_1_3.yml +16 -20
  177. data/spec/cassettes/FatZebra_Refund/_create/1_1_4.yml +16 -20
  178. data/spec/cassettes/FatZebra_Refund/_create/1_1_5.yml +16 -20
  179. data/spec/cassettes/FatZebra_Refund/_create/1_1_6.yml +16 -20
  180. data/spec/cassettes/FatZebra_Refund/_create/1_1_7.yml +16 -20
  181. data/spec/cassettes/FatZebra_Refund/_create/1_1_8.yml +16 -20
  182. data/spec/cassettes/FatZebra_Refund/_create/1_1_9.yml +16 -20
  183. data/spec/cassettes/FatZebra_Refund/_find/1_2_1.yml +25 -31
  184. data/spec/cassettes/FatZebra_Refund/_find/1_2_2.yml +25 -31
  185. data/spec/cassettes/FatZebra_Refund/_find/1_2_3.yml +25 -31
  186. data/spec/cassettes/FatZebra_Refund/_search/responds_with_the_newly-created_refunds.yml +214 -0
  187. data/spec/cassettes/FatZebra_Refund/_void/1_4_1.yml +24 -30
  188. data/spec/cassettes/FatZebra_Refund/_void/1_4_2.yml +24 -30
  189. data/spec/cassettes/FatZebra_Refund/_void/1_4_3.yml +24 -30
  190. data/spec/cassettes/FatZebra_Refund/_void/1_4_4.yml +24 -30
  191. data/spec/cassettes/FatZebra_WebHook/_create/1_1_1.yml +6 -8
  192. data/spec/cassettes/FatZebra_WebHook/_create/1_1_2.yml +6 -8
  193. data/spec/cassettes/FatZebra_WebHook/_create/1_1_3.yml +6 -8
  194. data/spec/cassettes/FatZebra_WebHook/_delete/1_4_1.yml +13 -17
  195. data/spec/cassettes/FatZebra_WebHook/_search/1_2_1.yml +163 -43
  196. data/spec/cassettes/FatZebra_WebHook/_search/1_2_2.yml +165 -45
  197. data/spec/cassettes/FatZebra_WebHook/_update/1_3_1.yml +13 -17
  198. data/spec/cassettes/FatZebra_WebHook/_update/1_3_2.yml +13 -17
  199. data/spec/lib/fat_zebra/authenticate_spec.rb +187 -0
  200. data/spec/lib/fat_zebra/card_spec.rb +8 -0
  201. data/spec/lib/fat_zebra/direct_credit_spec.rb +14 -1
  202. data/spec/lib/fat_zebra/direct_debit_spec.rb +14 -1
  203. data/spec/lib/fat_zebra/payment_plan_spec.rb +1 -1
  204. data/spec/lib/fat_zebra/paypal/authorization_spec.rb +79 -0
  205. data/spec/lib/fat_zebra/paypal/billing_agreement_spec.rb +62 -0
  206. data/spec/lib/fat_zebra/paypal/capture_spec.rb +60 -0
  207. data/spec/lib/fat_zebra/paypal/order_spec.rb +35 -0
  208. data/spec/lib/fat_zebra/paypal/refund_spec.rb +36 -0
  209. data/spec/lib/fat_zebra/purchase_spec.rb +3 -3
  210. data/spec/lib/fat_zebra/refund_spec.rb +37 -17
  211. data/spec/spec_helper.rb +0 -1
  212. data/spec/support/payloads.rb +135 -0
  213. metadata +59 -15
  214. data/spec/cassettes/FatZebra_Refund/_search/1_3_1.yml +0 -275
  215. data/spec/cassettes/FatZebra_Refund/_search/1_3_2.yml +0 -275
@@ -23,7 +23,7 @@ http_interactions:
23
23
  message: OK
24
24
  headers:
25
25
  Date:
26
- - Wed, 02 May 2018 23:13:40 GMT
26
+ - Mon, 29 Apr 2019 09:20:37 GMT
27
27
  Content-Type:
28
28
  - application/json; charset=utf-8
29
29
  Transfer-Encoding:
@@ -32,29 +32,27 @@ http_interactions:
32
32
  - keep-alive
33
33
  Status:
34
34
  - 200 OK
35
- X-Rack-Cache:
36
- - invalidate, pass
37
35
  Cache-Control:
38
36
  - no-store
39
37
  X-Request-Version:
40
- - 1.16.9-3156@6c1a40b
38
+ - 1.16.9-3941@c1d8236
41
39
  X-Runtime:
42
- - '0.038470'
40
+ - '0.032522'
43
41
  Pragma:
44
42
  - no-cache
45
43
  X-Request-Id:
46
- - 4002015a8fd03f12cf977b5c
44
+ - 8cb733fcf021fd9072423e58
47
45
  X-Backend:
48
46
  - sbox-priv-gateway-a
49
47
  body:
50
48
  encoding: UTF-8
51
49
  string: '{"successful":true,"response":{"address":"http://stage.example.com.au/v1/api/hook_listener","events":"*","mode":"Test","authentication_username":null,"authentication_password":"","is_active":null,"name":"test
52
- hook","id":"071-WH-8I8NRWR1"},"errors":[],"test":true}'
50
+ hook","id":"071-WH-NOQIX4KB"},"errors":[],"test":true}'
53
51
  http_version:
54
- recorded_at: Wed, 02 May 2018 23:13:39 GMT
52
+ recorded_at: Mon, 29 Apr 2019 09:20:37 GMT
55
53
  - request:
56
54
  method: put
57
- uri: https://gateway.sandbox.fatzebra.com.au/v1.0/web_hooks/071-WH-8I8NRWR1
55
+ uri: https://gateway.sandbox.fatzebra.com.au/v1.0/web_hooks/071-WH-NOQIX4KB
58
56
  body:
59
57
  encoding: UTF-8
60
58
  string: '{"address":"http://stage.example.com.au/v1/api/hook_listener","events":"*","mode":"Test","authentication_username":null,"authentication_password":"","is_active":null,"name":"test
@@ -76,7 +74,7 @@ http_interactions:
76
74
  message: OK
77
75
  headers:
78
76
  Date:
79
- - Wed, 02 May 2018 23:13:40 GMT
77
+ - Mon, 29 Apr 2019 09:20:37 GMT
80
78
  Content-Type:
81
79
  - application/json; charset=utf-8
82
80
  Transfer-Encoding:
@@ -85,24 +83,22 @@ http_interactions:
85
83
  - keep-alive
86
84
  Status:
87
85
  - 200 OK
88
- X-Rack-Cache:
89
- - invalidate, pass
90
86
  Cache-Control:
91
87
  - no-store
92
88
  X-Request-Version:
93
- - 1.16.9-3156@6c1a40b
89
+ - 1.16.9-3941@c1d8236
94
90
  X-Runtime:
95
- - '0.025643'
91
+ - '0.031956'
96
92
  Pragma:
97
93
  - no-cache
98
94
  X-Request-Id:
99
- - 732fd7e8eb4c7a7240fe42b1
95
+ - 94529f48078709302340b848
100
96
  X-Backend:
101
97
  - sbox-priv-gateway-a
102
98
  body:
103
99
  encoding: UTF-8
104
100
  string: '{"successful":true,"response":{"address":"http://stage.example.com.au/v1/api/hook_listener","events":"*","mode":"Test","authentication_username":null,"authentication_password":"","is_active":null,"name":"New
105
- Test hook","id":"071-WH-8I8NRWR1"},"errors":[],"test":true}'
101
+ Test hook","id":"071-WH-NOQIX4KB"},"errors":[],"test":true}'
106
102
  http_version:
107
- recorded_at: Wed, 02 May 2018 23:13:39 GMT
103
+ recorded_at: Mon, 29 Apr 2019 09:20:37 GMT
108
104
  recorded_with: VCR 3.0.3
@@ -23,7 +23,7 @@ http_interactions:
23
23
  message: OK
24
24
  headers:
25
25
  Date:
26
- - Wed, 02 May 2018 23:13:40 GMT
26
+ - Mon, 29 Apr 2019 09:20:38 GMT
27
27
  Content-Type:
28
28
  - application/json; charset=utf-8
29
29
  Transfer-Encoding:
@@ -32,29 +32,27 @@ http_interactions:
32
32
  - keep-alive
33
33
  Status:
34
34
  - 200 OK
35
- X-Rack-Cache:
36
- - invalidate, pass
37
35
  Cache-Control:
38
36
  - no-store
39
37
  X-Request-Version:
40
- - 1.16.9-3156@6c1a40b
38
+ - 1.16.9-3941@c1d8236
41
39
  X-Runtime:
42
- - '0.026634'
40
+ - '0.030886'
43
41
  Pragma:
44
42
  - no-cache
45
43
  X-Request-Id:
46
- - 3b9a38f6295d7f1cdce247d2
44
+ - 1d1740ccf6ae9e943b19214c
47
45
  X-Backend:
48
46
  - sbox-priv-gateway-a
49
47
  body:
50
48
  encoding: UTF-8
51
49
  string: '{"successful":true,"response":{"address":"http://stage.example.com.au/v1/api/hook_listener","events":"*","mode":"Test","authentication_username":null,"authentication_password":"","is_active":null,"name":"test
52
- hook","id":"071-WH-H9B1G0OJ"},"errors":[],"test":true}'
50
+ hook","id":"071-WH-Q5W5NSU9"},"errors":[],"test":true}'
53
51
  http_version:
54
- recorded_at: Wed, 02 May 2018 23:13:39 GMT
52
+ recorded_at: Mon, 29 Apr 2019 09:20:38 GMT
55
53
  - request:
56
54
  method: put
57
- uri: https://gateway.sandbox.fatzebra.com.au/v1.0/web_hooks/071-WH-H9B1G0OJ
55
+ uri: https://gateway.sandbox.fatzebra.com.au/v1.0/web_hooks/071-WH-Q5W5NSU9
58
56
  body:
59
57
  encoding: UTF-8
60
58
  string: '{"address":"http://stage.example.com.au/v1/api/hook_listener","events":"*","mode":"Test","authentication_username":null,"authentication_password":"","is_active":null,"name":"test
@@ -76,7 +74,7 @@ http_interactions:
76
74
  message: OK
77
75
  headers:
78
76
  Date:
79
- - Wed, 02 May 2018 23:13:40 GMT
77
+ - Mon, 29 Apr 2019 09:20:38 GMT
80
78
  Content-Type:
81
79
  - application/json; charset=utf-8
82
80
  Transfer-Encoding:
@@ -85,24 +83,22 @@ http_interactions:
85
83
  - keep-alive
86
84
  Status:
87
85
  - 200 OK
88
- X-Rack-Cache:
89
- - invalidate, pass
90
86
  Cache-Control:
91
87
  - no-store
92
88
  X-Request-Version:
93
- - 1.16.9-3156@6c1a40b
89
+ - 1.16.9-3941@c1d8236
94
90
  X-Runtime:
95
- - '0.024526'
91
+ - '0.034236'
96
92
  Pragma:
97
93
  - no-cache
98
94
  X-Request-Id:
99
- - f9864c5805db3192e3383489
95
+ - 0ca930a64c9287f6466e0332
100
96
  X-Backend:
101
97
  - sbox-priv-gateway-a
102
98
  body:
103
99
  encoding: UTF-8
104
100
  string: '{"successful":true,"response":{"address":"http://stage.example.com.au/v1/api/hook_listener","events":"*","mode":"Test","authentication_username":null,"authentication_password":"","is_active":null,"name":"New
105
- Test hook","id":"071-WH-H9B1G0OJ"},"errors":[],"test":true}'
101
+ Test hook","id":"071-WH-Q5W5NSU9"},"errors":[],"test":true}'
106
102
  http_version:
107
- recorded_at: Wed, 02 May 2018 23:13:39 GMT
103
+ recorded_at: Mon, 29 Apr 2019 09:20:38 GMT
108
104
  recorded_with: VCR 3.0.3
@@ -0,0 +1,187 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Authenticate do
4
+ describe '.session', :vcr do
5
+ subject(:token) { FatZebra::Authenticate.session(valid_3ds_token_payload) }
6
+
7
+ let(:valid_3ds_token_payload) {{
8
+ currency: 'AUD',
9
+ amount: 100
10
+ }}
11
+
12
+ it 'returns JWT with given params' do
13
+ is_expected.to be_accepted
14
+ expect(token.jwt).to be_truthy
15
+ end
16
+
17
+ it 'returns JWT with no amount' do
18
+ valid_3ds_token_payload.delete(:amount)
19
+ is_expected.to be_accepted
20
+ expect(token.jwt).to be_truthy
21
+ end
22
+
23
+ it 'returns error when currency is invalid' do
24
+ valid_3ds_token_payload[:currency] = 'INVALID'
25
+ is_expected.not_to be_accepted
26
+ expect(token.errors).to be_a(Array)
27
+ expect(token.errors.join).to match(/INVALID is not valid for this merchant. Permitted currencies:/)
28
+ end
29
+
30
+ it 'returns error when amount is invalid' do
31
+ valid_3ds_token_payload[:amount] = 'INVALID'
32
+ is_expected.not_to be_accepted
33
+ expect(token.errors).to eq(['Amount is invalid'])
34
+ end
35
+ end
36
+
37
+ describe '.decode_session', :vcr do
38
+ subject(:decoded) { FatZebra::Authenticate.decode_session(token: jwt) }
39
+
40
+ context 'when token is valid' do
41
+ let(:valid_3ds_token_payload) {{
42
+ currency: 'AUD',
43
+ amount: 100
44
+ }}
45
+ let(:jwt) { FatZebra::Authenticate.session(valid_3ds_token_payload).jwt }
46
+
47
+ it 'decodes JWT' do
48
+ is_expected.to be_accepted
49
+ expect(decoded.keys).to include('processor_transaction_id', 'consumer_session_id', 'error_number', 'error_description')
50
+ expect(decoded.errors).to be_empty
51
+ end
52
+ end
53
+
54
+ context 'when token is invalid' do
55
+ let(:jwt) { 'INVALID TOKEN' }
56
+
57
+ it 'returns error when invalid token' do
58
+ is_expected.not_to be_accepted
59
+ expect(decoded.errors).to eq(['Decoding JWT failed: The token is invalid'])
60
+ end
61
+ end
62
+ end
63
+
64
+ describe '.authenticate', :vcr do
65
+ subject(:authenticate) { FatZebra::Authenticate.authenticate(valid_sca_authentication_payload) }
66
+ let!(:credit_card) { FatZebra::Card.create(valid_credit_card_payload) }
67
+
68
+ context 'with invalid input' do
69
+ before do
70
+ valid_sca_authentication_payload[:sca].merge!(valid_sca_enrollment_payload)
71
+ end
72
+
73
+ it do
74
+ valid_sca_authentication_payload[:card_token] = 'INVALID'
75
+ is_expected.not_to be_accepted
76
+ expect(authenticate.errors.join).to match(/Card not found/)
77
+ end
78
+
79
+ it do
80
+ valid_sca_authentication_payload[:sca] = {}
81
+ is_expected.not_to be_accepted
82
+ expect(authenticate.errors.join).to match(/Invalid input data/)
83
+ end
84
+
85
+ it do
86
+ valid_sca_authentication_payload[:currency] = 'INVALID'
87
+ is_expected.not_to be_accepted
88
+ expect(authenticate.errors.join).to match(/INVALID is not valid for this merchant. Permitted currencies:/)
89
+ end
90
+
91
+ it do
92
+ valid_sca_authentication_payload[:amount] = 'INVALID'
93
+ is_expected.not_to be_accepted
94
+ expect(authenticate.errors.join).to match(/3DS authenticate request failed: amount must be filled/)
95
+ end
96
+ end
97
+
98
+ context 'with frictionless response' do
99
+ before do
100
+ valid_credit_card_payload[:card_number] = '4000000000001000'
101
+ valid_sca_authentication_payload[:sca].merge!(valid_sca_enrollment_payload)
102
+ end
103
+
104
+ it do
105
+ is_expected.to be_accepted
106
+ expect(authenticate.keys).to include('enrolled', 'acs_url', 'version', 'card_bin', 'authentication_transaction_id')
107
+ expect(authenticate.errors).to be_empty
108
+ end
109
+
110
+ it do
111
+ expect(authenticate.enrolled).to be_truthy
112
+ expect(authenticate.version).to be_truthy
113
+ expect(authenticate.card_bin).to be_truthy
114
+ expect(authenticate.authentication_transaction_id).to be_truthy
115
+ end
116
+ end
117
+
118
+ context 'with challenge response' do
119
+ before do
120
+ valid_credit_card_payload[:card_number] = '4000000000001091'
121
+ valid_sca_authentication_payload[:sca].merge!(valid_sca_enrollment_payload)
122
+ end
123
+
124
+ it do
125
+ is_expected.to be_accepted
126
+ expect(authenticate.keys).to include('enrolled', 'version', 'card_bin', 'authentication_transaction_id')
127
+ expect(authenticate.errors).to be_empty
128
+ end
129
+
130
+ it do
131
+ expect(authenticate.enrolled).to be_truthy
132
+ expect(authenticate.version).to be_truthy
133
+ expect(authenticate.card_bin).to be_truthy
134
+ expect(authenticate.authentication_transaction_id).to be_truthy
135
+ end
136
+ end
137
+
138
+ context 'with type = validation' do
139
+ subject(:authenticate) { FatZebra::Authenticate.authenticate(valid_sca_authentication_payload) }
140
+
141
+ before do
142
+ allow(FatZebra::Authenticate).to receive(:authenticate)
143
+ .with(valid_sca_authentication_payload)
144
+ .and_return(FatZebra::FatZebraObject.initialize_from(validation_response.to_json))
145
+
146
+ valid_credit_card_payload[:card_number] = '4000000000001091'
147
+ valid_sca_authentication_payload[:sca][:type] = 'validation'
148
+ valid_sca_authentication_payload[:sca].merge!(valid_sca_validation_payload)
149
+ end
150
+
151
+ let(:validation_response) do
152
+ {
153
+ successful: true,
154
+ response: {
155
+ action: {
156
+ proceed: true
157
+ },
158
+ version: '2.2.0',
159
+ enrolled: 'Y',
160
+ cavv: SecureRandom.hex,
161
+ xid: SecureRandom.hex,
162
+ pares: 'Y',
163
+ eci: '05',
164
+ authentication_transaction_id: SecureRandom.hex,
165
+ card_bin: '400000',
166
+ request_id: SecureRandom.hex,
167
+ decision: 'ACCEPT'
168
+ },
169
+ errors: [],
170
+ test: true
171
+ }
172
+ end
173
+
174
+ it do
175
+ is_expected.to be_accepted
176
+ expect(authenticate.keys).to include('enrolled', 'version', 'card_bin', 'authentication_transaction_id', 'cavv', 'eci', 'xid', 'pares')
177
+ expect(authenticate.errors).to be_empty
178
+ end
179
+ end
180
+
181
+ context 'validations' do
182
+ let(:valid_sca_authentication_payload) {{}}
183
+
184
+ it { expect{ authenticate }.to raise_error(FatZebra::RequestValidationError) }
185
+ end
186
+ end
187
+ end
@@ -38,4 +38,12 @@ describe FatZebra::Card do
38
38
  end
39
39
  end
40
40
 
41
+ describe '.find', :vcr do
42
+ let(:create) { FatZebra::Card.create(valid_credit_card_payload) }
43
+ subject(:card) { FatZebra::Card.find(create.token) }
44
+
45
+ it { is_expected.to be_accepted }
46
+ it { expect(card.token).to eq(create.token) }
47
+ end
48
+
41
49
  end
@@ -4,7 +4,7 @@ describe FatZebra::DirectCredit do
4
4
 
5
5
  let(:valid_direct_credit_payload) {{
6
6
  description: 'Confirmation',
7
- amount: 42,
7
+ amount: 42.0,
8
8
  bsb: '123-123',
9
9
  account_name: 'Test',
10
10
  account_number: '012345678'
@@ -30,6 +30,18 @@ describe FatZebra::DirectCredit do
30
30
 
31
31
  it { expect{ direct_credit }.to raise_error(FatZebra::RequestValidationError) }
32
32
  end
33
+
34
+ context 'failed with non-float' do
35
+ let(:valid_direct_credit_payload) {{
36
+ description: 'Confirmation',
37
+ amount: 123,
38
+ bsb: '123-123',
39
+ account_name: 'Test',
40
+ account_number: '012345678'
41
+ }}
42
+
43
+ it { expect{ direct_credit }.to raise_error(FatZebra::RequestValidationError) }
44
+ end
33
45
  end
34
46
  end
35
47
 
@@ -39,6 +51,7 @@ describe FatZebra::DirectCredit do
39
51
 
40
52
  it { is_expected.to be_accepted }
41
53
  it { expect(direct_credit.reference).to eq(create.reference) }
54
+ it { expect(direct_credit.amount).to be_instance_of(Float) }
42
55
  end
43
56
 
44
57
  describe '.search', :vcr do
@@ -4,7 +4,7 @@ describe FatZebra::DirectDebit do
4
4
 
5
5
  let(:valid_direct_debit_payload) {{
6
6
  description: 'Confirmation',
7
- amount: 42,
7
+ amount: 42.0,
8
8
  bsb: '123-123',
9
9
  account_name: 'Test',
10
10
  account_number: '012345678'
@@ -30,6 +30,18 @@ describe FatZebra::DirectDebit do
30
30
 
31
31
  it { expect{ direct_debit }.to raise_error(FatZebra::RequestValidationError) }
32
32
  end
33
+
34
+ context 'failed with non-float' do
35
+ let(:valid_direct_debit_payload) {{
36
+ description: 'Confirmation',
37
+ amount: 123,
38
+ bsb: '123-123',
39
+ account_name: 'Test',
40
+ account_number: '012345678'
41
+ }}
42
+
43
+ it { expect{ direct_debit }.to raise_error(FatZebra::RequestValidationError) }
44
+ end
33
45
  end
34
46
  end
35
47
 
@@ -39,6 +51,7 @@ describe FatZebra::DirectDebit do
39
51
 
40
52
  it { is_expected.to be_accepted }
41
53
  it { expect(direct_debit.reference).to eq(create.reference) }
54
+ it { expect(direct_debit.amount).to be_instance_of(Float) }
42
55
  end
43
56
 
44
57
  describe '.search', :vcr do
@@ -9,7 +9,7 @@ describe FatZebra::PaymentPlan do
9
9
  reference: SecureRandom.hex,
10
10
  setup_fee: 0,
11
11
  amount: 100,
12
- start_date: '2015-07-16',
12
+ start_date: (Date.today + 90).strftime('%Y-%m-%d'),
13
13
  frequency: 'Weekly',
14
14
  anniversary: 5,
15
15
  total_count: 5,
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe FatZebra::Paypal::Authorization do
4
+
5
+ describe '.find', :vcr do
6
+ subject(:authorization) { FatZebra::Paypal::Authorization.find(authorization_id) }
7
+
8
+ context 'when found' do
9
+ let(:authorization_id) { '071-PPA-3AM3CXFFKMFYI3QM' }
10
+
11
+ it 'returns authorization' do
12
+ expect(authorization).to be_accepted
13
+ expect(authorization.id).to eq(authorization_id)
14
+ expect(authorization.order).to include('PPO')
15
+ end
16
+ end
17
+ end
18
+
19
+ describe '.search', :vcr do
20
+ context 'with date filter' do
21
+ subject(:authorizations) { FatZebra::Paypal::Authorization.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 = authorizations.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(authorizations.data).to be_a(Array)
31
+ expect(authorizations.data.first).to be_a(FatZebra::Paypal::Authorization)
32
+ expect(created_date_check.all?).to be(true)
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '#capture', :vcr do
38
+ subject(:capture_record) { FatZebra::Paypal::Authorization.capture(authorization_id, params_for_capture) }
39
+
40
+ let(:authorization_id) { '071-PPA-3AM3CXFFKMFYI3QM' }
41
+ let(:capture_amount) { 200 }
42
+ let(:note) { 'test capture $2' }
43
+ let(:params_for_capture) do
44
+ {
45
+ amount: capture_amount,
46
+ final_Capture: false,
47
+ note_to_payer: note
48
+ }
49
+ end
50
+
51
+ it 'returns a new capture record' do
52
+ is_expected.to be_accepted
53
+ is_expected.to be_successful
54
+
55
+ expect(capture_record).to be_a(FatZebra::Paypal::Capture)
56
+ expect(capture_record.id).to include('PPC')
57
+ expect(capture_record.order).to include('PPO')
58
+ expect(capture_record.amount).to eq(capture_amount)
59
+ expect(capture_record.note_to_payer).to eq(note)
60
+ expect(capture_record.balance_available_for_capture).to be > 0
61
+ end
62
+ end
63
+
64
+ describe '#void', :vcr do
65
+ subject(:voided_authorization_record) { FatZebra::Paypal::Authorization.void(authorization_id) }
66
+
67
+ let(:authorization_id) { '071-PPA-XB5CXLVNIGCNTB8V' }
68
+
69
+ it 'returns a voided capture record' do
70
+ is_expected.to be_accepted
71
+ is_expected.to be_successful
72
+
73
+ expect(voided_authorization_record).to be_a(FatZebra::Paypal::Authorization)
74
+ expect(voided_authorization_record.id).to include('PPA')
75
+ expect(voided_authorization_record.response_code).to eq('00')
76
+ expect(voided_authorization_record.balance_available_for_capture).to eq(0)
77
+ end
78
+ end
79
+ end