home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyos2bin.zip / Lib / test / test_pwd.py < prev    next >
Text File  |  1997-05-20  |  2KB  |  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-existant 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.