diff options
author | Marcel Hellkamp <marc@gsites.de> | 2013-06-04 01:09:52 +0200 |
---|---|---|
committer | Marcel Hellkamp <marc@gsites.de> | 2013-06-04 01:09:52 +0200 |
commit | 54a82e4ef4924268685ed5844935aaac7647015b (patch) | |
tree | 56682841224d0708be979d7e3aa93b708b448fff | |
parent | 20f605aec9e6c517d0d7b8e34926cbc950197ac8 (diff) | |
download | bottle-54a82e4ef4924268685ed5844935aaac7647015b.tar.gz |
Added BaseResponse::expires tests.
-rw-r--r-- | bottle.py | 22 | ||||
-rwxr-xr-x | test/test_environ.py | 7 |
2 files changed, 17 insertions, 12 deletions
@@ -143,15 +143,6 @@ def makelist(data): # This is just to handy elif data: return [data] else: return [] -def http_date(value): - if isinstance(value, (datedate, datetime)): - value = value.timetuple() - elif isinstance(value, (int, float)): - value = time.gmtime(value) - if not isinstance(value, basestring): - value = time.strftime("%a, %d %b %Y %H:%M:%S GMT", value) - return value - class DictProperty(object): ''' Property that maps to a key in a local dict-like attribute. ''' @@ -1460,7 +1451,9 @@ class BaseResponse(object): content_type = HeaderProperty('Content-Type') content_length = HeaderProperty('Content-Length', reader=int) - expires = HeaderProperty('Expires', writer=http_date) + expires = HeaderProperty('Expires', + reader=lambda x: datetime.utcfromtimestamp(parse_date(x)), + writer=lambda x: http_date(x)) @property def charset(self, default='UTF-8'): @@ -2284,6 +2277,14 @@ def debug(mode=True): if mode: warnings.simplefilter('default') DEBUG = bool(mode) +def http_date(value): + if isinstance(value, (datedate, datetime)): + value = value.utctimetuple() + elif isinstance(value, (int, float)): + value = time.gmtime(value) + if not isinstance(value, basestring): + value = time.strftime("%a, %d %b %Y %H:%M:%S GMT", value) + return value def parse_date(ims): """ Parse rfc1123, rfc850 and asctime timestamps and return UTC epoch. """ @@ -2293,7 +2294,6 @@ def parse_date(ims): except (TypeError, ValueError, IndexError, OverflowError): return None - def parse_auth(header): """ Parse rfc2617 HTTP authentication header string (basic) and return (user,pass) tuple or None""" try: diff --git a/test/test_environ.py b/test/test_environ.py index 4153e17..a1369dc 100755 --- a/test/test_environ.py +++ b/test/test_environ.py @@ -625,7 +625,12 @@ class TestResponse(unittest.TestCase): response['x-test'] = None self.assertEqual('None', response['x-test']) - + def test_expires_header(self): + import datetime + response = BaseResponse() + now = datetime.datetime.now() + response.expires = now + self.assertEqual(0, int((response.expires-now).total_seconds())) class TestRedirect(unittest.TestCase): |