summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hellkamp <marc@gsites.de>2013-06-04 01:09:52 +0200
committerMarcel Hellkamp <marc@gsites.de>2013-06-04 01:09:52 +0200
commit54a82e4ef4924268685ed5844935aaac7647015b (patch)
tree56682841224d0708be979d7e3aa93b708b448fff
parent20f605aec9e6c517d0d7b8e34926cbc950197ac8 (diff)
downloadbottle-54a82e4ef4924268685ed5844935aaac7647015b.tar.gz
Added BaseResponse::expires tests.
-rw-r--r--bottle.py22
-rwxr-xr-xtest/test_environ.py7
2 files changed, 17 insertions, 12 deletions
diff --git a/bottle.py b/bottle.py
index 77446db..da33e05 100644
--- a/bottle.py
+++ b/bottle.py
@@ -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):