diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2013-05-25 03:09:00 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2013-05-25 03:09:00 (GMT) |
commit | ce750fcf473b780367f83c0f10d6a0adcf22bdef (patch) | |
tree | 448586ced81b6f1b9b82c5bfb6dc50641af1a6d8 | |
parent | 76b568d2de4ebb90c110eb98d8d0bf6b80359660 (diff) |
Push through the http.Client.call all HTTP headers
-rw-r--r-- | sugar_network/db/commands.py | 63 | ||||
-rw-r--r-- | sugar_network/db/router.py | 45 | ||||
-rw-r--r-- | sugar_network/node/master.py | 4 | ||||
-rw-r--r-- | sugar_network/toolkit/http.py | 11 | ||||
-rwxr-xr-x | tests/integration/node_packages.py | 26 | ||||
-rwxr-xr-x | tests/units/db/router.py | 60 | ||||
-rwxr-xr-x | tests/units/node/obs.py | 12 | ||||
-rwxr-xr-x | tests/units/node/sync_master.py | 50 |
8 files changed, 141 insertions, 130 deletions
diff --git a/sugar_network/db/commands.py b/sugar_network/db/commands.py index 6bc5224..07a733b 100644 --- a/sugar_network/db/commands.py +++ b/sugar_network/db/commands.py @@ -14,6 +14,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. import logging +from email.utils import formatdate from sugar_network import toolkit from sugar_network.db import env @@ -156,20 +157,66 @@ class Request(dict): class Response(dict): - #: Response payload length - content_length = None - #: Payload MIME type - content_type = None - #: UNIX seconds of last modification - last_modified = None - def __init__(self, **kwargs): """Initialize parameters dictionary using named arguments.""" dict.__init__(self, kwargs) + @property + def content_length(self): + return int(self.get('content-length') or '0') + + @content_length.setter + def content_length(self, value): + self.set('content-length', value) + + @property + def content_type(self): + return self.get('content-type') + + @content_type.setter + def content_type(self, value): + if value: + self.set('content-type', value) + elif 'content-type' in self: + self.remove('content-type') + + @property + def last_modified(self): + return self.get('last-modified') + + @last_modified.setter + def last_modified(self, value): + self.set('last-modified', + formatdate(value, localtime=False, usegmt=True)) + + def items(self): + result = [] + for key, value in dict.items(self): + if type(value) in (list, tuple): + for i in value: + result.append((key, str(i))) + else: + result.append((key, str(value))) + return result + def __repr__(self): args = ['%s=%r' % i for i in self.items()] - return '<db.Response %s>' % ' '.join(args) + return '<Response %s>' % ' '.join(args) + + def __getitem__(self, key): + return self.get(key.lower()) + + def __setitem__(self, key, value): + return self.set(key.lower(), value) + + def __delitem__(self, key, value): + self.remove(key.lower()) + + def set(self, key, value): + dict.__setitem__(self, key, value) + + def remove(self, key): + dict.__delitem__(self, key) class CommandsProcessor(object): diff --git a/sugar_network/db/router.py b/sugar_network/db/router.py index 36ef5fc..bb8f701 100644 --- a/sugar_network/db/router.py +++ b/sugar_network/db/router.py @@ -20,7 +20,7 @@ import time import types import logging import mimetypes -from email.utils import parsedate, formatdate +from email.utils import parsedate from urlparse import parse_qsl, urlsplit from bisect import bisect_left from os.path import join, isfile, split, splitext @@ -307,52 +307,9 @@ class _Request(Request): class _Response(Response): - # pylint: disable-msg=E0202 status = '200 OK' - @property - def content_length(self): - return int(self.get('Content-Length') or '0') - - @content_length.setter - def content_length(self, value): - self['Content-Length'] = str(value) - - @property - def content_type(self): - return self.get('Content-Type') - - @content_type.setter - def content_type(self, value): - if value: - self['Content-Type'] = value - elif 'Content-Type' in self: - del self['Content-Type'] - - @property - def last_modified(self): - return self.get('Last-Modified') - - @last_modified.setter - def last_modified(self, value): - self['Last-Modified'] = formatdate(value, localtime=False, usegmt=True) - - def items(self): - result = [] - for key, value in dict.items(self): - if type(value) in (list, tuple): - for i in value: - result.append((key, str(i))) - else: - result.append((key, str(value))) - return result - - def __repr__(self): - args = ['status=%r' % self.status, - ] + ['%s=%r' % i for i in self.items()] - return '<db.Response %s>' % ' '.join(args) - def _parse_accept_language(accept_language): if not accept_language: diff --git a/sugar_network/node/master.py b/sugar_network/node/master.py index 6871244..30f6ebd 100644 --- a/sugar_network/node/master.py +++ b/sugar_network/node/master.py @@ -243,7 +243,7 @@ class _Cookie(list): self[op, layer].include(seq) def store(self, response): - response['Set-Cookie'] = [] + response.set('set-cookie', []) if self: _logger.debug('Postpone %r in cookie', self) self._set_cookie(response, 'sugar_network_pull', @@ -280,7 +280,7 @@ class _Cookie(list): def _set_cookie(self, response, name, value, age=3600): cookie = '%s=%s; Max-Age=%s; HttpOnly' % (name, value, age) - response['Set-Cookie'].append(cookie) + response.get('set-cookie').append(cookie) def _unset_cookie(self, response, name): self._set_cookie(response, name, 'unset_%s' % name, 0) diff --git a/sugar_network/toolkit/http.py b/sugar_network/toolkit/http.py index b2d676d..e51ac68 100644 --- a/sugar_network/toolkit/http.py +++ b/sugar_network/toolkit/http.py @@ -57,7 +57,7 @@ class Redirect(StatusPass): def __init__(self, location): StatusPass.__init__(self) - self.headers = {'Location': location} + self.headers = {'location': location} class BadRequest(Status): @@ -235,9 +235,14 @@ class Client(object): allow_redirects=request.allow_redirects) if reply.status_code == 303: - raise Redirect(reply.headers['Location']) + raise Redirect(reply.headers.get('location')) if response is not None: + if 'transfer-encoding' in reply.headers: + # `requests` library handles encoding on its own + del reply.headers['transfer-encoding'] + response.update(reply.headers) + """ if 'Content-Disposition' in reply.headers: response['Content-Disposition'] = \ reply.headers['Content-Disposition'] @@ -245,6 +250,7 @@ class Client(object): response.content_type = reply.headers['Content-Type'] if 'Content-Length' in reply.headers: response.content_length = int(reply.headers['Content-Length']) + """ if reply.headers.get('Content-Type') == 'application/json': return json.loads(reply.content) @@ -328,6 +334,7 @@ def _sign(key_path, data): import hashlib from M2Crypto import DSA key = DSA.load_key(key_path) + # pylint: disable-msg=E1121 return key.sign_asn1(hashlib.sha1(data).digest()).encode('hex') diff --git a/tests/integration/node_packages.py b/tests/integration/node_packages.py index 565df1a..1ec54c7 100755 --- a/tests/integration/node_packages.py +++ b/tests/integration/node_packages.py @@ -94,10 +94,10 @@ class NodePackagesSlaveTest(tests.Test): self.assertEqual( '{"arch": [{"path": "rpm", "name": "rpm"}]}', - conn.get(['packages', 'presolve:OLPC-11.3.1', 'package'])) + conn.get(['packages', 'presolve', 'OLPC-11.3.1', 'package'])) self.assertEqual( 'package_content', - urllib2.urlopen('http://localhost:8100/packages/presolve:OLPC-11.3.1/rpm').read()) + urllib2.urlopen('http://localhost:8100/packages/presolve/OLPC-11.3.1/rpm').read()) pid = self.popen([join(src_root, 'sugar-network-client'), '-F', 'start', '--api-url=http://localhost:8100', '--cachedir=master.client/tmp', @@ -111,8 +111,8 @@ class NodePackagesSlaveTest(tests.Test): if ipc.get(cmd='status')['route'] == 'offline': self.wait_for_events(ipc, event='inline', state='online').wait() self.assertEqual( - {"arch": [{"path": "rpm", "name": "rpm"}]}, - ipc.get(['packages', 'presolve:OLPC-11.3.1', 'package'])) + '{"arch": [{"path": "rpm", "name": "rpm"}]}', + ipc.get(['packages', 'presolve', 'OLPC-11.3.1', 'package'])) self.waitpid(pid, signal.SIGINT) # From slave @@ -132,10 +132,10 @@ class NodePackagesSlaveTest(tests.Test): self.assertEqual( '{"arch": [{"path": "rpm", "name": "rpm"}]}', - conn.get(['packages', 'presolve:OLPC-11.3.1', 'package'])) + conn.get(['packages', 'presolve', 'OLPC-11.3.1', 'package'])) self.assertEqual( 'package_content', - urllib2.urlopen('http://localhost:8101/packages/presolve:OLPC-11.3.1/rpm').read()) + urllib2.urlopen('http://localhost:8101/packages/presolve/OLPC-11.3.1/rpm').read()) pid = self.popen([join(src_root, 'sugar-network-client'), '-F', 'start', '--api-url=http://localhost:8101', '--cachedir=master.client/tmp', @@ -149,8 +149,8 @@ class NodePackagesSlaveTest(tests.Test): if ipc.get(cmd='status')['route'] == 'offline': self.wait_for_events(ipc, event='inline', state='online').wait() self.assertEqual( - {"arch": [{"path": "rpm", "name": "rpm"}]}, - ipc.get(['packages', 'presolve:OLPC-11.3.1', 'package'])) + '{"arch": [{"path": "rpm", "name": "rpm"}]}', + ipc.get(['packages', 'presolve', 'OLPC-11.3.1', 'package'])) self.waitpid(pid, signal.SIGINT) # From personal slave @@ -180,17 +180,17 @@ class NodePackagesSlaveTest(tests.Test): self.assertEqual( '{"arch": [{"path": "rpm", "name": "rpm"}]}', - conn.get(['packages', 'presolve:OLPC-11.3.1', 'package'])) + conn.get(['packages', 'presolve', 'OLPC-11.3.1', 'package'])) self.assertEqual( 'package_content', - urllib2.urlopen('http://localhost:8102/packages/presolve:OLPC-11.3.1/rpm').read()) + urllib2.urlopen('http://localhost:8102/packages/presolve/OLPC-11.3.1/rpm').read()) self.assertEqual( - {"arch": [{"path": "rpm", "name": "rpm"}]}, - ipc.get(['packages', 'presolve:OLPC-11.3.1', 'package'])) + '{"arch": [{"path": "rpm", "name": "rpm"}]}', + ipc.get(['packages', 'presolve', 'OLPC-11.3.1', 'package'])) self.assertEqual( 'package_content', - urllib2.urlopen('http://localhost:8202/packages/presolve:OLPC-11.3.1/rpm').read()) + urllib2.urlopen('http://localhost:8202/packages/presolve/OLPC-11.3.1/rpm').read()) if __name__ == '__main__': diff --git a/tests/units/db/router.py b/tests/units/db/router.py index 174b2db..5e9b2a5 100755 --- a/tests/units/db/router.py +++ b/tests/units/db/router.py @@ -89,7 +89,7 @@ class RouterTest(tests.Test): class Status(http.Status): status = '001 Status' - headers = {'Status-Header': 'value'} + headers = {'status-header': 'value'} class CommandsProcessor(db.CommandsProcessor): @@ -109,7 +109,7 @@ class RouterTest(tests.Test): self.assertEqual(error, ''.join([i for i in reply])) self.assertEqual([ '001 Status', - {'Content-Length': str(len(error)), 'Content-Type': 'application/json', 'Status-Header': 'value'}, + {'content-length': str(len(error)), 'content-type': 'application/json', 'status-header': 'value'}, ], response) @@ -117,7 +117,7 @@ class RouterTest(tests.Test): class Status(http.Status): status = '001 Status' - headers = {'Status-Header': 'value'} + headers = {'status-header': 'value'} result = 'result' class CommandsProcessor(db.CommandsProcessor): @@ -138,7 +138,7 @@ class RouterTest(tests.Test): self.assertEqual(error, ''.join([i for i in reply])) self.assertEqual([ '001 Status', - {'Content-Length': str(len(error)), 'Status-Header': 'value'}, + {'content-length': str(len(error)), 'status-header': 'value'}, ], response) @@ -146,7 +146,7 @@ class RouterTest(tests.Test): class StatusPass(http.StatusPass): status = '001 StatusPass' - headers = {'StatusPass-Header': 'value'} + headers = {'statuspass-header': 'value'} result = 'result' class CommandsProcessor(db.CommandsProcessor): @@ -167,7 +167,7 @@ class RouterTest(tests.Test): self.assertEqual(error, ''.join([i for i in reply])) self.assertEqual([ '001 StatusPass', - {'Content-Length': str(len(error)), 'StatusPass-Header': 'value'}, + {'content-length': str(len(error)), 'statuspass-header': 'value'}, ], response) @@ -192,7 +192,7 @@ class RouterTest(tests.Test): self.assertEqual(error, ''.join([i for i in reply])) self.assertEqual([ '303 See Other', - {'Content-Length': '0', 'Location': URL}, + {'content-length': '0', 'location': URL}, ], response) @@ -217,7 +217,7 @@ class RouterTest(tests.Test): self.assertEqual(result, ''.join([i for i in reply])) self.assertEqual([ '200 OK', - {'Last-Modified': formatdate(10, localtime=False, usegmt=True), 'Content-Length': str(len(result))}, + {'last-modified': formatdate(10, localtime=False, usegmt=True), 'content-length': str(len(result))}, ], response) @@ -244,7 +244,7 @@ class RouterTest(tests.Test): self.assertEqual(result, ''.join([i for i in reply])) self.assertEqual([ '200 OK', - {'Content-Length': str(len(result))}, + {'content-length': str(len(result))}, ], response) @@ -259,7 +259,7 @@ class RouterTest(tests.Test): self.assertEqual(result, ''.join([i for i in reply])) self.assertEqual([ '200 OK', - {'Content-Length': str(len(result))}, + {'content-length': str(len(result))}, ], response) @@ -274,7 +274,7 @@ class RouterTest(tests.Test): self.assertEqual(result, ''.join([i for i in reply])) self.assertEqual([ '304 Not Modified', - {'Content-Length': str(len(result))}, + {'content-length': str(len(result))}, ], response) @@ -345,10 +345,10 @@ class RouterTest(tests.Test): self.assertEqual([ '200 OK', { - 'Last-Modified': formatdate(os.stat(local_path).st_mtime, localtime=False, usegmt=True), - 'Content-Length': str(len(result)), - 'Content-Type': 'image/png', - 'Content-Disposition': 'attachment; filename="missing.png"', + 'last-modified': formatdate(os.stat(local_path).st_mtime, localtime=False, usegmt=True), + 'content-length': str(len(result)), + 'content-type': 'image/png', + 'content-disposition': 'attachment; filename="missing.png"', } ], response) @@ -370,10 +370,10 @@ class RouterTest(tests.Test): self.assertEqual([ '200 OK', { - 'Last-Modified': formatdate(mtime, localtime=False, usegmt=True), - 'Content-Length': str(len(result)), - 'Content-Type': 'image/png', - 'Content-Disposition': 'attachment; filename="missing.png"', + 'last-modified': formatdate(mtime, localtime=False, usegmt=True), + 'content-length': str(len(result)), + 'content-type': 'image/png', + 'content-disposition': 'attachment; filename="missing.png"', } ], response) @@ -389,7 +389,7 @@ class RouterTest(tests.Test): self.assertEqual(result, ''.join([i for i in reply])) self.assertEqual([ '304 Not Modified', - {'Content-Length': str(len(result))}, + {'content-length': str(len(result))}, ], response) @@ -404,7 +404,7 @@ class RouterTest(tests.Test): self.assertEqual(result, ''.join([i for i in reply])) self.assertEqual([ '304 Not Modified', - {'Content-Length': str(len(result))}, + {'content-length': str(len(result))}, ], response) @@ -429,7 +429,7 @@ class RouterTest(tests.Test): self.assertEqual(result, ''.join([i for i in reply])) self.assertEqual([ '200 OK', - {'Content-Length': str(len(result))}, + {'content-length': str(len(result))}, ], response) @@ -477,10 +477,10 @@ class RouterTest(tests.Test): self.assertEqual([ '200 OK', { - 'Last-Modified': formatdate(os.stat('blob.data').st_mtime, localtime=False, usegmt=True), - 'Content-Length': str(len(result)), - 'Content-Type': 'application/octet-stream', - 'Content-Disposition': 'attachment; filename="Foo.obj"', + 'last-modified': formatdate(os.stat('blob.data').st_mtime, localtime=False, usegmt=True), + 'content-length': str(len(result)), + 'content-type': 'application/octet-stream', + 'content-disposition': 'attachment; filename="Foo.obj"', } ], response) @@ -497,10 +497,10 @@ class RouterTest(tests.Test): self.assertEqual([ '200 OK', { - 'Last-Modified': formatdate(os.stat('blob.data').st_mtime, localtime=False, usegmt=True), - 'Content-Length': str(len(result)), - 'Content-Type': 'application/octet-stream', - 'Content-Disposition': 'attachment; filename="foo.bar"', + 'last-modified': formatdate(os.stat('blob.data').st_mtime, localtime=False, usegmt=True), + 'content-length': str(len(result)), + 'content-type': 'application/octet-stream', + 'content-disposition': 'attachment; filename="foo.bar"', } ], response) diff --git a/tests/units/node/obs.py b/tests/units/node/obs.py index a46da8f..aaf4030 100755 --- a/tests/units/node/obs.py +++ b/tests/units/node/obs.py @@ -133,18 +133,18 @@ class ObsTest(tests.Test): {'path': 'pkg1-2.prm', 'name': 'pkg1-2'}, ], }, - json.load(file('packages/presolve::OLPC-11.3.1/pkg1'))) + json.load(file('packages/presolve/OLPC-11.3.1/pkg1'))) self.assertEqual({ 'arch': [ {'path': 'pkg2-1.prm', 'name': 'pkg2-1'}, {'path': 'pkg2-2.prm', 'name': 'pkg2-2'}, ], }, - json.load(file('packages/presolve::OLPC-11.3.1/pkg2'))) - self.assertEqual('1', file('packages/presolve::OLPC-11.3.1/pkg1-1.prm').read()) - self.assertEqual('2', file('packages/presolve::OLPC-11.3.1/pkg1-2.prm').read()) - self.assertEqual('3', file('packages/presolve::OLPC-11.3.1/pkg2-1.prm').read()) - self.assertEqual('4', file('packages/presolve::OLPC-11.3.1/pkg2-2.prm').read()) + json.load(file('packages/presolve/OLPC-11.3.1/pkg2'))) + self.assertEqual('1', file('packages/presolve/OLPC-11.3.1/pkg1-1.prm').read()) + self.assertEqual('2', file('packages/presolve/OLPC-11.3.1/pkg1-2.prm').read()) + self.assertEqual('3', file('packages/presolve/OLPC-11.3.1/pkg2-1.prm').read()) + self.assertEqual('4', file('packages/presolve/OLPC-11.3.1/pkg2-2.prm').read()) class Response(object): diff --git a/tests/units/node/sync_master.py b/tests/units/node/sync_master.py index 920d502..5b43241 100755 --- a/tests/units/node/sync_master.py +++ b/tests/units/node/sync_master.py @@ -176,7 +176,7 @@ class SyncMasterTest(tests.Test): 'sugar_network_sent=unset_sugar_network_sent; Max-Age=0; HttpOnly', 'sugar_network_delay=unset_sugar_network_delay; Max-Age=0; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def test_push_WithCookies(self): ts = int(time.time()) @@ -221,7 +221,7 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({None: [[1, 1]]})), 'sugar_network_delay=0; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def test_push_CollectCookies(self): request = Request() @@ -248,7 +248,7 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({None: []})), 'sugar_network_delay=0; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) request = Request() request.environ['HTTP_COOKIE'] = 'sugar_network_pull=%s' % \ @@ -272,7 +272,7 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({None: []})), 'sugar_network_delay=0; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def test_push_DoNotExcludeAcksFromCookies(self): ts = int(time.time()) @@ -310,7 +310,7 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({None: [[1, 1]]})), 'sugar_network_delay=0; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def test_pull(self): self.volume['document'].create(guid='1', prop='1', ctime=1, mtime=1) @@ -331,11 +331,11 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({})), 'sugar_network_delay=30; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) coroutine.sleep(.5) request = Request() - request.environ['HTTP_COOKIE'] = response.get('Set-Cookie')[0] + request.environ['HTTP_COOKIE'] = response.get('set-cookie')[0] response = db.Response() reply = StringIO() for chunk in self.master.pull(request, response): @@ -367,10 +367,10 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({})), 'sugar_network_delay=0; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) request = Request() - request.environ['HTTP_COOKIE'] = response.get('Set-Cookie')[0] + request.environ['HTTP_COOKIE'] = response.get('set-cookie')[0] response = db.Response() reply = StringIO() for chunk in self.master.pull(request, response): @@ -390,7 +390,7 @@ class SyncMasterTest(tests.Test): 'sugar_network_sent=unset_sugar_network_sent; Max-Age=0; HttpOnly', 'sugar_network_delay=unset_sugar_network_delay; Max-Age=0; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def test_pull_EmptyPackets(self): self.master._pulls = { @@ -410,12 +410,12 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({})), 'sugar_network_delay=30; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) coroutine.sleep(.5) self.assertEqual(1, len([i for i in glob('tmp/pulls/*.tag')])) request = Request() - request.environ['HTTP_COOKIE'] = response.get('Set-Cookie')[0] + request.environ['HTTP_COOKIE'] = response.get('set-cookie')[0] response = db.Response() self.assertEqual(None, self.master.pull(request, response)) self.assertEqual([ @@ -423,7 +423,7 @@ class SyncMasterTest(tests.Test): 'sugar_network_sent=unset_sugar_network_sent; Max-Age=0; HttpOnly', 'sugar_network_delay=unset_sugar_network_delay; Max-Age=0; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) self.assertEqual(0, len([i for i in glob('tmp/pulls/*.tag')])) def test_pull_FullClone(self): @@ -447,11 +447,11 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({})), 'sugar_network_delay=30; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) coroutine.sleep(.5) request = Request() - request.environ['HTTP_COOKIE'] = response.get('Set-Cookie')[0] + request.environ['HTTP_COOKIE'] = response.get('set-cookie')[0] response = db.Response() reply = StringIO() for chunk in self.master.pull(request, response): @@ -468,10 +468,10 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({})), 'sugar_network_delay=0; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) request = Request() - request.environ['HTTP_COOKIE'] = response.get('Set-Cookie')[0] + request.environ['HTTP_COOKIE'] = response.get('set-cookie')[0] response = db.Response() reply = StringIO() for chunk in self.master.pull(request, response): @@ -486,7 +486,7 @@ class SyncMasterTest(tests.Test): 'sugar_network_sent=unset_sugar_network_sent; Max-Age=0; HttpOnly', 'sugar_network_delay=unset_sugar_network_delay; Max-Age=0; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def test_push_SetSentCookies(self): request = Request() @@ -536,7 +536,7 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({'1': [], '2': [], '3': [[1, 2]]})), 'sugar_network_delay=0; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def test_pull_ExcludeSentCookies(self): self.volume['document'].create(guid='1', prop='1', ctime=1, mtime=1) @@ -557,11 +557,11 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({'slave': [[2, 2]]})), 'sugar_network_delay=30; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) coroutine.sleep(.5) request = Request() - request.environ['HTTP_COOKIE'] = ';'.join(response.get('Set-Cookie')) + request.environ['HTTP_COOKIE'] = ';'.join(response.get('set-cookie')) reply = StringIO() for chunk in self.master.pull(request, response): reply.write(chunk) @@ -584,7 +584,7 @@ class SyncMasterTest(tests.Test): 'sugar_network_sent=unset_sugar_network_sent; Max-Age=0; HttpOnly', 'sugar_network_delay=unset_sugar_network_delay; Max-Age=0; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def test_pull_DoNotExcludeSentCookiesForMultipleNodes(self): self.volume['document'].create(guid='1', prop='1', ctime=1, mtime=1) @@ -605,11 +605,11 @@ class SyncMasterTest(tests.Test): base64.b64encode(json.dumps({'slave': [[2, 2]], 'other': []})), 'sugar_network_delay=30; Max-Age=3600; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) coroutine.sleep(.5) request = Request() - request.environ['HTTP_COOKIE'] = ';'.join(response.get('Set-Cookie')) + request.environ['HTTP_COOKIE'] = ';'.join(response.get('set-cookie')) reply = StringIO() for chunk in self.master.pull(request, response): reply.write(chunk) @@ -638,7 +638,7 @@ class SyncMasterTest(tests.Test): 'sugar_network_sent=unset_sugar_network_sent; Max-Age=0; HttpOnly', 'sugar_network_delay=unset_sugar_network_delay; Max-Age=0; HttpOnly', ], - response.get('Set-Cookie')) + response.get('set-cookie')) def __test_pull_LimittedPull(self): pass |