def test_exp_date(self): serial = b'000123456789' t1 = securid.Token().random(serial=serial, exp_date=date(2123,1,2)) t2 = securid.Token().random(serial=serial, exp_date='2123-01-02') self.assertEqual(t1.exp_date, date(2123,1,2)) self.assertEqual(t2.exp_date, date(2123,1,2)) self.assertNotEqual(t1, t2)
def test_interval_30s(self): seed = '967863726e4a54c7cec668012e7302a6' serial = b'000123456789' t30 = securid.Token(serial=serial, seed=seed, interval=30) self.assertEqual(t30.at(T0), t30.at(T0 + s1)) self.assertNotEqual(t30.at(T0), t30.at(T0 + s30)) t60 = securid.Token(serial=serial, seed=seed, interval=60) self.assertNotEqual(t30.at(T0), t60.at(T0))
def test_random(self): serial = b'000123456789' t1 = securid.Token().random() self.assertEqual(t1.at(T2), t1.at(T2 + s1)) t2 = securid.Token().random(serial=serial) self.assertEqual(t2.at(T2), t2.at(T2 + s1)) self.assertNotEqual(t1.at(T2), t2.at(T2)) date1 = date(2050, 1, 1) t3 = securid.Token.random(exp_date=date1) self.assertEqual(t3.exp_date, date1) self.assertNotEqual(t1.now(), t3.now())
def test_pin(self): seed = '9e2cdb3468bd84fe6cf42570d1f8559c' serial = '000123456789' pin = 1234 t = securid.Token(serial=serial, seed=seed, pin=pin) self.assertEqual(t.at(T0), '079498') self.assertEqual(t.at(T0 + s30), '079498') self.assertNotEqual(t.at(T0 + s60), '079498') t2 = securid.Token(serial=serial, seed=seed) self.assertNotEqual(t.at(T0), t2.at(T0))
def test_time_left(self): t1 = securid.Token().random() self.assertEqual(t1.time_left(T1), 50) self.assertEqual(t1.time_left(T1 + timedelta(seconds=1)), 49) self.assertEqual(t1.time_left(T1 + timedelta(seconds=50)), 60) self.assertEqual(t1.time_left(123456), 24) t2 = securid.Token().random(interval=30) self.assertEqual(t2.time_left(T2), 28) self.assertEqual(t2.time_left(T2 + timedelta(seconds=1)), 27) self.assertEqual(t2.time_left(T2 + timedelta(seconds=28)), 30) self.assertEqual(t2.time_left(123456), 24) self.assertTrue(0 < t2.time_left() <= 30)
def test_at(self): seed = '9e2cdb3468bd84fe6cf42570d1f8559c' serial = '000123456789' t = securid.Token(serial=serial, seed=seed) self.assertEqual(t.at(T0), '078264') self.assertEqual(t.at(T0 + s30), '078264') self.assertNotEqual(t.at(T0 + s60), '078264') serial2 = '000987654321' t2 = securid.Token(serial=serial2, seed=seed) self.assertNotEqual(t.at(T0), t2.at(T0)) seed2 = '884c91dc46f17970e4d08a34d852ee18' t3 = securid.Token(serial=serial2, seed=seed2) self.assertNotEqual(t3.at(T0), t2.at(T0))
def test_export(self): t1 = securid.Token().random(exp_date=date(2000, 1, 1)) f1 = JSONTokenFile(token=t1) data = f1.export_token() f2 = JSONTokenFile(data=data) t2 = f2.get_token() self.assertEqual(t1, t2) def test_ex1(): f = JSONTokenFile( token=securid.Token(serial=t1.serial, exp_date=t1.exp_date)) f.export_token() self.assertRaises(InvalidSeed, test_ex1) def test_ex2(): f = JSONTokenFile(token=securid.Token( serial=t1.serial, seed=t1.seed, exp_date=t1.exp_date)) f.get_token().serial = None f.export_token() self.assertRaises(InvalidSerial, test_ex2) def test_ex3(): f = JSONTokenFile(token=securid.Token( serial=t1.serial, seed=t1.seed, exp_date=t1.exp_date)) f.get_token().serial = 'x' f.export_token() self.assertRaises(InvalidSerial, test_ex3)
def test_v2_encode_token(self): token = securid.Token.random(exp_date=date(2050, 1, 1)) seed = token.seed serial = token.serial digits = token.digits interval = token.interval exp_date = token.exp_date token1 = securid.Token( seed=seed, serial=serial, digits=digits, interval=interval, exp_date=exp_date, ) sf1 = StokenFile(token=token1) sf1.v2_encode_token() self.assertEqual(token1.serial, serial) self.assertEqual(token1.seed, seed) self.assertEqual(token1.digits, digits) self.assertEqual(token1.interval, interval) sf2 = StokenFile(data=sf1.data) self.assertEqual(sf2.get_token().serial, serial) self.assertEqual(sf2.get_token().seed, seed) self.assertEqual(sf2.get_token().digits, digits) self.assertEqual(sf2.get_token().interval, interval) for i in range(0, 10): self.assertEqual(sf2.get_token().at(i * 1000), token.at(i * 1000))
def test_file(self): with NamedTemporaryFile() as f: t1 = securid.Token().random(exp_date=date(2000,1,1)) f1 = JSONTokenFile(token=t1) f.write(f1.export_token()) f.flush() f2 = JSONTokenFile(filename=f.name) t2 = f2.get_token() self.assertEqual(t1, t2)
def test_repl(self): seed = '967863726e4a54c7cec668012e7302a6' serial = b'000123456789' t = securid.Token(serial=serial, seed=seed, interval=30, label='test', pin=1234) self.assertEqual( repr(t), "{'digits': '6', 'exp_date': '', 'interval': '30', 'issuer': '', 'label': 'test', 'pin': '1234', 'seed': '3936373836333732366534613534633763656336363830313265373330326136', 'serial': '000123456789'}", )
def test_number_of_digits(self): seed = '967863726e4a54c7cec668012e7302a6' serial = '432342' for i in range(1, 16): t = securid.Token(serial=serial, seed=seed, digits=i) self.assertEqual(len(t.at(T0)), i)
def test_serial_seed_as_bytes(self): seed = b'9e2cdb3468bd84fe6cf42570d1f8559c' serial = b'000123456789' t = securid.Token(serial=serial, seed=seed) self.assertEqual(t.at(T0), '078264')
def test_ex3(): f = JSONTokenFile(token=securid.Token(serial=t1.serial, seed=t1.seed, exp_date=t1.exp_date)) f.get_token().serial = 'x' f.export_token()
def test_ex1(): f = JSONTokenFile(token=securid.Token(serial=t1.serial, exp_date=t1.exp_date)) f.export_token()
def test_none_seed(): serial = b'000123456789' t = securid.Token(serial=serial, seed=None) t.now()