def setUp(self): ''' Setup! ''' self.validator = Validate(1) self.hasher = hashlib.sha256(KEY + SECRET)
class TestValidate(TestCase): ''' Test suite for Validate class ''' def setUp(self): ''' Setup! ''' self.validator = Validate(1) self.hasher = hashlib.sha256(KEY + SECRET) def test_check(self): ''' test check() ''' hasher = self.hasher.copy() hasher.update(str(int(time.time()))) ret = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) self.assertTrue(ret) def test_replay(self): ''' test replay ''' hasher = self.hasher.copy() hasher.update(str(int(time.time()))) ret = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) ret2 = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) self.assertTrue(ret) self.assertTrue(ret2) def test_replay_outside_window(self): ''' test replay ''' hasher = self.hasher.copy() hasher.update(str(int(time.time()))) ret = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) time.sleep(5) ret2 = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) self.assertTrue(ret) self.assertFalse(ret2) def test_replay_different_ip(self): ''' test replay with different client ip ''' hasher = self.hasher.copy() hasher.update(str(int(time.time()))) ret = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) ret2 = self.validator.check(KEY, SECRET, hasher.hexdigest(), '127.0.0.2') self.assertTrue(ret) self.assertFalse(ret2) def test_check_outside_window(self): ''' test check() with sig generated outside time window ''' hasher = self.hasher.copy() stamp = int(time.time()) + (self.validator.time_window * 60 + 1) hasher.update(str(stamp)) ret = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) self.assertFalse(ret) def test_lru_cleanup(self): ''' test LRU cleanup when maxsize is exceeded ''' cache = LRU(maxsize=10) for i in range(1,20): cache[i] = i self.assertLessEqual(len(cache), 10) def test_replay_with_drift(self): ''' ''' self.validator._update_drift(KEY, -5, IP) hasher = self.hasher.copy() hasher.update(str(int(time.time())-5)) ret = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) time.sleep(2) ret2 = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) time.sleep(3) ret3 = self.validator.check(KEY, SECRET, hasher.hexdigest(), IP) self.assertTrue(ret) self.assertTrue(ret2) self.assertFalse(ret3)