summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTodd Willey <todd@ansolabs.com>2010-07-26 18:00:39 -0400
committerTodd Willey <todd@ansolabs.com>2010-07-26 18:00:39 -0400
commit58b41fde4c8639577b738d0f57f10acda4c63c0e (patch)
treea585a21bdc1ad22147cc7e9d63cf806be055d756
parentfd2d4e3f3dba426eedc22b326d2bb0cb6a19eb76 (diff)
Lookup should only not return expired tokens.
-rw-r--r--nova/compute/model.py9
-rw-r--r--nova/tests/model_unittest.py16
2 files changed, 24 insertions, 1 deletions
diff --git a/nova/compute/model.py b/nova/compute/model.py
index 3aa6fc841..ab0bfeb83 100644
--- a/nova/compute/model.py
+++ b/nova/compute/model.py
@@ -258,6 +258,15 @@ class SessionToken(datastore.BasicModel):
return True
@classmethod
+ def lookup(cls, key):
+ token = super(SessionToken, cls).lookup(key)
+ if token:
+ expires_at = utils.parse_isotime(token['expiry'])
+ if datetime.datetime.utcnow() >= expires_at:
+ return None
+ return token
+
+ @classmethod
def generate(cls, userid, session_type=None):
"""make a new token for the given user"""
token = str(uuid.uuid4())
diff --git a/nova/tests/model_unittest.py b/nova/tests/model_unittest.py
index 0755d8578..10d3016f8 100644
--- a/nova/tests/model_unittest.py
+++ b/nova/tests/model_unittest.py
@@ -258,10 +258,24 @@ class ModelTestCase(test.TrialTestCase):
found = yield model.SessionToken.lookup(instance.identifier)
self.assert_(found)
- def test_update_expiry(self):
+ def test_update_session_token_expiry(self):
instance = model.SessionToken('tk12341234')
oldtime = datetime.utcnow()
instance['expiry'] = oldtime.strftime(utils.TIME_FORMAT)
instance.update_expiry()
expiry = utils.parse_isotime(instance['expiry'])
self.assert_(expiry > datetime.utcnow())
+
+ @defer.inlineCallbacks
+ def test_session_token_lookup_when_expired(self):
+ instance = yield model.SessionToken.generate("testuser")
+ instance['expiry'] = datetime.utcnow().strftime(utils.TIME_FORMAT)
+ instance.save()
+ inst = model.SessionToken.lookup(instance.identifier)
+ self.assertFalse(inst)
+
+ @defer.inlineCallbacks
+ def test_session_token_lookup_when_not_expired(self):
+ instance = yield model.SessionToken.generate("testuser")
+ inst = model.SessionToken.lookup(instance.identifier)
+ self.assert_(inst)