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
@@ -23,7 +23,7 @@ http_interactions:
23
23
  message: OK
24
24
  headers:
25
25
  Date:
26
- - Tue, 08 May 2018 11:08:20 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:
@@ -35,30 +35,24 @@ http_interactions:
35
35
  Cache-Control:
36
36
  - no-store
37
37
  X-Request-Version:
38
- - 1.16.9-3186@7b619da
38
+ - 1.16.9-3941@c1d8236
39
+ X-Runtime:
40
+ - '0.032522'
39
41
  Pragma:
40
42
  - no-cache
41
- X-Xss-Protection:
42
- - 1; mode=block
43
43
  X-Request-Id:
44
- - f6ea309c72e407639cea5b5c
45
- X-Runtime:
46
- - '0.027988'
47
- X-Frame-Options:
48
- - SAMEORIGIN
49
- X-Content-Type-Options:
50
- - nosniff
44
+ - 8cb733fcf021fd9072423e58
51
45
  X-Backend:
52
46
  - sbox-priv-gateway-a
53
47
  body:
54
48
  encoding: UTF-8
55
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
56
- hook","id":"071-WH-IU6R12ZF"},"errors":[],"test":true}'
50
+ hook","id":"071-WH-NOQIX4KB"},"errors":[],"test":true}'
57
51
  http_version:
58
- recorded_at: Tue, 08 May 2018 11:08:20 GMT
52
+ recorded_at: Mon, 29 Apr 2019 09:20:37 GMT
59
53
  - request:
60
54
  method: put
61
- uri: https://gateway.sandbox.fatzebra.com.au/v1.0/web_hooks/071-WH-IU6R12ZF
55
+ uri: https://gateway.sandbox.fatzebra.com.au/v1.0/web_hooks/071-WH-NOQIX4KB
62
56
  body:
63
57
  encoding: UTF-8
64
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
@@ -80,7 +74,7 @@ http_interactions:
80
74
  message: OK
81
75
  headers:
82
76
  Date:
83
- - Tue, 08 May 2018 11:08:20 GMT
77
+ - Mon, 29 Apr 2019 09:20:37 GMT
84
78
  Content-Type:
85
79
  - application/json; charset=utf-8
86
80
  Transfer-Encoding:
@@ -92,25 +86,19 @@ http_interactions:
92
86
  Cache-Control:
93
87
  - no-store
94
88
  X-Request-Version:
95
- - 1.16.9-3186@7b619da
89
+ - 1.16.9-3941@c1d8236
90
+ X-Runtime:
91
+ - '0.031956'
96
92
  Pragma:
97
93
  - no-cache
98
- X-Xss-Protection:
99
- - 1; mode=block
100
94
  X-Request-Id:
101
- - ebd6bac370b3aab1dab345ab
102
- X-Runtime:
103
- - '0.029835'
104
- X-Frame-Options:
105
- - SAMEORIGIN
106
- X-Content-Type-Options:
107
- - nosniff
95
+ - 94529f48078709302340b848
108
96
  X-Backend:
109
97
  - sbox-priv-gateway-a
110
98
  body:
111
99
  encoding: UTF-8
112
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
113
- Test hook","id":"071-WH-IU6R12ZF"},"errors":[],"test":true}'
101
+ Test hook","id":"071-WH-NOQIX4KB"},"errors":[],"test":true}'
114
102
  http_version:
115
- recorded_at: Tue, 08 May 2018 11:08:20 GMT
103
+ recorded_at: Mon, 29 Apr 2019 09:20:37 GMT
116
104
  recorded_with: VCR 3.0.3
@@ -23,7 +23,7 @@ http_interactions:
23
23
  message: OK
24
24
  headers:
25
25
  Date:
26
- - Tue, 08 May 2018 11:08:20 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:
@@ -35,30 +35,24 @@ http_interactions:
35
35
  Cache-Control:
36
36
  - no-store
37
37
  X-Request-Version:
38
- - 1.16.9-3186@7b619da
38
+ - 1.16.9-3941@c1d8236
39
+ X-Runtime:
40
+ - '0.030886'
39
41
  Pragma:
40
42
  - no-cache
41
- X-Xss-Protection:
42
- - 1; mode=block
43
43
  X-Request-Id:
44
- - f036676f5d59d8ce28caf7db
45
- X-Runtime:
46
- - '0.028663'
47
- X-Frame-Options:
48
- - SAMEORIGIN
49
- X-Content-Type-Options:
50
- - nosniff
44
+ - 1d1740ccf6ae9e943b19214c
51
45
  X-Backend:
52
46
  - sbox-priv-gateway-a
53
47
  body:
54
48
  encoding: UTF-8
55
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
56
- hook","id":"071-WH-1H7L5ZCI"},"errors":[],"test":true}'
50
+ hook","id":"071-WH-Q5W5NSU9"},"errors":[],"test":true}'
57
51
  http_version:
58
- recorded_at: Tue, 08 May 2018 11:08:20 GMT
52
+ recorded_at: Mon, 29 Apr 2019 09:20:38 GMT
59
53
  - request:
60
54
  method: put
61
- uri: https://gateway.sandbox.fatzebra.com.au/v1.0/web_hooks/071-WH-1H7L5ZCI
55
+ uri: https://gateway.sandbox.fatzebra.com.au/v1.0/web_hooks/071-WH-Q5W5NSU9
62
56
  body:
63
57
  encoding: UTF-8
64
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
@@ -80,7 +74,7 @@ http_interactions:
80
74
  message: OK
81
75
  headers:
82
76
  Date:
83
- - Tue, 08 May 2018 11:08:20 GMT
77
+ - Mon, 29 Apr 2019 09:20:38 GMT
84
78
  Content-Type:
85
79
  - application/json; charset=utf-8
86
80
  Transfer-Encoding:
@@ -92,25 +86,19 @@ http_interactions:
92
86
  Cache-Control:
93
87
  - no-store
94
88
  X-Request-Version:
95
- - 1.16.9-3186@7b619da
89
+ - 1.16.9-3941@c1d8236
90
+ X-Runtime:
91
+ - '0.034236'
96
92
  Pragma:
97
93
  - no-cache
98
- X-Xss-Protection:
99
- - 1; mode=block
100
94
  X-Request-Id:
101
- - a8c5edf2ac586652e4c0b818
102
- X-Runtime:
103
- - '0.029149'
104
- X-Frame-Options:
105
- - SAMEORIGIN
106
- X-Content-Type-Options:
107
- - nosniff
95
+ - 0ca930a64c9287f6466e0332
108
96
  X-Backend:
109
97
  - sbox-priv-gateway-a
110
98
  body:
111
99
  encoding: UTF-8
112
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
113
- Test hook","id":"071-WH-1H7L5ZCI"},"errors":[],"test":true}'
101
+ Test hook","id":"071-WH-Q5W5NSU9"},"errors":[],"test":true}'
114
102
  http_version:
115
- recorded_at: Tue, 08 May 2018 11:08:20 GMT
103
+ recorded_at: Mon, 29 Apr 2019 09:20:38 GMT
116
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
@@ -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