-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
In saddle version 0.1.0 the faraday version was bumped to ~> 0.9.0. With this change the stubs changed behaviour.
Before 0.1.0:
stubs = Faraday::Adapter::Test::Stubs.new
default_client = Saddle::Client.create(:stubs => stubs, :path_prefix => 'api/v1')
stubs.get('/api/v1') { [200, {}, 'party'] }
default_client.requester.get('') # Returned party
After 0.1.0
stubs = Faraday::Adapter::Test::Stubs.new
default_client = Saddle::Client.create(:stubs => stubs, :path_prefix => 'api/v1')
stubs.get('/api/v1') { [200, {}, 'party'] }
default_client.requester.get('')
# Returned error
# Faraday::Adapter::Test::Stubs::NotFound (no stubbed request for get http://localhost/api/v1/ )
It seems that when making a request to '' the path that is used is the path_prefix + '/'.
The stub with faraday version < 0.9.0 also added the '/' at the end, but this changed in 0.9.0, where they started using Faraday::Utils.normalize_path which ends up using URI.
Is the '/' expected to be added at the end of the path or is this a bug? If it's the expected way just changing the stub to
stubs.get('/api/v1/') { [200, {}, 'party'] }
fixes the issue.
As a side note, after 0.1.0 when making a request with something rather than blank it always adds the '/'. For example:
stubs = Faraday::Adapter::Test::Stubs.new
default_client = Saddle::Client.create(:stubs => stubs, :path_prefix => 'api/v1')
stubs.get('/api/v1') { [200, {}, 'party'] }
default_client.requester.get('?a=1') # Faraday::Adapter::Test::Stubs::NotFound (no stubbed request for get http://localhost/api/v1/?a=2 )
stubs.get('/api/v1/test') { [200, {}, 'party'] }
default_client.requester.get('test') # Returns "party"
default_client.requester.get('/test') # Returns "party"
Before it has some strange behaviour:
stubs = Faraday::Adapter::Test::Stubs.new
default_client = Saddle::Client.create(:stubs => stubs, :path_prefix => 'api/v1')
stubs.get('/api/v1') { [200, {}, 'party'] }
default_client.requester.get('?a=1') # Returns "party"
stubs.get('/api/v1/test') { [200, {}, 'party'] }
default_client.requester.get('test') # Faraday::Adapter::Test::Stubs::NotFound (no stubbed request for get /api/v1/api/v1/test )
default_client.requester.get('/test') # Returns "party"
Metadata
Metadata
Assignees
Labels
No labels