def setUp(self): # We will form such tree here: # root # +-br1 # +-br1.1 # +-pw0 # +-pw1 # +-pw2 # +-pw3 # +-br2 # +-br2.1 # +-pw4 # +-br2.2 # +-pw5 # +-pw6 # +-pw7 # +-pw8 # +-pw9 # self.pwds = [] for i in range(10): pwd = Password(host = "host%d" % i, name = "name%d" % i , password = "******" % i) self.pwds.append(pwd) ptree = PasswordTree() br1 = ptree.addBranch('br1') br11 = br1.addBranch('br11') br11.addNode(self.pwds[0]) br11.addNode(self.pwds[1]) br1.addNode(self.pwds[2]) br1.addNode(self.pwds[3]) br2 = ptree.addBranch('br2') br2.addNode(self.pwds[7]) br21 = br2.addBranch('br21') br22 = br2.addBranch('br22') br21.addNode(self.pwds[4]) br22.addNode(self.pwds[5]) br22.addNode(self.pwds[6]) ptree.addNode(self.pwds[8]) ptree.addNode(self.pwds[9]) self.ptree = ptree
def __setitem__(self, key, value): if key=='password' and len(value) > FPM_PASSWORD_LEN and not self.store_long_password: raise FigaroPasswordTooLongError, "Password is too long" Password.__setitem__(self, key, value)
def __init__(self, **kw): Password.__init__(self, **kw) self.default = kw.get('default', 0) self.launcher = kw.get('launcher', '')
def setUp(self): self.empty = Password() self.hostonly = Password(host='TheHost') self.hostname = Password(host='TheHost', name='TheName') self.full = Password(host='TheHost', name='TheName', password='******')
class PasswordTestCase(unittest.TestCase): def setUp(self): self.empty = Password() self.hostonly = Password(host='TheHost') self.hostname = Password(host='TheHost', name='TheName') self.full = Password(host='TheHost', name='TheName', password='******') def test_getitem(self): self.assertEqual(self.empty['host'], '') self.assertEqual(self.hostonly['host'], 'TheHost') self.assertEqual(self.hostname['password'], '') self.assertEqual(self.full['name'], 'TheName') self.assertRaises(KeyError, self.full.__getitem__, 'NoSuchField') def test_setitem(self): self.empty['password'] = '******' self.assertEqual(self.empty['password'], 'NewPassword') try: self.hostonly['NoSuchField'] = 'somevalue' except KeyError: pass else: assert 0, "__getattr__ doesn't raises KeyError on non-existant key" def test_getattr(self): # __getattr__ method should work the same as getitem, so we will not # perform a full test self.assertEqual(self.empty.host, '') try: nsf = self.hostonly.NoSuchField except AttributeError: pass else: assert 0, "__getattr__ doesn't raises AttributeError on non-existant attribute" def test_setattr(self): # __setattr__ method should work the same as getitem, so we will not # perform a full test self.hostname.name = 'NewUsername' self.assertEqual(self.hostname.name, 'NewUsername') # __setattr__ must allow arbitary attributes to be set self.hostonly.NoSuchField = 'somevalue' self.assertEqual(self.hostonly.NoSuchField, 'somevalue') def test_asText(self): empty_asText = self.empty.asText() self.assertEqual(empty_asText, '') full_asText = self.full.asText() self.assertEqual(full_asText, '''Host: TheHost Username: TheName Password: Password ''') hostonly_asText = self.hostonly.asText() self.assertEqual(hostonly_asText, '''Host: TheHost ''') def test_getFieldsOfType(self): fields = self.full.getFieldsOfType() self.assertEqual(fields, ['host', 'name', 'password']) fields = self.full.getFieldsOfType([password.TYPE_STRING]) self.assertEqual(fields, ['host', 'name']) fields = self.full.getFieldsOfType([password.TYPE_PASSWORD]) self.assertEqual(fields, ['password']) fields = self.full.getFieldsOfType([password.TYPE_TEXT, password.TYPE_STRING, password.TYPE_PASSWORD]) self.assertEqual(fields, ['host', 'name', 'password']) def test_getSearhableFields(self): fields = self.empty.getSearhableFields() self.assertEqual(fields, ['host', 'name'])