diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2014-05-25 13:22:20 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-05-25 13:22:20 (GMT) |
commit | 89b49a9e30ce941fdbf3832bebaf5cfbff930675 (patch) | |
tree | 56876c0e8b8c5eb7ffffa10133e008b22cdd5a95 /Lib | |
parent | a924fc7abc2d8788a4a9fa2cbef2caa5c5992ebd (diff) | |
parent | 7df417d50a6c849987d745453fcf6d0786d41ca4 (diff) | |
download | cpython-89b49a9e30ce941fdbf3832bebaf5cfbff930675.zip cpython-89b49a9e30ce941fdbf3832bebaf5cfbff930675.tar.gz cpython-89b49a9e30ce941fdbf3832bebaf5cfbff930675.tar.bz2 |
Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_spwd.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Lib/test/test_spwd.py b/Lib/test/test_spwd.py new file mode 100644 index 0000000..bea7ab1 --- /dev/null +++ b/Lib/test/test_spwd.py @@ -0,0 +1,60 @@ +import os +import unittest +from test import support + +spwd = support.import_module('spwd') + + +@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() == 0, + 'root privileges required') +class TestSpwdRoot(unittest.TestCase): + + def test_getspall(self): + entries = spwd.getspall() + self.assertIsInstance(entries, list) + for entry in entries: + self.assertIsInstance(entry, spwd.struct_spwd) + + def test_getspnam(self): + entries = spwd.getspall() + if not entries: + self.skipTest('empty shadow password database') + random_name = entries[0].sp_namp + entry = spwd.getspnam(random_name) + self.assertIsInstance(entry, spwd.struct_spwd) + self.assertEqual(entry.sp_namp, random_name) + self.assertEqual(entry.sp_namp, entry[0]) + self.assertEqual(entry.sp_namp, entry.sp_nam) + self.assertIsInstance(entry.sp_pwdp, str) + self.assertEqual(entry.sp_pwdp, entry[1]) + self.assertEqual(entry.sp_pwdp, entry.sp_pwd) + self.assertIsInstance(entry.sp_lstchg, int) + self.assertEqual(entry.sp_lstchg, entry[2]) + self.assertIsInstance(entry.sp_min, int) + self.assertEqual(entry.sp_min, entry[3]) + self.assertIsInstance(entry.sp_max, int) + self.assertEqual(entry.sp_max, entry[4]) + self.assertIsInstance(entry.sp_warn, int) + self.assertEqual(entry.sp_warn, entry[5]) + self.assertIsInstance(entry.sp_inact, int) + self.assertEqual(entry.sp_inact, entry[6]) + self.assertIsInstance(entry.sp_expire, int) + self.assertEqual(entry.sp_expire, entry[7]) + self.assertIsInstance(entry.sp_flag, int) + self.assertEqual(entry.sp_flag, entry[8]) + with self.assertRaises(KeyError) as cx: + spwd.getspnam('invalid user name') + self.assertEqual(str(cx.exception), "'getspnam(): name not found'") + self.assertRaises(TypeError, spwd.getspnam) + self.assertRaises(TypeError, spwd.getspnam, 0) + self.assertRaises(TypeError, spwd.getspnam, random_name, 0) + try: + bytes_name = os.fsencode(random_name) + except UnicodeEncodeError: + pass + else: + self.assertRaises(TypeError, spwd.getspnam, bytes_name) + + +if __name__ == "__main__": + unittest.main() |