home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / TemaCD / webclean / !!!python!!! / BeOpen-Python-2.0.exe / TEST_PWD.PY < prev    next >
Encoding:
Python Source  |  2000-09-28  |  1.7 KB  |  73 lines

  1. from test_support import verbose
  2. import pwd
  3. import string
  4.  
  5. print 'pwd.getpwall()'
  6. entries = pwd.getpwall()
  7.  
  8. for e in entries:
  9.     name = e[0]
  10.     uid = e[2]
  11.     if verbose:
  12.         print name, uid
  13.     print 'pwd.getpwuid()'
  14.     dbuid = pwd.getpwuid(uid)
  15.     if dbuid[0] <> name:
  16.         print 'Mismatch in pwd.getpwuid()'
  17.     print 'pwd.getpwnam()'
  18.     dbname = pwd.getpwnam(name)
  19.     if dbname[2] <> uid:
  20.         print 'Mismatch in pwd.getpwnam()'
  21.     else:
  22.         print 'name matches uid'
  23.     break
  24.  
  25. # try to get some errors
  26. bynames = {}
  27. byuids = {}
  28. for n, p, u, g, gecos, d, s in entries:
  29.     bynames[n] = u
  30.     byuids[u] = n
  31.  
  32. allnames = bynames.keys()
  33. namei = 0
  34. fakename = allnames[namei]
  35. while bynames.has_key(fakename):
  36.     chars = map(None, fakename)
  37.     for i in range(len(chars)):
  38.         if chars[i] == 'z':
  39.             chars[i] = 'A'
  40.             break
  41.         elif chars[i] == 'Z':
  42.             continue
  43.         else:
  44.             chars[i] = chr(ord(chars[i]) + 1)
  45.             break
  46.     else:
  47.         namei = namei + 1
  48.         try:
  49.             fakename = allnames[namei]
  50.         except IndexError:
  51.             # should never happen... if so, just forget it
  52.             break
  53.     fakename = string.join(map(None, chars), '')
  54.     
  55. try:
  56.     pwd.getpwnam(fakename)
  57. except KeyError:
  58.     print 'caught expected exception'
  59. else:
  60.     print 'fakename', fakename, 'did not except pwd.getpwnam()'
  61.  
  62. # Choose a non-existent uid.
  63. fakeuid = 4127
  64. while byuids.has_key(fakeuid):
  65.     fakeuid = (fakeuid * 3) % 0x10000
  66.  
  67. try:
  68.     pwd.getpwuid(fakeuid)
  69. except KeyError:
  70.     print 'caught expected exception'
  71. else:
  72.     print 'fakeuid', fakeuid, 'did not except pwd.getpwuid()'
  73.