diff options
| author | Todd Willey <todd@ansolabs.com> | 2010-07-26 18:00:39 -0400 |
|---|---|---|
| committer | Todd Willey <todd@ansolabs.com> | 2010-07-26 18:00:39 -0400 |
| commit | 58b41fde4c8639577b738d0f57f10acda4c63c0e (patch) | |
| tree | a585a21bdc1ad22147cc7e9d63cf806be055d756 | |
| parent | fd2d4e3f3dba426eedc22b326d2bb0cb6a19eb76 (diff) | |
Lookup should only not return expired tokens.
| -rw-r--r-- | nova/compute/model.py | 9 | ||||
| -rw-r--r-- | nova/tests/model_unittest.py | 16 |
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) |
