def test_totp_token(self): from otp.ai.passlib.totp import TOTP, TotpToken otp = TOTP('s3jdvb7qd2r7jpxx') result = otp.generate(1419622739) self.assertIsInstance(result, TotpToken) self.assertEqual(result.token, '897212') self.assertEqual(result.counter, 47320757) self.assertEqual(result.expire_time, 1419622740) self.assertEqual(result, ('897212', 1419622740)) self.assertEqual(len(result), 2) self.assertEqual(result[0], '897212') self.assertEqual(result[1], 1419622740) self.assertRaises(IndexError, result.__getitem__, -3) self.assertRaises(IndexError, result.__getitem__, 2) self.assertTrue(result) otp.now = lambda: 1419622739.5 self.assertEqual(result.remaining, 0.5) self.assertTrue(result.valid) otp.now = lambda: 1419622741 self.assertEqual(result.remaining, 0) self.assertFalse(result.valid) result2 = otp.generate(1419622739) self.assertIsNot(result2, result) self.assertEqual(result2, result) result3 = otp.generate(1419622711) self.assertIsNot(result3, result) self.assertEqual(result3, result) result4 = otp.generate(1419622999) self.assertNotEqual(result4, result)
def test_generate(self): from otp.ai.passlib.totp import TOTP otp = TOTP(new=True) time = self.randtime() result = otp.generate(time) token = result.token self.assertIsInstance(token, unicode) start_time = result.counter * 30 self.assertEqual(otp.generate(start_time + 29).token, token) self.assertNotEqual(otp.generate(start_time + 30).token, token) dt = datetime.datetime.utcfromtimestamp(time) self.assertEqual(int(otp.normalize_time(dt)), int(time)) self.assertEqual(otp.generate(dt).token, token) otp2 = TOTP.using(now=lambda: time)(key=otp.base32_key) self.assertEqual(otp2.generate().token, token) self.assertRaises(ValueError, otp.generate, -1)