Commit 1f94efc6 authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok.

parent 62012fc7
import os
import unittest
from test import test_support
spwd = test_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_nam
entry = spwd.getspnam(random_name)
self.assertIsInstance(entry, spwd.struct_spwd)
self.assertEqual(entry.sp_nam, random_name)
self.assertEqual(entry.sp_nam, entry[0])
self.assertIsInstance(entry.sp_pwd, str)
self.assertEqual(entry.sp_pwd, entry[1])
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)
if test_support.have_unicode:
try:
unicode_name = unicode(random_name)
except UnicodeDecodeError:
pass
else:
self.assertEqual(spwd.getspnam(unicode_name), entry)
def test_main():
test_support.run_unittest(TestSpwdRoot)
if __name__ == "__main__":
test_main()
......@@ -21,6 +21,8 @@ Library
Tests
-----
- Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok.
- Issue #21522: Added Tkinter tests for Listbox.itemconfigure(),
PanedWindow.paneconfigure(), and Menu.entryconfigure().
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment