aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/test/test_fakepwd.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/test/test_fakepwd.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/test/test_fakepwd.py386
1 files changed, 0 insertions, 386 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/test/test_fakepwd.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/test/test_fakepwd.py
deleted file mode 100755
index 6c101056..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/test/test_fakepwd.py
+++ /dev/null
@@ -1,386 +0,0 @@
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Tests for L{twisted.python.fakepwd}.
-"""
-
-try:
- import pwd
-except ImportError:
- pwd = None
-
-try:
- import spwd
-except ImportError:
- spwd = None
-
-import os
-from operator import getitem
-
-from twisted.trial.unittest import TestCase
-from twisted.python.fakepwd import UserDatabase, ShadowDatabase
-from twisted.python.compat import set
-
-
-class UserDatabaseTestsMixin:
- """
- L{UserDatabaseTestsMixin} defines tests which apply to any user database
- implementation. Subclasses should mix it in, implement C{setUp} to create
- C{self.database} bound to a user database instance, and implement
- C{getExistingUserInfo} to return information about a user (such information
- should be unique per test method).
- """
- def test_getpwuid(self):
- """
- I{getpwuid} accepts a uid and returns the user record associated with
- it.
- """
- for i in range(2):
- # Get some user which exists in the database.
- username, password, uid, gid, gecos, dir, shell = self.getExistingUserInfo()
-
- # Now try to look it up and make sure the result is correct.
- entry = self.database.getpwuid(uid)
- self.assertEqual(entry.pw_name, username)
- self.assertEqual(entry.pw_passwd, password)
- self.assertEqual(entry.pw_uid, uid)
- self.assertEqual(entry.pw_gid, gid)
- self.assertEqual(entry.pw_gecos, gecos)
- self.assertEqual(entry.pw_dir, dir)
- self.assertEqual(entry.pw_shell, shell)
-
-
- def test_noSuchUID(self):
- """
- I{getpwuid} raises L{KeyError} when passed a uid which does not exist
- in the user database.
- """
- self.assertRaises(KeyError, self.database.getpwuid, -13)
-
-
- def test_getpwnam(self):
- """
- I{getpwnam} accepts a username and returns the user record associated
- with it.
- """
- for i in range(2):
- # Get some user which exists in the database.
- username, password, uid, gid, gecos, dir, shell = self.getExistingUserInfo()
-
- # Now try to look it up and make sure the result is correct.
- entry = self.database.getpwnam(username)
- self.assertEqual(entry.pw_name, username)
- self.assertEqual(entry.pw_passwd, password)
- self.assertEqual(entry.pw_uid, uid)
- self.assertEqual(entry.pw_gid, gid)
- self.assertEqual(entry.pw_gecos, gecos)
- self.assertEqual(entry.pw_dir, dir)
- self.assertEqual(entry.pw_shell, shell)
-
-
- def test_noSuchName(self):
- """
- I{getpwnam} raises L{KeyError} when passed a username which does not
- exist in the user database.
- """
- self.assertRaises(
- KeyError, self.database.getpwnam,
- 'no' 'such' 'user' 'exists' 'the' 'name' 'is' 'too' 'long' 'and' 'has'
- '\1' 'in' 'it' 'too')
-
-
- def test_recordLength(self):
- """
- The user record returned by I{getpwuid}, I{getpwnam}, and I{getpwall}
- has a length.
- """
- db = self.database
- username, password, uid, gid, gecos, dir, shell = self.getExistingUserInfo()
- for entry in [db.getpwuid(uid), db.getpwnam(username), db.getpwall()[0]]:
- self.assertIsInstance(len(entry), int)
- self.assertEqual(len(entry), 7)
-
-
- def test_recordIndexable(self):
- """
- The user record returned by I{getpwuid}, I{getpwnam}, and I{getpwall}
- is indexable, with successive indexes starting from 0 corresponding to
- the values of the C{pw_name}, C{pw_passwd}, C{pw_uid}, C{pw_gid},
- C{pw_gecos}, C{pw_dir}, and C{pw_shell} attributes, respectively.
- """
- db = self.database
- username, password, uid, gid, gecos, dir, shell = self.getExistingUserInfo()
- for entry in [db.getpwuid(uid), db.getpwnam(username), db.getpwall()[0]]:
- self.assertEqual(entry[0], username)
- self.assertEqual(entry[1], password)
- self.assertEqual(entry[2], uid)
- self.assertEqual(entry[3], gid)
- self.assertEqual(entry[4], gecos)
- self.assertEqual(entry[5], dir)
- self.assertEqual(entry[6], shell)
-
- self.assertEqual(len(entry), len(list(entry)))
- self.assertRaises(IndexError, getitem, entry, 7)
-
-
-
-class UserDatabaseTests(TestCase, UserDatabaseTestsMixin):
- """
- Tests for L{UserDatabase}.
- """
- def setUp(self):
- """
- Create a L{UserDatabase} with no user data in it.
- """
- self.database = UserDatabase()
- self._counter = 0
-
-
- def getExistingUserInfo(self):
- """
- Add a new user to C{self.database} and return its information.
- """
- self._counter += 1
- suffix = '_' + str(self._counter)
- username = 'username' + suffix
- password = 'password' + suffix
- uid = self._counter
- gid = self._counter + 1000
- gecos = 'gecos' + suffix
- dir = 'dir' + suffix
- shell = 'shell' + suffix
-
- self.database.addUser(username, password, uid, gid, gecos, dir, shell)
- return (username, password, uid, gid, gecos, dir, shell)
-
-
- def test_addUser(self):
- """
- L{UserDatabase.addUser} accepts seven arguments, one for each field of
- a L{pwd.struct_passwd}, and makes the new record available via
- L{UserDatabase.getpwuid}, L{UserDatabase.getpwnam}, and
- L{UserDatabase.getpwall}.
- """
- username = 'alice'
- password = 'secr3t'
- uid = 123
- gid = 456
- gecos = 'Alice,,,'
- home = '/users/alice'
- shell = '/usr/bin/foosh'
-
- db = self.database
- db.addUser(username, password, uid, gid, gecos, home, shell)
-
- for [entry] in [[db.getpwuid(uid)], [db.getpwnam(username)],
- db.getpwall()]:
- self.assertEqual(entry.pw_name, username)
- self.assertEqual(entry.pw_passwd, password)
- self.assertEqual(entry.pw_uid, uid)
- self.assertEqual(entry.pw_gid, gid)
- self.assertEqual(entry.pw_gecos, gecos)
- self.assertEqual(entry.pw_dir, home)
- self.assertEqual(entry.pw_shell, shell)
-
-
-
-class PwdModuleTests(TestCase, UserDatabaseTestsMixin):
- """
- L{PwdModuleTests} runs the tests defined by L{UserDatabaseTestsMixin}
- against the built-in C{pwd} module. This serves to verify that
- L{UserDatabase} is really a fake of that API.
- """
- if pwd is None:
- skip = "Cannot verify UserDatabase against pwd without pwd"
- else:
- database = pwd
-
- def setUp(self):
- self._users = iter(self.database.getpwall())
- self._uids = set()
-
-
- def getExistingUserInfo(self):
- """
- Read and return the next record from C{self._users}, filtering out
- any records with previously seen uid values (as these cannot be
- found with C{getpwuid} and only cause trouble).
- """
- while True:
- entry = next(self._users)
- uid = entry.pw_uid
- if uid not in self._uids:
- self._uids.add(uid)
- return entry
-
-
-
-class ShadowDatabaseTestsMixin:
- """
- L{ShadowDatabaseTestsMixin} defines tests which apply to any shadow user
- database implementation. Subclasses should mix it in, implement C{setUp} to
- create C{self.database} bound to a shadow user database instance, and
- implement C{getExistingUserInfo} to return information about a user (such
- information should be unique per test method).
- """
- def test_getspnam(self):
- """
- L{getspnam} accepts a username and returns the user record associated
- with it.
- """
- for i in range(2):
- # Get some user which exists in the database.
- (username, password, lastChange, min, max, warn, inact, expire,
- flag) = self.getExistingUserInfo()
-
- entry = self.database.getspnam(username)
- self.assertEqual(entry.sp_nam, username)
- self.assertEqual(entry.sp_pwd, password)
- self.assertEqual(entry.sp_lstchg, lastChange)
- self.assertEqual(entry.sp_min, min)
- self.assertEqual(entry.sp_max, max)
- self.assertEqual(entry.sp_warn, warn)
- self.assertEqual(entry.sp_inact, inact)
- self.assertEqual(entry.sp_expire, expire)
- self.assertEqual(entry.sp_flag, flag)
-
-
- def test_noSuchName(self):
- """
- I{getspnam} raises L{KeyError} when passed a username which does not
- exist in the user database.
- """
- self.assertRaises(KeyError, self.database.getspnam, "alice")
-
-
- def test_recordLength(self):
- """
- The shadow user record returned by I{getspnam} and I{getspall} has a
- length.
- """
- db = self.database
- username = self.getExistingUserInfo()[0]
- for entry in [db.getspnam(username), db.getspall()[0]]:
- self.assertIsInstance(len(entry), int)
- self.assertEqual(len(entry), 9)
-
-
- def test_recordIndexable(self):
- """
- The shadow user record returned by I{getpwnam} and I{getspall} is
- indexable, with successive indexes starting from 0 corresponding to the
- values of the C{sp_nam}, C{sp_pwd}, C{sp_lstchg}, C{sp_min}, C{sp_max},
- C{sp_warn}, C{sp_inact}, C{sp_expire}, and C{sp_flag} attributes,
- respectively.
- """
- db = self.database
- (username, password, lastChange, min, max, warn, inact, expire,
- flag) = self.getExistingUserInfo()
- for entry in [db.getspnam(username), db.getspall()[0]]:
- self.assertEqual(entry[0], username)
- self.assertEqual(entry[1], password)
- self.assertEqual(entry[2], lastChange)
- self.assertEqual(entry[3], min)
- self.assertEqual(entry[4], max)
- self.assertEqual(entry[5], warn)
- self.assertEqual(entry[6], inact)
- self.assertEqual(entry[7], expire)
- self.assertEqual(entry[8], flag)
-
- self.assertEqual(len(entry), len(list(entry)))
- self.assertRaises(IndexError, getitem, entry, 9)
-
-
-
-class ShadowDatabaseTests(TestCase, ShadowDatabaseTestsMixin):
- """
- Tests for L{ShadowDatabase}.
- """
- def setUp(self):
- """
- Create a L{ShadowDatabase} with no user data in it.
- """
- self.database = ShadowDatabase()
- self._counter = 0
-
-
- def getExistingUserInfo(self):
- """
- Add a new user to C{self.database} and return its information.
- """
- self._counter += 1
- suffix = '_' + str(self._counter)
- username = 'username' + suffix
- password = 'password' + suffix
- lastChange = self._counter + 1
- min = self._counter + 2
- max = self._counter + 3
- warn = self._counter + 4
- inact = self._counter + 5
- expire = self._counter + 6
- flag = self._counter + 7
-
- self.database.addUser(username, password, lastChange, min, max, warn,
- inact, expire, flag)
- return (username, password, lastChange, min, max, warn, inact,
- expire, flag)
-
-
- def test_addUser(self):
- """
- L{UserDatabase.addUser} accepts seven arguments, one for each field of
- a L{pwd.struct_passwd}, and makes the new record available via
- L{UserDatabase.getpwuid}, L{UserDatabase.getpwnam}, and
- L{UserDatabase.getpwall}.
- """
- username = 'alice'
- password = 'secr3t'
- lastChange = 17
- min = 42
- max = 105
- warn = 12
- inact = 3
- expire = 400
- flag = 3
-
- db = self.database
- db.addUser(username, password, lastChange, min, max, warn, inact,
- expire, flag)
-
- for [entry] in [[db.getspnam(username)], db.getspall()]:
- self.assertEqual(entry.sp_nam, username)
- self.assertEqual(entry.sp_pwd, password)
- self.assertEqual(entry.sp_lstchg, lastChange)
- self.assertEqual(entry.sp_min, min)
- self.assertEqual(entry.sp_max, max)
- self.assertEqual(entry.sp_warn, warn)
- self.assertEqual(entry.sp_inact, inact)
- self.assertEqual(entry.sp_expire, expire)
- self.assertEqual(entry.sp_flag, flag)
-
-
-
-class SPwdModuleTests(TestCase, ShadowDatabaseTestsMixin):
- """
- L{SPwdModuleTests} runs the tests defined by L{ShadowDatabaseTestsMixin}
- against the built-in C{spwd} module. This serves to verify that
- L{ShadowDatabase} is really a fake of that API.
- """
- if spwd is None:
- skip = "Cannot verify ShadowDatabase against spwd without spwd"
- elif os.getuid() != 0:
- skip = "Cannot access shadow user database except as root"
- else:
- database = spwd
-
- def setUp(self):
- self._users = iter(self.database.getspall())
-
-
- def getExistingUserInfo(self):
- """
- Read and return the next record from C{self._users}.
- """
- return next(self._users)
-