From 23f1ce8522155840b779c30df995a499376d45bc Mon Sep 17 00:00:00 2001 From: Ryan Woods Date: Wed, 26 Oct 2022 16:08:10 +0200 Subject: [PATCH 1/4] Disable Rubocop introducing new rules As linting warnings is included in the test suite, if introducing new rules is not controlled, the suite will keep breaking upon new rules. --- .rubocop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.rubocop.yml b/.rubocop.yml index 6948cff3..978852fd 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,7 +2,7 @@ require: - solidus_dev_support/rubocop AllCops: - NewCops: enable + NewCops: disable TargetRubyVersion: 2.6 Layout/FirstArgumentIndentation: From 771e004ea7f5ef904fccfae29d2581e783eadcb1 Mon Sep 17 00:00:00 2001 From: Ryan Woods Date: Wed, 2 Nov 2022 16:17:22 +0100 Subject: [PATCH 2/4] Remove Rubocop TargetRubyVersion We don't usually use TargetRubyVersion in other extensions: - https://github.com/solidusio/solidus_auth_devise/blob/4a4f9f213d45b77cead29f45bf5bfd0d2021ab46/.rubocop.yml - https://github.com/solidusio/solidus_stripe/blob/993a43db00ae15984e505a6a4641db955c0eaf1b/.rubocop.yml Also, this was causing a lint warning as the version did not match the minimum Ruby version listed in the gemspec. TargetRubyVersion can't be 2.5 as it's not supported by Rubocop, and thus Rubocop shouldn't ditact the gem's required version. --- .rubocop.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.rubocop.yml b/.rubocop.yml index 978852fd..864d196f 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -3,7 +3,6 @@ require: AllCops: NewCops: disable - TargetRubyVersion: 2.6 Layout/FirstArgumentIndentation: EnforcedStyle: consistent From d6dfe335c9f97601a49331b0686118e08f8fdc6f Mon Sep 17 00:00:00 2001 From: Ryan Woods Date: Wed, 26 Oct 2022 17:25:58 +0200 Subject: [PATCH 3/4] Fix broken specs due to Solidus factory changes Due to the following PR, the Country factory no longer always returns true for `states_required`. It can be true for the appropriate countries that require a state in shipping addresses. Because of this, addresses using a country where `states_required` is true, such as the US, need a state in the Spree::Address record to be valid. https://github.com/solidusio/solidus/pull/4272 --- .../solidus_paypal_braintree/transaction_import_spec.rb | 6 ++++-- spec/models/solidus_paypal_braintree/transaction_spec.rb | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/spec/models/solidus_paypal_braintree/transaction_import_spec.rb b/spec/models/solidus_paypal_braintree/transaction_import_spec.rb index f14e8acc..01095395 100644 --- a/spec/models/solidus_paypal_braintree/transaction_import_spec.rb +++ b/spec/models/solidus_paypal_braintree/transaction_import_spec.rb @@ -39,6 +39,10 @@ ) end + before do + create(:state, state_code: "WA") + end + it { is_expected.to be false } it "sets useful error messages" do @@ -115,7 +119,6 @@ } let(:payment_method) { create_gateway } - let(:country) { create :country, iso: 'US', states_required: true } let(:transaction_address) { nil } let(:end_state) { 'confirm' } @@ -132,7 +135,6 @@ before do # create a shipping method so we can push through to the end - country create :shipping_method, cost: 5 # ensure payments have the same number so VCR matches the request body diff --git a/spec/models/solidus_paypal_braintree/transaction_spec.rb b/spec/models/solidus_paypal_braintree/transaction_spec.rb index 3965b9e5..6c2038ef 100644 --- a/spec/models/solidus_paypal_braintree/transaction_spec.rb +++ b/spec/models/solidus_paypal_braintree/transaction_spec.rb @@ -28,6 +28,7 @@ before do create(:country, iso: "US") + create(:state, state_code: "WA") end it { is_expected.to be true } From e5a1a574cce330556d21f53d37b22ee9d849232b Mon Sep 17 00:00:00 2001 From: Ryan Woods Date: Fri, 28 Oct 2022 13:49:31 +0200 Subject: [PATCH 4/4] Fix 3D Secure specs Cardinal, that handles "3D Secure" for Braintree made some changes to how the legacy 3Ds test numbers are handled. Because of this, the numbers were changed to trigger the correct scenarios needed. The DOM of the Cardinal iFrame also changed and needed tweaking. Cardinal also likes the expiration date to be January and 3 years ahead of today's year. References: - https://cardinaldocs.atlassian.net/wiki/spaces/CCen/pages/400654355/3DS+1.0+Test+Cases - https://cardinaldocs.atlassian.net/wiki/spaces/CCen/pages/903577725/EMV+3DS+Test+Cases#Test-Case-12%3A-Error-on-Authentication --- .../braintree_credit_card_checkout_spec.rb | 13 ++- .../cassettes/checkout/valid_credit_card.yml | 89 +++++++++++-------- 2 files changed, 58 insertions(+), 44 deletions(-) diff --git a/spec/features/frontend/braintree_credit_card_checkout_spec.rb b/spec/features/frontend/braintree_credit_card_checkout_spec.rb index 1c63bdde..e173a4a7 100644 --- a/spec/features/frontend/braintree_credit_card_checkout_spec.rb +++ b/spec/features/frontend/braintree_credit_card_checkout_spec.rb @@ -7,7 +7,7 @@ let(:three_d_secure_enabled) { false } let(:venmo_enabled) { false } let(:card_number) { "4111111111111111" } - let(:card_expiration) { "01/#{Time.now.utc.year + 2}" } + let(:card_expiration) { "01/#{Time.now.utc.year + 3}" } before do braintree.save! @@ -107,7 +107,6 @@ context 'with 3D secure enabled' do let(:three_d_secure_enabled) { true } - let(:card_number) { "4000000000000002" } it 'checks out successfully' do authenticate_3ds @@ -121,7 +120,7 @@ end context 'with 3ds authentication error' do - let(:card_number) { "4000000000000028" } + let(:card_number) { "4000000000001125" } it 'shows a 3ds authentication error' do authenticate_3ds @@ -183,10 +182,10 @@ def authenticate_3ds within_frame("Cardinal-CCA-IFrame") do - within_frame("authWindow") do - fill_in("password", with: "1234") - click_button("Submit") - end + fill_in("challengeDataEntry", with: "1234") + continue_button = find_button("SUBMIT") + continue_button.scroll_to(continue_button) + continue_button.click end end end diff --git a/spec/fixtures/cassettes/checkout/valid_credit_card.yml b/spec/fixtures/cassettes/checkout/valid_credit_card.yml index 41ff5ada..5b0adf4a 100644 --- a/spec/fixtures/cassettes/checkout/valid_credit_card.yml +++ b/spec/fixtures/cassettes/checkout/valid_credit_card.yml @@ -2,12 +2,13 @@ http_interactions: - request: method: post - uri: https://api.sandbox.braintreegateway.com/merchants/7rdg92j7bm7fk5h3/customers + uri: https://api.sandbox.braintreegateway.com/merchants/652zwb86tqk9v5wz/customers body: encoding: UTF-8 string: | + solidus@example.com fake-valid-nonce headers: @@ -16,61 +17,68 @@ http_interactions: Accept: - application/xml User-Agent: - - Braintree Ruby Gem 2.98.0 + - Braintree Ruby Gem 3.4.0 X-Apiversion: - - '5' + - '6' Content-Type: - application/xml Authorization: - - Basic bXdqa2t4d2NwMzJja2huZjphOTI5OGY0M2IzMGM2OTlkYjMwNzJjYzRhMDBmN2Y0OQ== + - Basic bnk4c2MzYjY0OHE3eDVoNjpmM2VjZWNlNTI5MTIwMjAzMGU1MDQwMWY1MGMwZWNhNw== response: status: code: 201 - message: Created + message: '' headers: Date: - - Fri, 13 Sep 2019 14:28:49 GMT + - Fri, 28 Oct 2022 11:48:35 GMT Content-Type: - application/xml; charset=utf-8 - Transfer-Encoding: - - chunked X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block X-Content-Type-Options: - nosniff + X-Download-Options: + - noopen + X-Permitted-Cross-Domain-Policies: + - none + Referrer-Policy: + - strict-origin-when-cross-origin X-Authentication: - basic_auth X-User: - - 3v249hqtptsg744y + - 4b9yb8scv4785hg6 Vary: - - Accept-Encoding + - Accept-Encoding, Origin Content-Encoding: - gzip Etag: - - W/"5f82ed8f3b447dd005c8921f319d2f5c" + - W/"fc78821a32ceefb0bb66822d19642e82" Cache-Control: - max-age=0, private, must-revalidate X-Runtime: - - '0.430171' + - '0.359927' X-Request-Id: - - 01-1568384928.656-92.223.152.178-12982788 + - 2bde7385-30c6-4e06-b694-ea49ffdab2ff Content-Security-Policy: - frame-ancestors 'self' X-Broxyid: - - 01-1568384928.656-92.223.152.178-12982788 + - 2bde7385-30c6-4e06-b694-ea49ffdab2ff Strict-Transport-Security: - max-age=31536000; includeSubDomains + Paypal-Debug-Id: + - 83f2d6168bcf4 + Transfer-Encoding: + - chunked body: encoding: ASCII-8BIT string: !binary |- - H4sIAKGne10AA6xWTXOjOBC951e4uBMMtseQwuSW7G7VzFbtOtlNLlMCNUaxkFhJOPb8+pUwX/7A41Tm5n79Wmpar7sd3m9zOtqAkISzheXejq0RsIRjwlYL62n5YPvWfXQTJqVUPAcR3YxGIcHR7Mvc9dzAn4aOtgyonUmGmLK1PRd4FXhv8zifp+tZNgmdvtewUyKkshnKYcQIXVhKlGA5lYuiIU/C8wKx3QkOOSL0BC0yzk7PSNH2BHuHWBJ15j4BSAG2kRqpXQELC2tTkRysyBu7gT0ObHeydKd3nn83DV5Dpwuo4ssCfyy+C9jfXxXdTglQLPcprSiPETVVfJk8/8CPgXr994/02/Jl8nX5+/bP5WocOh2n/ghMlJ0ggWWdBhIC7SzjPfTvEY3FhFItABthLEDKBt8/vZ82b15jjTbsQ1304Y48/PA1YfD5m9vOi6D2SiUAVJP4AAm2Chg2db5IozxBlKihqwSsdM8MOAsulX4D3UgQBVN3PA+dPtT/nJIpsatgG9EiQ97ghx8zJ9cwWanfgCQ/oV4q+Oe6oD7lk71QneEM6FLrlUXTsev5vuGwFjeits110TORSGfW2n1GxinWMh0qgVGcGV8E0eiJrRl/Z/qkDuto+1Ly1CZSlogl0OefOtvAzxf4Az3YUY2+lZZw9PR3j9miDR9DTFT3JXuzc6aopE3iMecUELMiU0FDrZwduRT6dWzdOCU1H9A79NjThMC2IKLKx845U1nkeqFzAp5h7wAJXT5vfECv0AM24OPcU0Ql1FG9TLqpmjw+zOJ/nkv86FL8mG1eH4K3F9efvP721+7r2/poAFfBGSCqMi22niR6WEMjOVqBXQoaZUoV8s5xkJSg5G0sEGFmtK10dd7R7lbrzynQLgemvuegMo6/U77izkbr/LZgq3tgGyI4M4SFRAzHfKvHdnt+e6MWo+moGLF1l9oB2lCrwTyNXN93Q6c2Gp9ORXDa648GaAkCCqQL8o1rX/2783FcJtVfgy6+wxqaLGOZCFKYhzzcZF2rKr4GFs2xEl4QOnur8ZWM/FdW8zCuGkJXhujVKiKUzmbzaZDOgtRN8cTHX5I0cTWQTmd+nGrBDYa2Z/+C6bYBlnNb4vWAIFt/L0LoNPbterYi1ajob/cDoJqfYT1L4eyfg+NBe7L+PzJ4Lq/+y4v/0tq/YulftfIvLvwL6/7KZX/tqr920V+95n+65H/JBvp0C4ROT22tAdrs5BTd/A8AAP//AwAnpmPksQwAAA== - http_version: - recorded_at: Fri, 13 Sep 2019 14:28:50 GMT + H4sIAJPBW2MAA6xWy3KjOhDd5ytc7AkG7AlOYXIXU0nVVCWbO8ncyWZKoMbWWEiMJGyTr78S5uUHjlOZHTp9Wmpap1sd3m0zOlqDkISzueVej60RsIRjwhZz6/n7vR1Yd9FVmBRS8QxEdDUahQRHX4Kb8exm4o9DR68MqI3JEjFlG+vUe9vEwRf1ZzVbTzdvodO3GnZKhFQ2QxmMGKFzS4kCLKcyUTRkSXiWI1Ye4ZAhQiPJKcGF/Ae2KMspXGt26OxMhpQvOTveMkXbI2wDsSTqxPECkAJsIzVSZQ5zC+ulIhlYkTf2PNsd217w3XVvJ8GtP30Nnc6h8i9y/DH/zmF3fnUHdkqAYrkLaUF5jKhJ6k//5Q0/zNTrf9/Sp98L//Hryn/6+rgJnY5T/wQmyk6QwLIOAwmBSstY9+07RGMxoVTrwUYYC5CywXdKKFkjgRprpGLvy6QPd+RhHdSEQTU0p53WRG2VSgCoJvABEmwVMGzyfJZGeYIoUUNHCVjoEhow5lwqfQe6riCaTdzxTej0of7vFEyJsoJtRPMl8gZ//JDpX8Jkhb4DkrxDPZPwqo7MNjGIoV0+Vyj1Lp8sl2oPZ0C6WtIsmoxdLwgMh7W40b1tjoteiEQ6snbdZyw5xVrJQ1kyojQNjyAaPbMV4xtdIz2so+2yzVObSFkglkCff2xsHT+f4A+UaUe9pN2cIB/tY0pJ6WqJnv/tObRow8cQE9VlZLfsjCkqaJOAmHMKiFmRuQlDrYwduRD6lm1dowU1iehtemhpXGCbE1HFY2ecqWXkevo5OQRPsEtAwlyDv0ev0D024MPYU0Ql1F69SLpEJg/30/jHS4EfXIofluvX+9nvn+6sfPRkGf/4xl4P233lvwRE1VLrtqeuHtbQSIYWYBeCRkulcnnrOEhKUPI6Fogw00gXOkEbVJqX1clRmQFTvzJQS45/Ub7gzlqXzHXOFnfA1kRwZghziRiO+VY/Eu3+7Yla16Y4Y8RWXWh7aEOtnoFJ5AaBGzr1orHpUASnvVJrgJYgIEc6IU9c2+rvzsZxkVRzSeffYQ1NFrFMBMnNXe6/m13VK74CFgl/5WXxYhE6u3VjLRj5UzSNU2+tc0P0U66lgv3pdIpT8HEwvYGJG7hp4qVwo6FkPJnpxjbk2u79F1rlGljGbYlXA6ps7T0PocPY1exQToi0GagNFyu7Sgd5G5T9KWo9lDgHU8keUDX1sG7wcHKoOez+R2PLR7rh+ZHl/MBybly5YFi5aFQ5O6icGVMuHFIuHVEuHVAuHk/eHU7eHU3+yrv56VoLnZ4c2wXoZae36Op/AAAA//8DAOjCcKiZDQAA + recorded_at: Fri, 28 Oct 2022 11:48:35 GMT - request: method: post - uri: https://api.sandbox.braintreegateway.com/merchants/7rdg92j7bm7fk5h3/transactions + uri: https://api.sandbox.braintreegateway.com/merchants/652zwb86tqk9v5wz/transactions body: encoding: UTF-8 string: | @@ -82,7 +90,7 @@ http_interactions: true - 7dtr29 + r3k2mbgg John Doe @@ -92,7 +100,7 @@ http_interactions: AL US - 567121984 + 687097430 sale headers: @@ -101,56 +109,63 @@ http_interactions: Accept: - application/xml User-Agent: - - Braintree Ruby Gem 2.98.0 + - Braintree Ruby Gem 3.4.0 X-Apiversion: - - '5' + - '6' Content-Type: - application/xml Authorization: - - Basic bXdqa2t4d2NwMzJja2huZjphOTI5OGY0M2IzMGM2OTlkYjMwNzJjYzRhMDBmN2Y0OQ== + - Basic bnk4c2MzYjY0OHE3eDVoNjpmM2VjZWNlNTI5MTIwMjAzMGU1MDQwMWY1MGMwZWNhNw== response: status: code: 201 - message: Created + message: '' headers: Date: - - Fri, 13 Sep 2019 14:28:51 GMT + - Fri, 28 Oct 2022 11:48:36 GMT Content-Type: - application/xml; charset=utf-8 - Transfer-Encoding: - - chunked X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block X-Content-Type-Options: - nosniff + X-Download-Options: + - noopen + X-Permitted-Cross-Domain-Policies: + - none + Referrer-Policy: + - strict-origin-when-cross-origin X-Authentication: - basic_auth X-User: - - 3v249hqtptsg744y + - 4b9yb8scv4785hg6 Vary: - - Accept-Encoding + - Accept-Encoding, Origin Content-Encoding: - gzip Etag: - - W/"1d24081e67d1d1a64caabfc2d92689e6" + - W/"b235108105829caa5ec570cef992b0d5" Cache-Control: - max-age=0, private, must-revalidate X-Runtime: - - '0.405298' + - '0.458590' X-Request-Id: - - 01-1568384930.852-92.223.152.178-12983242 + - 75cd5459-a138-42d3-a41b-85fcd3baf633 Content-Security-Policy: - frame-ancestors 'self' X-Broxyid: - - 01-1568384930.852-92.223.152.178-12983242 + - 75cd5459-a138-42d3-a41b-85fcd3baf633 Strict-Transport-Security: - max-age=31536000; includeSubDomains + Paypal-Debug-Id: + - 6370d1ef7ffe4 + Transfer-Encoding: + - chunked body: encoding: ASCII-8BIT string: !binary |- - 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 - http_version: - recorded_at: Fri, 13 Sep 2019 14:28:51 GMT -recorded_with: VCR 5.0.0 + H4sIAJTBW2MAA6xZ23LbNhB9z1do9E5T1CWmMzRTt27SZmrPNGmSJi8ZkIRExCTAAqBs5eu7IMCbCFJKGz+ZuwcguNjL2VXw8inPZnvMBWH0eu5dLOYzTGOWELq7nr//65Xjz1+GzwLJERUoloAKn81mAUnCTbGiib/wAxcelExIJEsRolKmjJNvOAlcI1JaeShwKFCGA7f6V8niknN428EhgjnwUhz++v5t4A7FCoxyVlIZLhcXi0XgmqdW4XD8T4mFxEkf0pErcI55nCIQoziu1HD4TyxjgWvTVJ9VRo5FN6Mku55LXuK5q3dG8BJ+FpTxBJCw/9sr/ed4y9XNz78EbqOpzMMxgnM7SM6Uya7nCTxKkuM5fOJy6XgLZ+n/5Xkv1v6L1fPPYLhmQbW+LJLvW98uMNcjJIPvUQ/6zp/7l4ury/VqUV86iLeEC+lQlOPj7wRlhsZ1McsLRA8WDc4RyULBMpKU4if8hPIiwxeAD1yt0rBHHAkibVsXKaM2+RY9WaS7jEUoqzxh9eFb8vpKfv77zfb+6251d/uwur+9ewzcFqMs43ZNE0QkyyBeWjMdqNU+4RuWgqYjODJSeMsgPNrHU3YSkmMMnpYkHAsReovZH2yPs8PsXaWY3TMu00dwfhWJPaix85PENFEXrsW2C2Qxyog8hL9hThMGx28kGsDxTiWFmz8C1/xrroBB8Gc6fJfewvedxXKzCdyuvP4+CBN+0J/8nsKNJvAB4IhixrazG7AyiRGYvAvrr1SbOSgrUrQM379roV352IoVrLixLVnZltCyOk7orxdHa2pN5R4djwADbUua2NJAoxEmPhHn6NBTwt10Uq9tkwJxScCgAkuZ4RxDxumvsG3e5uhT23e2jZCMUysmJUXRDQBb5P34LNF3aVsaOd+9LSrtzbbk0nqw9bytm06oO655Fmp1CmX8b3A5bvd2TEp3tgRniTC+YOqUcjeAdR3CeE7EWIYRnYdblAlIUBMr9I574WDOGYfaKwpGBbYaq8J1jNlHh3fwoklAvUXfD+y7TGIqw+z3R9LfIcAHQgXdQWp6RAfQfMU6bqDsiqGrBAVnMbwN7FDHG6rg1U7+7cd3b59DPpwC9XfpH8VbKJIzph1ZKSEmwpsCNHvFz8YQlWmThKiTgPGHsMG37hmJ1QVt4eJhBXhjhPnQIqUiR/AWzXNGUBI9OZq8WVX4CeeFHPHNFqBTU4zMo74nQwXHrgpyxSORqUOxfGT8wZHsAY9FwdSSmr6BBZ0Y8ZoKaB1fPSzzaLeDw9bYikTQcL3wlr6vygftZsZ16Pm+Z4jBug5+2NapmPQHIlR5bJ7r5FcQrl0pZ1SmobcE9nQsHGAPGHHFDlc9cCU17zXMx1Gpswr5quIOpO0pU5ZVl21PiCRHO+yUPAtTKQvxwnURGFWKi4gjQlXYmnhT/M8t0EHVoi85hlhJvmRsx9w9fP9FQXcvMd0TzqgCXAtEk4g9AQ9r9jfZm+MCATm7Z+oK9f9ak2KUyRROrFjIA2WPQHY6Mg1KcERkq9ePRlVyuDhwsl2ZKRrdQR1rmtKmugWo3i20IzPnRQfOsg6iFhjzCVGqHBwh+tBietJ+sWBbR2kRjXH3rUNlbS6WlHHVDLUnaGXHBDp+/WoTffxQJq+9LHmd7j+/uvr6ybs63C3FIfr4hn4+ptKdAqSc1+IgJSUQtSZXwCq4XQL1C7w0WW02m2SLV4m/ucRrz/e28XKLL0EUL9ZX0M+MLdU77zHNmSOSh5EIb/RHB4XTKwsNS+1RxJuO2EkJBAc/9HhYw2EqBIZXGTdSaQJaNFDkxZltW4NvdphsxfW3jHTT2uQCbJTiLGM/URyBz0YXBHqIStwcssMbBYO8jkNUEDjMUK4/1T3+1kZi7KMTMZjWyjHLSMScFKM8taNvMmpFwp0CeBFLHKCCjrKkxcWOkHAsLq1YOPLRe1SZdKAiWkh2QkTlL1Yd1ruw2hdHsuNYIwv5bHi2/qZAYNUgBb5rxL0bva5WKaIUZ+E73XWDMxuB7gL4XtX3LcZjlVm9mz06+koHWrBFVHKhG4kES2ji6ya0r7JfUKcLsb++jxkMkM6E4yf10VAu+MljRIrFnL1QMWXwcyDdtl3LOLZ0J3CfI0ZTJitK1R9bOjto0TiWJacNV5tqAHV5R8lXqN/qNTasqbkOocCiS91hKp6hs90Xle0CdwzU56EdA/bpapeKjoJO71WR11N7NQy3pmzTXcoApdYPe3kiHpT3onYKdDwgrcI+JqIal2gKrmLWSIyjcFRCAjLhpjBQtXhYib/Ao9QdR+COAOvXVFJ1HChGBXgDUF57ErBBjw5r2huLayiCShBkT+igHegzt0O7uD3DBDIFQueog0PsYPCWLbOOE4Sz5dCnTrTazdRhLCHV6XdM3xD23gAkXKga6y2Wvuet/RU0aCO4sQZLOT2abLDqsOjHYMW2sRgf1nrOYt2t+mPLTe5XdG5ssiQ5OT35MdOphq3ZU8Pk8GlyrXXA1awYDgvsI6vxBS3NTH57k0b0Pv20eltEy832/u+bb1H+5/rudnc82NV2O3HuofnGT6HRe1BWvTFUi5qPQkO2Wm+eX6pCPIpRW6iUirJMlyqrK3cQk5Y+iTMuivN9FbLDS4j/KcHN+OCgw19D6p9Batat28LRlh/znNDKhOfAm91ttKnzG09v2n1yXvjjh4FW+tb9qak9YAC5zNkDAYUGZSxZdyGGRkL7WY8exoYaKkfmtgxa12wggpgUdRtrr1z/JZom24zv+vHv/4zB/u8g7EcN8k657ajjnuG6k8474b6nHHiiA7E68XcH/neH/sz6S/J/C5/TIdKhCUenG5v+n5jKVc+9oV5XcuaYYRC3va47fPYvAAAA//8DAJzUeSzVHwAA + recorded_at: Fri, 28 Oct 2022 11:48:36 GMT +recorded_with: VCR 6.1.0