FIX: When building URIs via Hash, Addressable expects URI#new and URI#parse to provide hash keys as symbols. One example of a little known occurrence where this would cause an issue is accessing the Google API via Google::APIClient::FileStorage, which stores and retrieves files as JSON - the keys of which are loaded in by the Google-Api-Client gem as strings. Here, we ensure that our options meet the format Addressable expects. The authorization/credential_uri= methods have been cleaned up a bit as well.
Paranoid normalization of user input; less silent errors as Addressable would simply not append options if it receives any as string parameters rather than symbol parameters. Refactored the multiple Enum#inject()'s that were found on update\! and update_token\!. Test coverage is ample from the current suite in spec/signet/oauth2/client_spec.rb. All tests pass.
Check that additional parameters coming in as string keys get parsed; and, added some tests to cover hash options in string format which is the use case for this PR.
Add more descriptive spec description
Resolve merge conflict
Merge branch 'momer-fix-url-options-format'