class PDBFigaroTestCase(unittest.TestCase): password = '******' def setUp(self): self.pdb = PDBFigaro() self.pdb.open(self.password, fname='test/fpm.sample') def test_create(self): assert isinstance(self.pdb, PDBFigaro) def test_tree(self): 'Tree should be formed correctly' ptree = self.pdb.getTree() branches = ptree.getBranches() bkeys = branches.keys() bkeys.sort() self.assertEqual(bkeys, ['Kedder', 'Test']) tree_test = ptree['Test'] assert tree_test self.assertEqual(len(tree_test.getNodes()), 2) tree_kedder = ptree['Kedder'] assert tree_kedder self.assertEqual(len(tree_kedder.getNodes()), 1) def test_fpmCompatibilty(self): ptree = self.pdb.getTree() pwd = ptree['Test'].locate('test2')[0] self.assertEqual(pwd.default, 1) pwd = ptree['Test'].locate('test1')[0] self.assertEqual(pwd.default, 0) pwd = ptree['Kedder'].locate('kedder1')[0] self.assertEqual(pwd.launcher, 'ssh') def test_decryption(self): 'Test how passwords are decrypted' tree_test = self.pdb.getTree()['Test'] pwds = tree_test.locate('url') self.assertEqual(len(pwds), 2) pwd_test2 = tree_test.locate('test2') self.assertEqual(pwd_test2[0].password, 'test2 password') def test_encriptionUtils(self): str = "FIGARO ENCRYPTION TEST" noised = self.pdb._addNoise(str) self.assertEqual(len(noised) % Blowfish.block_size, 0) rotated = self.pdb._rotate(noised) self.assertEqual(len(rotated) % Blowfish.block_size, 0) hex = self.pdb._bin_to_hex(rotated) bin = self.pdb._hex_to_bin(hex) self.assertEqual(bin, rotated) unrotated = self.pdb._unrotate(bin) self.assertEqual(str, unrotated) def test_encription(self): strings = ["FIGARO ENCRYPTION TEST", "small"] for str in strings: encrypted = self.pdb.encrypt(str) decrypted = self.pdb.decrypt(encrypted) self.assertEqual(str, decrypted) def test_passwordEncryption(self): 'Encrypted password should be 48 character long' pwdstr = 'shortpass' encrypted = self.pdb.encrypt(pwdstr, 1) self.assertEqual(len(encrypted), FPM_PASSWORD_LEN * 2) decrypted = self.pdb.decrypt(encrypted) self.assertEqual(pwdstr, decrypted) def test_native(self): self.assertEqual(self.pdb.native, 0) def test_versions(self): self.assertEqual(self.pdb.FULL_VERSION, '00.53.00') self.assertEqual(self.pdb.MIN_VERSION, '00.50.00') self.assertEqual(self.pdb.DISPLAY_VERSION, '0.53')
class PDBFigaroTestCase(unittest.TestCase): password = '******' def setUp(self): self.pdb = PDBFigaro() self.pdb.open(self.password, fname='test/fpm.sample') def test_create(self): assert isinstance(self.pdb, PDBFigaro) def test_tree(self): 'Tree should be formed correctly' ptree = self.pdb.getTree() branches = ptree.getBranches() bkeys = branches.keys() bkeys.sort() self.assertEqual(bkeys, ['Kedder', 'Test']) tree_test = ptree['Test'] assert tree_test self.assertEqual(len(tree_test.getNodes()), 2) tree_kedder = ptree['Kedder'] assert tree_kedder self.assertEqual(len(tree_kedder.getNodes()), 1) def test_fpmCompatibilty(self): ptree = self.pdb.getTree() pwd = ptree['Test'].locate('test2')[0] self.assertEqual(pwd.default, 1) pwd = ptree['Test'].locate('test1')[0] self.assertEqual(pwd.default, 0) pwd = ptree['Kedder'].locate('kedder1')[0] self.assertEqual(pwd.launcher, 'ssh') def test_decryption(self): 'Test how passwords are decrypted' tree_test = self.pdb.getTree()['Test'] pwds = tree_test.locate('url') self.assertEqual(len(pwds), 2) pwd_test2 = tree_test.locate('test2') self.assertEqual(pwd_test2[0].password, 'test2 password') def test_encriptionUtils(self): str = "FIGARO ENCRYPTION TEST" noised = self.pdb._addNoise(str) self.assertEqual(len(noised) % Blowfish.block_size, 0) rotated = self.pdb._rotate(noised) self.assertEqual(len(rotated) % Blowfish.block_size, 0) hex = self.pdb._bin_to_hex(rotated) bin = self.pdb._hex_to_bin(hex) self.assertEqual(bin, rotated) unrotated = self.pdb._unrotate(bin) self.assertEqual(str, unrotated) def test_encription(self): strings = ["FIGARO ENCRYPTION TEST", "small"] for str in strings: encrypted = self.pdb.encrypt(str) decrypted = self.pdb.decrypt(encrypted) self.assertEqual(str, decrypted) def test_passwordEncryption(self): 'Encrypted password should be 48 character long' pwdstr = 'shortpass' encrypted = self.pdb.encrypt(pwdstr, 1) self.assertEqual(len(encrypted), FPM_PASSWORD_LEN*2) decrypted = self.pdb.decrypt(encrypted) self.assertEqual(pwdstr, decrypted) def test_native(self): self.assertEqual(self.pdb.native, 0) def test_versions(self): self.assertEqual(self.pdb.FULL_VERSION, '00.53.00') self.assertEqual(self.pdb.MIN_VERSION, '00.50.00') self.assertEqual(self.pdb.DISPLAY_VERSION, '0.53') def test_changePassword(self): new_pwd = 'new_password' # Copy test database to new location shutil.copyfile('test/fpm.sample', 'test/fpm.passwdtest') try: self.pdb.open(self.password, fname='test/fpm.passwdtest') self.pdb.changePassword(new_pwd) # Try to open database with old password self.assertRaises(WrongPassword, self.pdb.open, self.password, fname='test/fpm.passwdtest') self.pdb.open(new_pwd, fname='test/fpm.passwdtest') finally: os.unlink('test/fpm.passwdtest')
def test_unrotate(self): pdb = PDBFigaro() unrotated = pdb._unrotate('FIGARO\x00\xe3') self.assertEqual(unrotated, 'FIGARO')