mirror of
				https://github.com/python/cpython.git
				synced 2025-10-24 18:33:49 +00:00 
			
		
		
		
	
		
			
	
	
		
			61 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | 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() |