Skip to content

Commit

Permalink
Merge pull request psf#863 from sigmavirus24/fix_hooks
Browse files Browse the repository at this point in the history
Fix psf#785 & add regression test.
  • Loading branch information
Kenneth Reitz committed Sep 23, 2012
2 parents c91f83f + 4dd3d1a commit 6a4062a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 2 deletions.
6 changes: 4 additions & 2 deletions requests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -462,8 +462,10 @@ def path_url(self):

def register_hook(self, event, hook):
"""Properly register a hook."""

self.hooks[event].append(hook)
if isinstance(hook, (list, tuple, set)):
self.hooks[event].extend(hook)
else:
self.hooks[event].append(hook)

def deregister_hook(self, event, hook):
"""Deregister a previously registered hook.
Expand Down
34 changes: 34 additions & 0 deletions tests/test_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -744,6 +744,40 @@ def add_bar_header(args):
assert 'foo' in response.text
assert 'bar' in response.text

def test_allow_list_of_hooks_to_register_hook(self):
"""Issue 785: https://github.com/kennethreitz/requests/issues/785"""
def add_foo_header(args):
if not args.get('headers'):
args['headers'] = {}

args['headers'].update({
'X-Foo': 'foo'
})

return args

def add_bar_header(args):
if not args.get('headers'):
args['headers'] = {}

args['headers'].update({
'X-Bar': 'bar'
})

return args

def assert_hooks_are_callable(hooks):
for h in hooks['args']:
assert callable(h) is True

hooks = [add_foo_header, add_bar_header]
r = requests.models.Request()
r.register_hook('args', hooks)
assert_hooks_are_callable(r.hooks)

r = requests.models.Request(hooks={'args': hooks})
assert_hooks_are_callable(r.hooks)

def test_session_persistent_cookies(self):

s = requests.session()
Expand Down

0 comments on commit 6a4062a

Please sign in to comment.