mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-10-04 00:00:47 -04:00
As reported in #608, integer-indexed maps currently work when passed as part of the body, but they are reverted to non-indexed maps when passed in the query. It turns out that we actually had two problems: 1. We weren't calling our `Util.encode_parameters` on our query parameters anywhere, and it's this method will does the integer encoding. 2. Even when I fixed (1) by calling `Util.encode_parameters`, Faraday would still strip the integer indexes as they were transformed in its default `NestedParamsEncoder`. Here we fix both issues by calling `Util.encode_parameters` and sending Faraday a custom encoder which bypasses its normal shenanigans. Unfortunately, this has turned out to be somewhat difficult to test because the integer-indexed maps also seem to confuse Webmock, which strips them down to standard maps (I even tried testing against a string, and it still got it wrong). I did use stripe-mock though to verify that we are now sending the right payload. Fixes #608.