def test_keytab_remove_existing(self):
		with NamedTemporaryFile() as tmpfile:
			keytab = heimdal.keytab(self.context, tmpfile.name)
			salt_flag = 0
			random_flag = 0
			keytab.add(USER, KVNO, ENCSTR, PASSWORD, salt_flag, random_flag)
			keytab.remove(USER, KVNO, ENCSTR)
	def test_keytab_remove_missing(self):
		with NamedTemporaryFile() as tmpfile:
			keytab = heimdal.keytab(self.context, tmpfile.name)
			with self.assertRaises(heimdal.Krb5Error) as ex:
				keytab.remove(USER, KVNO, ENCSTR)

			self.assertEqual(-1765328203, ex.exception.code)  # #define KRB5_KT_NOTFOUND
	def test_keytab_add(self):
		with NamedTemporaryFile() as tmpfile:
			keytab = heimdal.keytab(self.context, tmpfile.name)
			salt_flag = 0
			random_flag = 0
			keytab.add(USER, KVNO, ENCSTR, PASSWORD, salt_flag, random_flag)
			((kvno, enctype, principal, timestamp, keyblock),) = keytab.list()
			self.assertEqual(KVNO, kvno)
			self.assertEqual(ENCSTR, enctype)
			self.assertEqual(USER, principal)
			self.assertGreater(timestamp, 0)
			self.assertNotEqual(keyblock, "")
	def test_keytab(self):
		context = heimdal.context()

		before = middle = after = 0
		with NamedTemporaryFile() as tmpfile:
			before = sys.gettotalrefcount()
			keytab = heimdal.keytab(context, tmpfile.name)
			middle = sys.gettotalrefcount()
			del keytab
			after = sys.gettotalrefcount()

		self.assertGreater(middle, before)
		self.assertLess(after, middle)
		self.assertEqual(before, after)
	def test_dir(self):
		with NamedTemporaryFile() as tmpfile:
			keytab = heimdal.keytab(self.context, tmpfile.name)
			self.assertLessEqual({'add', 'list', 'remove'}, set(dir(keytab)))
	def test_keytab_empty(self):
		with NamedTemporaryFile() as tmpfile:
			keytab = heimdal.keytab(self.context, tmpfile.name)
			with self.assertRaises(heimdal.Krb5Error):
				keytab.list()