Commit 2cddc88b authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki Committed by Jérome Perrin

erp5_oauth2_authorisation: use HTTPResponse.listHeaders() instead of accessing properties directly.

parent 7ced3d12
...@@ -409,43 +409,39 @@ class TestOAuth2(ERP5TypeTestCase): ...@@ -409,43 +409,39 @@ class TestOAuth2(ERP5TypeTestCase):
exc = None exc = None
finally: finally:
setSecurityManager(current_security_manager) setSecurityManager(current_security_manager)
cookie_dict = response.cookies.copy() cookie_dict = {}
response_header_dict = {} response_header_dict = {}
for item_list in ( for key, value in response.listHeaders():
six.iteritems(response.headers), key = key.lower()
response.accumulated_headers, if key == 'set-cookie':
): # XXX: minimal Set-Cookie parser
for key, value in item_list: cookie_name, cookie_body = value.split('=', 1)
key = key.lower() # RFC6265 makes quoting obsolete
if key == 'set-cookie': # assert cookie_body[0] == '"', repr(cookie_body)
# XXX: minimal Set-Cookie parser cookie_value, cookie_attributes = cookie_body.split(';', 1)
cookie_name, cookie_body = value.split('=', 1) cookie_value = cookie_value.strip('"')
# RFC6265 makes quoting obsolete cookie_value_dict = {
# assert cookie_body[0] == '"', repr(cookie_body) 'value': urllib.unquote(cookie_value),
cookie_value, cookie_attributes = cookie_body.split(';', 1) }
cookie_value = cookie_value.strip('"') for cookie_attribute in cookie_attributes.split(';'):
cookie_value_dict = { cookie_attribute = cookie_attribute.lstrip()
'value': urllib.unquote(cookie_value), if '=' in cookie_attribute:
} cookie_attribute_name, cookie_attribute_value = cookie_attribute.split('=', 1)
for cookie_attribute in cookie_attributes.split(';'): else:
cookie_attribute = cookie_attribute.lstrip() cookie_attribute_name = cookie_attribute
if '=' in cookie_attribute: cookie_attribute_value = True
cookie_attribute_name, cookie_attribute_value = cookie_attribute.split('=', 1) cookie_attribute_name = cookie_attribute_name.lower()
else: if cookie_attribute_name == 'max-age':
cookie_attribute_name = cookie_attribute cookie_attribute_name = 'max_age'
cookie_attribute_value = True cookie_attribute_value = int(cookie_attribute_value, 10)
cookie_attribute_name = cookie_attribute_name.lower() elif cookie_attribute_name == 'httponly':
if cookie_attribute_name == 'max-age': cookie_attribute_name = 'http_only'
cookie_attribute_name = 'max_age' assert cookie_attribute_name not in cookie_value_dict, (cookie_attribute_name, value)
cookie_attribute_value = int(cookie_attribute_value, 10) cookie_value_dict[cookie_attribute_name] = cookie_attribute_value
elif cookie_attribute_name == 'httponly': assert cookie_name not in cookie_dict, (cookie_name, cookie_value_dict)
cookie_attribute_name = 'http_only' cookie_dict[cookie_name] = cookie_value_dict
assert cookie_attribute_name not in cookie_value_dict, (cookie_attribute_name, value) else:
cookie_value_dict[cookie_attribute_name] = cookie_attribute_value response_header_dict[key] = value
assert cookie_name not in cookie_dict, (cookie_name, cookie_value_dict)
cookie_dict[cookie_name] = cookie_value_dict
else:
response_header_dict[key] = value
if query_trace is not None: if query_trace is not None:
self.__query_trace.append('request=%s\nresponse=%s' % ( self.__query_trace.append('request=%s\nresponse=%s' % (
query_trace_request, query_trace_request,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment