def test_get_entries(self): k = Keytab() k.read(self.testfile) entries = k.get_entries("afs/robotest@LOCALREALM") self.assertIsNotNone(entries) self.assertEquals(len(entries), 4) self.assertEquals(entries[0]['kvno'], 10)
def test_guess_key_format(self): origprog = afsutil.cmd.ASETKEY afsutil.cmd.ASETKEY = asetkey_new k = Keytab() principal = "afs/xyzzy@LOCALREALM" k.add_fake_key(principal) self.assertEquals(k._guess_key_format(principal), 'extended') afsutil.cmd.ASETKEY = origprog
def test_is_des(self): k = Keytab() k.read(self.testfile) self.assertTrue(k.is_des("afs/plugh@LOCALREALM")) self.assertFalse(k.is_des("afs/xyzzy@LOCALREALM")) # The following has a mix of des and non-des. self.assertRaises(AssertionError, Keytab.is_des, k, "afs/robotest@LOCALREALM") # No keys for the following. self.assertRaises(AssertionError, Keytab.is_des, k, "afs/bogus@LOCALREALM")
def test_create_empty_file(self): fd,filename = tempfile.mkstemp() try: k = Keytab() k.write(filename) self.assertEqual(k.entries, []) out = subprocess.check_output(["klist", "-e", "-k", "-t", filename]).splitlines() self.assertEquals(len(out), 3) self.assertTrue(out[0].startswith("Keytab name")) self.assertTrue(out[1].startswith("KVNO Timestamp")) self.assertTrue(out[2].startswith("----")) finally: os.close(fd) os.remove(filename)
def test_create_empty_file(self): fd, filename = tempfile.mkstemp() try: k = Keytab() k.write(filename) self.assertEqual(k.entries, []) out = subprocess.check_output( ["klist", "-e", "-k", "-t", filename]).splitlines() self.assertEquals(len(out), 3) self.assertTrue(out[0].startswith("Keytab name")) self.assertTrue(out[1].startswith("KVNO Timestamp")) self.assertTrue(out[2].startswith("----")) finally: os.close(fd) os.remove(filename)
def test_create_fake_des_key(self): fd,filename = tempfile.mkstemp() try: k = Keytab() k.add_fake_key("afs/localcell@LOCALCELL", enctype='des-cbc-crc') k.write(filename) out = subprocess.check_output(["klist", "-e", "-k", "-t", filename]).splitlines() self.assertEquals(len(out), 4) self.assertTrue(out[0].startswith("Keytab name")) self.assertTrue(out[1].startswith("KVNO Timestamp")) self.assertTrue(out[2].startswith("----")) self.assertTrue("afs/localcell@LOCALCELL" in out[3]) self.assertTrue("des-cbc-crc" in out[3]) finally: os.close(fd) os.remove(filename)
def test_read_keytab(self): k = Keytab.load(self.testfile) self.assertIsNotNone(k) self.assertEquals(len(k.entries), 16) self.assertEquals(k.entries[0]['realm'], "LOCALREALM") self.assertEquals(k.entries[0]['principal'], "afs/robotest@LOCALREALM") self.assertEquals(k.entries[0]['kvno'], 10) self.assertEquals(k.entries[0]['eno'], 18) self.assertEquals(k.entries[0]['enctype'], 'aes256-cts-hmac-sha1-96')
def test_create_fake_aes_key(self): fd, filename = tempfile.mkstemp() try: k = Keytab() k.add_fake_key("afs/localcell@LOCALCELL") k.write(filename) out = subprocess.check_output( ["klist", "-e", "-k", "-t", filename]).splitlines() self.assertEquals(len(out), 4) self.assertTrue(out[0].startswith("Keytab name")) self.assertTrue(out[1].startswith("KVNO Timestamp")) self.assertTrue(out[2].startswith("----")) self.assertTrue("afs/localcell@LOCALCELL" in out[3]) self.assertTrue("aes256-cts-hmac-sha1-96" in out[3]) finally: os.close(fd) os.remove(filename)
def test_guess_key_format(self): k = Keytab() principal = "afs/xyzzy@LOCALREALM" k.add_fake_key(principal) self.assertEquals(k._guess_key_format(principal), 'extended')
def test_service_principals_n(self): k = Keytab.load(self.testfile) self.assertItemsEqual(k.service_principals(), ['afs/xyzzy@LOCALREALM', 'afs/robotest@LOCALREALM', 'afs/plugh@LOCALREALM'])
def test_service_principals_1(self): k = Keytab() k.add_fake_key("afs/foobar@FOOBAR") self.assertEquals(len(k.service_principals()), 1)
def test_service_principals_0(self): k = Keytab() self.assertEquals(len(k.service_principals()), 0)
def test_get_entries_for_kvno(self): k = Keytab() k.read(self.testfile) entries = k.get_entries("robotest@LOCALREALM", 18) # not the max kvno self.assertIsNotNone(entries) self.assertEquals(len(entries), 4)
def test_service_principals_n(self): k = Keytab.load(self.testfile) self.assertItemsEqual(k.service_principals(), [ 'afs/xyzzy@LOCALREALM', 'afs/robotest@LOCALREALM', 'afs/plugh@LOCALREALM' ])
def test_get_kvno(self): k = Keytab() k.read(self.testfile) self.assertEquals(k.get_kvno("afs/robotest@LOCALREALM"), 10) self.assertEquals(k.get_kvno("robotest@LOCALREALM"), 19) self.assertEquals(k.get_kvno("bogus@BOGUS"), None)