Fixed bug in staticweb with log_headers
Change-Id: I7e5e254660e2ce35bc7fa95435db0a987d5acd0a
This commit is contained in:
parent
21616c2fc9
commit
3800fdc1a9
@ -471,8 +471,12 @@ class _StaticWebContext(WSGIContext):
|
|||||||
client = env['HTTP_X_FORWARDED_FOR'].split(',')[0].strip()
|
client = env['HTTP_X_FORWARDED_FOR'].split(',')[0].strip()
|
||||||
logged_headers = None
|
logged_headers = None
|
||||||
if self.log_headers:
|
if self.log_headers:
|
||||||
logged_headers = '\n'.join('%s: %s' % (k, v)
|
headers = []
|
||||||
for k, v in req.headers.items())
|
for k, v in env.iteritems():
|
||||||
|
if k.startswith('HTTP_'):
|
||||||
|
k = k[len('HTTP_'):].replace('_', '-').title()
|
||||||
|
headers.append((k, v))
|
||||||
|
logged_headers = '\n'.join('%s: %s' % (k, v) for k, v in headers)
|
||||||
self.access_logger.info(' '.join(quote(str(x)) for x in (
|
self.access_logger.info(' '.join(quote(str(x)) for x in (
|
||||||
client or '-',
|
client or '-',
|
||||||
env.get('REMOTE_ADDR', '-'),
|
env.get('REMOTE_ADDR', '-'),
|
||||||
|
@ -23,6 +23,7 @@ from contextlib import contextmanager
|
|||||||
from webob import Request, Response
|
from webob import Request, Response
|
||||||
|
|
||||||
from swift.common.middleware import staticweb
|
from swift.common.middleware import staticweb
|
||||||
|
from test.unit import FakeLogger
|
||||||
|
|
||||||
|
|
||||||
class FakeMemcache(object):
|
class FakeMemcache(object):
|
||||||
@ -624,5 +625,33 @@ class TestStaticWeb(unittest.TestCase):
|
|||||||
self.assertEquals(resp.body, '1')
|
self.assertEquals(resp.body, '1')
|
||||||
self.assertEquals(self.app.calls, 1)
|
self.assertEquals(self.app.calls, 1)
|
||||||
|
|
||||||
|
def test_log_headers(self):
|
||||||
|
# Using a listing request since we know that calls StaticWeb's logging
|
||||||
|
# routines
|
||||||
|
self.test_staticweb.access_logger = FakeLogger()
|
||||||
|
self.test_staticweb.log_headers = True
|
||||||
|
req = Request.blank('/v1/a/c3/subdir/',
|
||||||
|
headers={'test-header': 'test-value'})
|
||||||
|
resp = req.get_response(self.test_staticweb)
|
||||||
|
self.assertEquals(resp.status_int, 200)
|
||||||
|
self.assert_('Listing of /v1/a/c3/subdir/' in resp.body)
|
||||||
|
infos = self.test_staticweb.access_logger.log_dict['info']
|
||||||
|
self.assertEquals(len(infos), 1)
|
||||||
|
info = infos[0][0][0]
|
||||||
|
self.assertTrue('Test-Header%3A%20test-value' in info, repr(info))
|
||||||
|
|
||||||
|
self.test_staticweb.access_logger = FakeLogger()
|
||||||
|
self.test_staticweb.log_headers = False
|
||||||
|
req = Request.blank('/v1/a/c3/subdir/',
|
||||||
|
headers={'test-header': 'test-value'})
|
||||||
|
resp = req.get_response(self.test_staticweb)
|
||||||
|
self.assertEquals(resp.status_int, 200)
|
||||||
|
self.assert_('Listing of /v1/a/c3/subdir/' in resp.body)
|
||||||
|
infos = self.test_staticweb.access_logger.log_dict['info']
|
||||||
|
self.assertEquals(len(infos), 1)
|
||||||
|
info = infos[0][0][0]
|
||||||
|
self.assertTrue('Test-Header%3A%20test-value' not in info, repr(info))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user