chrisk / fakeweb

Ruby test helper for injecting fake responses to web requests
MIT License
1.09k stars 134 forks source link

Regexp with query params fail without trailing slash after host #67

Open gerard76 opened 1 year ago

gerard76 commented 1 year ago
require 'fakeweb'
FakeWeb.allow_net_connect = false

reg = /http:\/\/a\.com\?a=1/
uri=URI("http://a.com?a=1")
FakeWeb.register_uri(:get, reg, body: 'ok')
Net::HTTP.get(uri)

results in a FakeWeb::NetConnectNotAllowedError (Real HTTP connections are disabled. Unregistered request: GET http://a.com/?a=1)

But uri.to_s.match reg gives a match

Registering the same url without regular expression also works

FakeWeb.clean_registry
uri=URI("http://a.com?a=1")
FakeWeb.register_uri(:get, uri.to_s, body: 'ok')
Net::HTTP.get(uri)

With a regular expression you need to add the trailing slash after the hostname to get a good result

FakeWeb.clean_registry
reg = /http:\/\/a\.com\/\?a=1/
uri=URI("http://a.com?a=1")
FakeWeb.register_uri(:get, reg, body: 'ok')
Net::HTTP.get(uri)

Seems inconsistent to me