mirror of
https://github.com/python/cpython.git
synced 2025-12-23 09:19:18 +00:00
Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok.
This commit is contained in:
parent
5bb446f57e
commit
7df417d50a
2 changed files with 62 additions and 0 deletions
60
Lib/test/test_spwd.py
Normal file
60
Lib/test/test_spwd.py
Normal file
|
|
@ -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()
|
||||
|
|
@ -30,6 +30,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().
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue