Request method comparison is case sensitive
Opened this issue · 3 comments
I am building an integration and testing it with WebMock and run into this issue.
given I have this mock:
WebMock.stub(:get, "https://api.sandbox.paypal.com/v2/checkout/orders/ORDER_ID")
.to_return(body: {
"id" => "ID",
"status" => "COMPLETED",
}.to_json)
and this request:
HTTP::Client
.new(URI.parse("https://api.sandbox.paypal.com"))
.exec("get", "/v2/checkout/orders/ORDER_ID")
The request is not handled by WebMock, and the reason is that the method comparison is case sensitive: https://github.com/manastech/webmock.cr/blob/master/src/webmock/stub.cr#L66 in this case "get" == "GET"
I don't have time to fix it now, but I might do it later, using uppercase methods as a workaround now.
All right, so what is your suggestion here? Is this a Crystal HTTP::Client
issue? should it make sure that the request method is uppercase?
If it remains this way, maybe it should at least warn the user that it's not matching because it's lowercase or something like that? (for the next person who will run into this)
No, HTTP::Client should just pass through whatever it receives. And this would eventually lead to 400 Bad Request.
Maybe Webmock could intercept requests based on case-insensitive matching method and return 400 Bad Request.