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.
- checksums.yaml +5 -5
- data/.gitignore +2 -0
- data/.travis.yml +2 -1
- data/README.md +5 -5
- data/fat_zebra.gemspec +4 -6
- data/lib/fat_zebra.rb +8 -0
- data/lib/fat_zebra/authenticate.rb +64 -0
- data/lib/fat_zebra/card.rb +1 -0
- data/lib/fat_zebra/paypal/authorization.rb +49 -0
- data/lib/fat_zebra/paypal/billing_agreement.rb +56 -0
- data/lib/fat_zebra/paypal/capture.rb +36 -0
- data/lib/fat_zebra/paypal/order.rb +22 -0
- data/lib/fat_zebra/paypal/refund.rb +22 -0
- data/lib/fat_zebra/purchase.rb +23 -0
- data/lib/fat_zebra/util.rb +1 -1
- data/lib/fat_zebra/version.rb +1 -1
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/validations/1_3_5_1.yml +46 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_1.yml +90 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_challenge_response/1_3_3_2.yml +90 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_1.yml +90 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_frictionless_response/1_3_2_2.yml +90 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_1.yml +90 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_2.yml +87 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_3.yml +92 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_invalid_input/1_3_1_4.yml +91 -0
- data/spec/cassettes/FatZebra_Authenticate/_authenticate/with_type_validation/1_3_4_1.yml +46 -0
- data/spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_invalid/returns_error_when_invalid_token.yml +47 -0
- data/spec/cassettes/FatZebra_Authenticate/_decode_session/when_token_is_valid/decodes_JWT.yml +87 -0
- data/spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_given_params.yml +44 -0
- data/spec/cassettes/FatZebra_Authenticate/_session/returns_JWT_with_no_amount.yml +44 -0
- data/spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_amount_is_invalid.yml +44 -0
- data/spec/cassettes/FatZebra_Authenticate/_session/returns_error_when_currency_is_invalid.yml +46 -0
- data/spec/cassettes/FatZebra_BankAccount/_create/1_1_1.yml +8 -14
- data/spec/cassettes/FatZebra_BankAccount/_create/1_1_2.yml +8 -14
- data/spec/cassettes/FatZebra_BankAccount/_search/1_2_1.yml +30 -30
- data/spec/cassettes/FatZebra_BankAccount/_search/1_2_2.yml +30 -30
- data/spec/cassettes/FatZebra_BankAccount/_search/1_2_3.yml +30 -30
- data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_1.yml +11 -17
- data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_2.yml +11 -17
- data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_1.yml +11 -17
- data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_2.yml +11 -17
- data/spec/cassettes/FatZebra_Batch/_find/1_2_1.yml +19 -31
- data/spec/cassettes/FatZebra_Batch/_find/1_2_2.yml +19 -31
- data/spec/cassettes/FatZebra_Batch/_result/1_4_1.yml +26 -44
- data/spec/cassettes/FatZebra_Batch/_search/1_3_1.yml +6 -6
- data/spec/cassettes/FatZebra_Batch/_search/1_3_2.yml +6 -6
- data/spec/cassettes/FatZebra_Batch/_search/1_3_3.yml +6 -6
- data/spec/cassettes/FatZebra_Card/_create/1_1_1.yml +7 -13
- data/spec/cassettes/FatZebra_Card/_create/1_1_2.yml +7 -13
- data/spec/cassettes/FatZebra_Card/_create/1_1_3.yml +7 -13
- data/spec/cassettes/FatZebra_Card/_create/1_1_4.yml +7 -13
- data/spec/cassettes/FatZebra_Card/_create/1_1_5.yml +7 -13
- data/spec/cassettes/FatZebra_Card/_create/1_1_6.yml +7 -13
- data/spec/cassettes/FatZebra_Card/_find/1_3_1.yml +111 -0
- data/spec/cassettes/FatZebra_Card/_find/1_3_2.yml +111 -0
- data/spec/cassettes/FatZebra_Card/_update/1_2_1.yml +15 -27
- data/spec/cassettes/FatZebra_Card/_update/1_2_2.yml +15 -27
- data/spec/cassettes/FatZebra_Card/_update/1_2_3.yml +15 -27
- data/spec/cassettes/FatZebra_Card/_update/validations/1_2_4_1.yml +7 -13
- data/spec/cassettes/FatZebra_Customer/_create/1_1_1.yml +9 -15
- data/spec/cassettes/FatZebra_Customer/_create/1_1_2.yml +9 -15
- data/spec/cassettes/FatZebra_Customer/_create/1_1_3.yml +9 -15
- data/spec/cassettes/FatZebra_Customer/_create/1_1_4.yml +9 -15
- data/spec/cassettes/FatZebra_Customer/_create/1_1_5.yml +9 -15
- data/spec/cassettes/FatZebra_Customer/_create/1_1_6.yml +9 -15
- data/spec/cassettes/FatZebra_Customer/_delete/1_5_1.yml +18 -30
- data/spec/cassettes/FatZebra_Customer/_find/1_3_1.yml +18 -30
- data/spec/cassettes/FatZebra_Customer/_find/1_3_2.yml +18 -30
- data/spec/cassettes/FatZebra_Customer/_search/1_2_1.yml +12 -16
- data/spec/cassettes/FatZebra_Customer/_search/1_2_2.yml +12 -16
- data/spec/cassettes/FatZebra_Customer/_search/1_2_3.yml +12 -16
- data/spec/cassettes/FatZebra_Customer/_update/1_4_1.yml +19 -31
- data/spec/cassettes/FatZebra_Customer/_update/1_4_2.yml +19 -31
- data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_1.yml +8 -14
- data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_2.yml +8 -14
- data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_3.yml +8 -14
- data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_4.yml +8 -14
- data/spec/cassettes/FatZebra_DirectCredit/_create/validations/valid/1_1_5_1_1.yml +7 -13
- data/spec/cassettes/FatZebra_DirectCredit/_delete/1_4_1.yml +16 -28
- data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_1.yml +16 -28
- data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_2.yml +16 -28
- data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_3.yml +13 -13
- data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_1.yml +20 -20
- data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_2.yml +20 -20
- data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_1.yml +8 -14
- data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_2.yml +8 -14
- data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_3.yml +8 -14
- data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_4.yml +8 -14
- data/spec/cassettes/FatZebra_DirectDebit/_create/validations/valid/1_1_5_1_1.yml +7 -13
- data/spec/cassettes/FatZebra_DirectDebit/_delete/1_4_1.yml +16 -28
- data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_1.yml +16 -28
- data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_2.yml +16 -28
- data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_3.yml +13 -13
- data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_1.yml +20 -20
- data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_2.yml +20 -20
- data/spec/cassettes/FatZebra_Information/_ping/1_1_1.yml +7 -13
- data/spec/cassettes/FatZebra_Information/_ping/1_1_2.yml +7 -13
- data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_1.yml +48 -48
- data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_2.yml +48 -48
- data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_1.yml +20 -20
- data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_2.yml +20 -20
- data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_3.yml +20 -20
- data/spec/cassettes/FatZebra_PaymentPlan/_delete/1_5_1.yml +28 -28
- data/spec/cassettes/FatZebra_PaymentPlan/_destroy/1_6_1.yml +28 -28
- data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_1.yml +32 -32
- data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_2.yml +32 -32
- data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_3.yml +32 -32
- data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_1.yml +34 -34
- data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_2.yml +34 -34
- data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_1.yml +28 -28
- data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_2.yml +28 -28
- data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_3.yml +28 -28
- data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_1.yml +34 -34
- data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_2.yml +34 -34
- data/spec/cassettes/FatZebra_Paypal_Authorization/_capture/returns_a_new_capture_record.yml +45 -0
- data/spec/cassettes/FatZebra_Paypal_Authorization/_find/when_found/returns_authorization.yml +46 -0
- data/spec/cassettes/FatZebra_Paypal_Authorization/_search/with_date_filter/returns_records_created_after_start_date.yml +46 -0
- data/spec/cassettes/FatZebra_Paypal_Authorization/_void/returns_a_voided_capture_record.yml +44 -0
- data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_charge/Valid_payload/returns_a_new_order_record.yml +48 -0
- data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_find/when_found/returns_billing_agreement.yml +48 -0
- data/spec/cassettes/FatZebra_Paypal_BillingAgreement/_search/with_date_filter/returns_records_created_after_start_date.yml +48 -0
- data/spec/cassettes/FatZebra_Paypal_Capture/_find/when_found/returns_capture.yml +47 -0
- data/spec/cassettes/FatZebra_Paypal_Capture/_refund/returns_a_new_refund_record.yml +45 -0
- data/spec/cassettes/FatZebra_Paypal_Capture/_search/with_date_filter/returns_records_created_after_start_date.yml +49 -0
- data/spec/cassettes/FatZebra_Paypal_Order/_find/when_found/returns_order.yml +48 -0
- data/spec/cassettes/FatZebra_Paypal_Order/_search/with_date_filter/returns_orders_created_after_start_date.yml +55 -0
- data/spec/cassettes/FatZebra_Paypal_Refund/_find/when_found/returns_refund.yml +47 -0
- data/spec/cassettes/FatZebra_Paypal_Refund/_search/with_date_filter/returns_all_refund_records_created_after_start_date.yml +50 -0
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_1.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_10.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_11.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_12.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_13.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_2.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_3.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_4.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_5.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_6.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_7.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_8.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/1_1_9.yml +9 -15
- data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_1.yml +11 -17
- data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_2.yml +11 -17
- data/spec/cassettes/FatZebra_Purchase/_extend_/1_9_1.yml +109 -0
- data/spec/cassettes/FatZebra_Purchase/_extend_/1_9_2.yml +109 -0
- data/spec/cassettes/FatZebra_Purchase/_extend_/1_9_3.yml +109 -0
- data/spec/cassettes/FatZebra_Purchase/_increment/1_10_1.yml +109 -0
- data/spec/cassettes/FatZebra_Purchase/_increment/1_10_2.yml +109 -0
- data/spec/cassettes/FatZebra_Purchase/_increment/1_10_3.yml +109 -0
- data/spec/cassettes/FatZebra_Purchase/_increment/1_10_4.yml +109 -0
- data/spec/cassettes/FatZebra_Purchase/_void/1_6_1.yml +18 -30
- data/spec/cassettes/FatZebra_Purchase/_void/1_6_2.yml +18 -30
- data/spec/cassettes/FatZebra_Purchase/_void/1_6_3.yml +18 -30
- data/spec/cassettes/FatZebra_Purchase/_void/1_6_4.yml +18 -30
- data/spec/cassettes/FatZebra_Purchase/_void/1_7_1.yml +18 -30
- data/spec/cassettes/FatZebra_Purchase/_void/1_7_2.yml +18 -30
- data/spec/cassettes/FatZebra_Purchase/_void/1_7_3.yml +18 -30
- data/spec/cassettes/FatZebra_Purchase/_void/1_7_4.yml +18 -30
- data/spec/cassettes/FatZebra_Refund/_create/1_1_1.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_10.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_2.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_3.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_4.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_5.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_6.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_7.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_8.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_create/1_1_9.yml +16 -16
- data/spec/cassettes/FatZebra_Refund/_find/1_2_1.yml +24 -24
- data/spec/cassettes/FatZebra_Refund/_find/1_2_2.yml +24 -24
- data/spec/cassettes/FatZebra_Refund/_find/1_2_3.yml +24 -24
- data/spec/cassettes/FatZebra_Refund/_search/responds_with_the_newly-created_refunds.yml +40 -40
- data/spec/cassettes/FatZebra_Refund/_void/1_4_1.yml +24 -24
- data/spec/cassettes/FatZebra_Refund/_void/1_4_2.yml +24 -24
- data/spec/cassettes/FatZebra_Refund/_void/1_4_3.yml +24 -24
- data/spec/cassettes/FatZebra_Refund/_void/1_4_4.yml +24 -24
- data/spec/cassettes/FatZebra_WebHook/_create/1_1_1.yml +7 -13
- data/spec/cassettes/FatZebra_WebHook/_create/1_1_2.yml +7 -13
- data/spec/cassettes/FatZebra_WebHook/_create/1_1_3.yml +7 -13
- data/spec/cassettes/FatZebra_WebHook/_delete/1_4_1.yml +15 -27
- data/spec/cassettes/FatZebra_WebHook/_search/1_2_1.yml +160 -133
- data/spec/cassettes/FatZebra_WebHook/_search/1_2_2.yml +162 -135
- data/spec/cassettes/FatZebra_WebHook/_update/1_3_1.yml +15 -27
- data/spec/cassettes/FatZebra_WebHook/_update/1_3_2.yml +15 -27
- data/spec/lib/fat_zebra/authenticate_spec.rb +187 -0
- data/spec/lib/fat_zebra/card_spec.rb +8 -0
- data/spec/lib/fat_zebra/paypal/authorization_spec.rb +79 -0
- data/spec/lib/fat_zebra/paypal/billing_agreement_spec.rb +62 -0
- data/spec/lib/fat_zebra/paypal/capture_spec.rb +60 -0
- data/spec/lib/fat_zebra/paypal/order_spec.rb +35 -0
- data/spec/lib/fat_zebra/paypal/refund_spec.rb +36 -0
- data/spec/lib/fat_zebra/purchase_spec.rb +21 -3
- data/spec/lib/fat_zebra/refund_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -1
- data/spec/support/payloads.rb +135 -0
- metadata +61 -12
- 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
|
-
-
|
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-
|
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
|
-
-
|
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-
|
50
|
+
hook","id":"071-WH-NOQIX4KB"},"errors":[],"test":true}'
|
57
51
|
http_version:
|
58
|
-
recorded_at:
|
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-
|
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
|
-
-
|
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-
|
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
|
-
-
|
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-
|
101
|
+
Test hook","id":"071-WH-NOQIX4KB"},"errors":[],"test":true}'
|
114
102
|
http_version:
|
115
|
-
recorded_at:
|
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
|
-
-
|
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-
|
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
|
-
-
|
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-
|
50
|
+
hook","id":"071-WH-Q5W5NSU9"},"errors":[],"test":true}'
|
57
51
|
http_version:
|
58
|
-
recorded_at:
|
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-
|
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
|
-
-
|
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-
|
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
|
-
-
|
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-
|
101
|
+
Test hook","id":"071-WH-Q5W5NSU9"},"errors":[],"test":true}'
|
114
102
|
http_version:
|
115
|
-
recorded_at:
|
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
|