Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Unified Diff: third_party/twisted_8_1/twisted/test/test_strcred.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/test/test_strcred.py
diff --git a/third_party/twisted_8_1/twisted/test/test_strcred.py b/third_party/twisted_8_1/twisted/test/test_strcred.py
deleted file mode 100644
index 07096ca22007143b67928569c7496235c1b83afe..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/test/test_strcred.py
+++ /dev/null
@@ -1,623 +0,0 @@
-# Copyright (c) 2007-2008 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Tests for L{strcred}.
-"""
-
-import os
-import StringIO
-
-from twisted import plugin
-from twisted.trial import unittest
-from twisted.cred import credentials, checkers, error, strcred
-from twisted.plugins import cred_file, cred_anonymous
-from twisted.python import usage
-
-
-try:
- import crypt
-except ImportError:
- crypt = None
-
-try:
- import pwd
-except ImportError:
- pwd = None
-
-try:
- import spwd
-except ImportError:
- spwd = None
-
-
-
-def getInvalidAuthType():
- """
- Helper method to produce an auth type that doesn't exist.
- """
- invalidAuthType = 'ThisPluginDoesNotExist'
- while (invalidAuthType in
- [factory.authType for factory in strcred.findCheckerFactories()]):
- invalidAuthType += '_'
- return invalidAuthType
-
-
-
-class TestPublicAPI(unittest.TestCase):
-
- def test_emptyDescription(self):
- """
- Test that the description string cannot be empty.
- """
- iat = getInvalidAuthType()
- self.assertRaises(strcred.InvalidAuthType, strcred.makeChecker, iat)
- self.assertRaises(strcred.InvalidAuthType, strcred.findCheckerFactory, iat)
-
-
- def test_invalidAuthType(self):
- """
- Test that an unrecognized auth type raises an exception.
- """
- iat = getInvalidAuthType()
- self.assertRaises(strcred.InvalidAuthType, strcred.makeChecker, iat)
- self.assertRaises(strcred.InvalidAuthType, strcred.findCheckerFactory, iat)
-
-
-
-class TestStrcredFunctions(unittest.TestCase):
-
- def test_findCheckerFactories(self):
- """
- Test that findCheckerFactories returns all available plugins.
- """
- availablePlugins = list(strcred.findCheckerFactories())
- for plg in plugin.getPlugins(strcred.ICheckerFactory):
- self.assertIn(plg, availablePlugins)
-
-
- def test_findCheckerFactory(self):
- """
- Test that findCheckerFactory returns the first plugin
- available for a given authentication type.
- """
- self.assertIdentical(strcred.findCheckerFactory('file'),
- cred_file.theFileCheckerFactory)
-
-
-
-class TestMemoryChecker(unittest.TestCase):
-
- def setUp(self):
- self.admin = credentials.UsernamePassword('admin', 'asdf')
- self.alice = credentials.UsernamePassword('alice', 'foo')
- self.badPass = credentials.UsernamePassword('alice', 'foobar')
- self.badUser = credentials.UsernamePassword('x', 'yz')
- self.checker = strcred.makeChecker('memory:admin:asdf:alice:foo')
-
-
- def test_isChecker(self):
- """
- Verifies that strcred.makeChecker('memory') returns an object
- that implements the L{ICredentialsChecker} interface.
- """
- self.assertTrue(checkers.ICredentialsChecker.providedBy(self.checker))
- self.assertIn(credentials.IUsernamePassword,
- self.checker.credentialInterfaces)
-
-
- def test_badFormatArgString(self):
- """
- Test that an argument string which does not contain user:pass
- pairs (i.e., an odd number of ':' characters) raises an exception.
- """
- self.assertRaises(strcred.InvalidAuthArgumentString,
- strcred.makeChecker, 'memory:a:b:c')
-
-
- def test_memoryCheckerSucceeds(self):
- """
- Test that the checker works with valid credentials.
- """
- def _gotAvatar(username):
- self.assertEquals(username, self.admin.username)
- return (self.checker
- .requestAvatarId(self.admin)
- .addCallback(_gotAvatar))
-
-
- def test_memoryCheckerFailsUsername(self):
- """
- Test that the checker fails with an invalid username.
- """
- return self.assertFailure(self.checker.requestAvatarId(self.badUser),
- error.UnauthorizedLogin)
-
-
- def test_memoryCheckerFailsPassword(self):
- """
- Test that the checker fails with an invalid password.
- """
- return self.assertFailure(self.checker.requestAvatarId(self.badPass),
- error.UnauthorizedLogin)
-
-
-
-class TestAnonymousChecker(unittest.TestCase):
-
- def test_isChecker(self):
- """
- Verifies that strcred.makeChecker('anonymous') returns an object
- that implements the L{ICredentialsChecker} interface.
- """
- checker = strcred.makeChecker('anonymous')
- self.assertTrue(checkers.ICredentialsChecker.providedBy(checker))
- self.assertIn(credentials.IAnonymous, checker.credentialInterfaces)
-
-
- def testAnonymousAccessSucceeds(self):
- """
- Test that we can log in anonymously using this checker.
- """
- checker = strcred.makeChecker('anonymous')
- request = checker.requestAvatarId(credentials.Anonymous())
- def _gotAvatar(avatar):
- self.assertIdentical(checkers.ANONYMOUS, avatar)
- return request.addCallback(_gotAvatar)
-
-
-
-class TestUnixChecker(unittest.TestCase):
- users = {
- 'admin': 'asdf',
- 'alice': 'foo',
- }
-
-
- def _pwd(self, username):
- return (username, crypt.crypt(self.users[username], 'F/'),
- 1000, 1000, username, '/home/'+username, '/bin/sh')
-
-
- def _spwd(self, username):
- return (username, crypt.crypt(self.users[username], 'F/'),
- 0, 0, 99999, 7, -1, -1, -1)
-
-
- def setUp(self):
- self.admin = credentials.UsernamePassword('admin', 'asdf')
- self.alice = credentials.UsernamePassword('alice', 'foo')
- self.badPass = credentials.UsernamePassword('alice', 'foobar')
- self.badUser = credentials.UsernamePassword('x', 'yz')
- self.checker = strcred.makeChecker('unix')
- # Hack around the pwd and spwd modules, since we can't really
- # go about reading your /etc/passwd or /etc/shadow files
- if pwd:
- self._pwd_getpwnam = pwd.getpwnam
- pwd.getpwnam = self._pwd
- if spwd:
- self._spwd_getspnam = spwd.getspnam
- spwd.getspnam = self._spwd
-
-
- def tearDown(self):
- if pwd:
- pwd.getpwnam = self._pwd_getpwnam
- if spwd:
- spwd.getspnam = self._spwd_getspnam
-
-
- def test_isChecker(self):
- """
- Verifies that strcred.makeChecker('unix') returns an object
- that implements the L{ICredentialsChecker} interface.
- """
- self.assertTrue(checkers.ICredentialsChecker.providedBy(self.checker))
- self.assertIn(credentials.IUsernamePassword,
- self.checker.credentialInterfaces)
-
-
- def test_unixCheckerSucceeds(self):
- """
- Test that the checker works with valid credentials.
- """
- def _gotAvatar(username):
- self.assertEquals(username, self.admin.username)
- return (self.checker
- .requestAvatarId(self.admin)
- .addCallback(_gotAvatar))
-
-
- def test_unixCheckerFailsUsername(self):
- """
- Test that the checker fails with an invalid username.
- """
- return self.assertFailure(self.checker.requestAvatarId(self.badUser),
- error.UnauthorizedLogin)
-
-
- def test_unixCheckerFailsPassword(self):
- """
- Test that the checker fails with an invalid password.
- """
- return self.assertFailure(self.checker.requestAvatarId(self.badPass),
- error.UnauthorizedLogin)
-
-
- if None in (pwd, spwd, crypt):
- for method in (test_unixCheckerSucceeds,
- test_unixCheckerFailsUsername,
- test_unixCheckerFailsPassword):
- method.skip = 'pwd and spwd are both unavailable'
-
-
-
-class TestFileDBChecker(unittest.TestCase):
- """
- Test for the --auth=file:... file checker.
- """
-
- def setUp(self):
- self.admin = credentials.UsernamePassword('admin', 'asdf')
- self.alice = credentials.UsernamePassword('alice', 'foo')
- self.badPass = credentials.UsernamePassword('alice', 'foobar')
- self.badUser = credentials.UsernamePassword('x', 'yz')
- self.filename = self.mktemp()
- file(self.filename, 'w').write('admin:asdf\nalice:foo\n')
- self.checker = strcred.makeChecker('file:' + self.filename)
-
-
- def _fakeFilename(self):
- filename = '/DoesNotExist'
- while os.path.exists(filename):
- filename += '_'
- return filename
-
-
- def test_isChecker(self):
- """
- Verifies that strcred.makeChecker('memory') returns an object
- that implements the L{ICredentialsChecker} interface.
- """
- self.assertTrue(checkers.ICredentialsChecker.providedBy(self.checker))
- self.assertIn(credentials.IUsernamePassword,
- self.checker.credentialInterfaces)
-
-
- def test_fileCheckerSucceeds(self):
- """
- Test that the checker works with valid credentials.
- """
- def _gotAvatar(username):
- self.assertEquals(username, self.admin.username)
- return (self.checker
- .requestAvatarId(self.admin)
- .addCallback(_gotAvatar))
-
-
- def test_fileCheckerFailsUsername(self):
- """
- Test that the checker fails with an invalid username.
- """
- return self.assertFailure(self.checker.requestAvatarId(self.badUser),
- error.UnauthorizedLogin)
-
-
- def test_fileCheckerFailsPassword(self):
- """
- Test that the checker fails with an invalid password.
- """
- return self.assertFailure(self.checker.requestAvatarId(self.badPass),
- error.UnauthorizedLogin)
-
-
- def test_failsWithEmptyFilename(self):
- """
- Test that an empty filename raises an error.
- """
- self.assertRaises(ValueError, strcred.makeChecker, 'file')
- self.assertRaises(ValueError, strcred.makeChecker, 'file:')
-
-
- def test_warnWithBadFilename(self):
- """
- When the file auth plugin is given a file that doesn't exist, it
- should produce a warning.
- """
- oldOutput = cred_file.theFileCheckerFactory.errorOutput
- newOutput = StringIO.StringIO()
- cred_file.theFileCheckerFactory.errorOutput = newOutput
- checker = strcred.makeChecker('file:' + self._fakeFilename())
- cred_file.theFileCheckerFactory.errorOutput = oldOutput
- self.assertIn(cred_file.invalidFileWarning, newOutput.getvalue())
-
-
-
-class DummyOptions(usage.Options, strcred.AuthOptionMixin):
- """
- Simple options for testing L{strcred.AuthOptionMixin}.
- """
-
-
-
-class TestCheckerOptions(unittest.TestCase):
-
- def test_createsList(self):
- """
- Test that the --auth command line creates a list in the
- Options instance and appends values to it.
- """
- options = DummyOptions()
- options.parseOptions(['--auth', 'memory'])
- self.assertEqual(len(options['credCheckers']), 1)
- options = DummyOptions()
- options.parseOptions(['--auth', 'memory', '--auth', 'memory'])
- self.assertEqual(len(options['credCheckers']), 2)
-
-
- def test_invalidAuthError(self):
- """
- Test that the --auth command line raises an exception when it
- gets a parameter it doesn't understand.
- """
- options = DummyOptions()
- # If someone adds a 'ThisPluginDoesNotExist' then this unit
- # test should still run.
- invalidParameter = getInvalidAuthType()
- self.assertRaises(
- usage.UsageError,
- options.parseOptions, ['--auth', invalidParameter])
- self.assertRaises(
- usage.UsageError,
- options.parseOptions, ['--help-auth-type', invalidParameter])
-
-
- def test_createsDictionary(self):
- """
- Test that the --auth command line creates a dictionary
- mapping supported interfaces to the list of credentials
- checkers that support it.
- """
- options = DummyOptions()
- options.parseOptions(['--auth', 'memory', '--auth', 'anonymous'])
- chd = options['credInterfaces']
- self.assertEquals(len(chd[credentials.IAnonymous]), 1)
- self.assertEquals(len(chd[credentials.IUsernamePassword]), 1)
- chdAnonymous = chd[credentials.IAnonymous][0]
- chdUserPass = chd[credentials.IUsernamePassword][0]
- self.assertTrue(checkers.ICredentialsChecker.providedBy(chdAnonymous))
- self.assertTrue(checkers.ICredentialsChecker.providedBy(chdUserPass))
- self.assertIn(credentials.IAnonymous,
- chdAnonymous.credentialInterfaces)
- self.assertIn(credentials.IUsernamePassword,
- chdUserPass.credentialInterfaces)
-
-
- def test_credInterfacesProvidesLists(self):
- """
- Test that when two --auth arguments are passed along which
- support the same interface, a list with both is created.
- """
- options = DummyOptions()
- options.parseOptions(['--auth', 'memory', '--auth', 'unix'])
- self.assertEquals(
- options['credCheckers'],
- options['credInterfaces'][credentials.IUsernamePassword])
-
-
- def test_listDoesNotDisplayDuplicates(self):
- """
- Test that the list for --help-auth does not duplicate items.
- """
- authTypes = []
- options = DummyOptions()
- for cf in options._checkerFactoriesForOptHelpAuth():
- self.assertNotIn(cf.authType, authTypes)
- authTypes.append(cf.authType)
-
-
- def test_displaysListCorrectly(self):
- """
- Test that the --help-auth argument correctly displays all
- available authentication plugins, then exits.
- """
- newStdout = StringIO.StringIO()
- options = DummyOptions()
- options.authOutput = newStdout
- self.assertRaises(SystemExit, options.parseOptions, ['--help-auth'])
- for checkerFactory in strcred.findCheckerFactories():
- self.assertIn(checkerFactory.authType, newStdout.getvalue())
-
-
- def test_displaysHelpCorrectly(self):
- """
- Test that the --help-auth-for argument will correctly display
- the help file for a particular authentication plugin.
- """
- newStdout = StringIO.StringIO()
- options = DummyOptions()
- options.authOutput = newStdout
- self.assertRaises(
- SystemExit, options.parseOptions, ['--help-auth-type', 'file'])
- for line in cred_file.theFileCheckerFactory.authHelp:
- if line.strip():
- self.assertIn(line.strip(), newStdout.getvalue())
-
-
- def test_unexpectedException(self):
- """
- When the checker specified by --auth raises an unexpected error, it
- should be caught and re-raised within a L{usage.UsageError}.
- """
- options = DummyOptions()
- err = self.assertRaises(usage.UsageError, options.parseOptions,
- ['--auth', 'file'])
- self.assertEquals(str(err),
- "Unexpected error: 'file' requires a filename")
-
-
-
-class OptionsForUsernamePassword(usage.Options, strcred.AuthOptionMixin):
- supportedInterfaces = (credentials.IUsernamePassword,)
-
-
-
-class OptionsForUsernameHashedPassword(usage.Options, strcred.AuthOptionMixin):
- supportedInterfaces = (credentials.IUsernameHashedPassword,)
-
-
-
-class OptionsSupportsAllInterfaces(usage.Options, strcred.AuthOptionMixin):
- supportedInterfaces = None
-
-
-
-class OptionsSupportsNoInterfaces(usage.Options, strcred.AuthOptionMixin):
- supportedInterfaces = []
-
-
-
-class TestLimitingInterfaces(unittest.TestCase):
- """
- Tests functionality that allows an application to limit the
- credential interfaces it can support. For the purposes of this
- test, we use IUsernameHashedPassword, although this will never
- really be used by the command line.
-
- (I have, to date, not thought of a half-decent way for a user to
- specify a hash algorithm via the command-line. Nor do I think it's
- very useful.)
-
- I should note that, at first, this test is counter-intuitive,
- because we're using the checker with a pre-defined hash function
- as the 'bad' checker. See the documentation for
- L{twisted.cred.checkers.FilePasswordDB.hash} for more details.
- """
-
- def setUp(self):
- self.filename = self.mktemp()
- file(self.filename, 'w').write('admin:asdf\nalice:foo\n')
- self.goodChecker = checkers.FilePasswordDB(self.filename)
- self.badChecker = checkers.FilePasswordDB(self.filename, hash=self._hash)
- self.anonChecker = checkers.AllowAnonymousAccess()
-
-
- def _hash(self, networkUsername, networkPassword, storedPassword):
- """
- A dumb hash that doesn't really do anything.
- """
- return networkPassword
-
-
- def test_supportsInterface(self):
- """
- Test that the supportsInterface method behaves appropriately.
- """
- options = OptionsForUsernamePassword()
- self.assertTrue(
- options.supportsInterface(credentials.IUsernamePassword))
- self.assertFalse(
- options.supportsInterface(credentials.IAnonymous))
- self.assertRaises(
- strcred.UnsupportedInterfaces, options.addChecker, self.anonChecker)
-
-
- def test_supportsAllInterfaces(self):
- """
- Test that the supportsInterface method behaves appropriately
- when the supportedInterfaces attribute is None.
- """
- options = OptionsSupportsAllInterfaces()
- self.assertTrue(
- options.supportsInterface(credentials.IUsernamePassword))
- self.assertTrue(
- options.supportsInterface(credentials.IAnonymous))
-
-
- def test_supportsCheckerFactory(self):
- """
- Test that the supportsCheckerFactory method behaves appropriately.
- """
- options = OptionsForUsernamePassword()
- fileCF = cred_file.theFileCheckerFactory
- anonCF = cred_anonymous.theAnonymousCheckerFactory
- self.assertTrue(options.supportsCheckerFactory(fileCF))
- self.assertFalse(options.supportsCheckerFactory(anonCF))
-
-
- def test_canAddSupportedChecker(self):
- """
- Test that when addChecker is called with a checker that
- implements at least one of the interfaces our application
- supports, it is successful.
- """
- options = OptionsForUsernamePassword()
- options.addChecker(self.goodChecker)
- iface = options.supportedInterfaces[0]
- # Test that we did get IUsernamePassword
- self.assertIdentical(options['credInterfaces'][iface][0], self.goodChecker)
- self.assertIdentical(options['credCheckers'][0], self.goodChecker)
- # Test that we didn't get IUsernameHashedPassword
- self.assertEquals(len(options['credInterfaces'][iface]), 1)
- self.assertEquals(len(options['credCheckers']), 1)
-
-
- def test_failOnAddingUnsupportedChecker(self):
- """
- Test that when addChecker is called with a checker that does
- not implement any supported interfaces, it fails.
- """
- options = OptionsForUsernameHashedPassword()
- self.assertRaises(strcred.UnsupportedInterfaces,
- options.addChecker, self.badChecker)
-
-
- def test_unsupportedInterfaceError(self):
- """
- Test that the --auth command line raises an exception when it
- gets a checker we don't support.
- """
- options = OptionsSupportsNoInterfaces()
- authType = cred_anonymous.theAnonymousCheckerFactory.authType
- self.assertRaises(
- usage.UsageError,
- options.parseOptions, ['--auth', authType])
-
-
- def test_helpAuthLimitsOutput(self):
- """
- Test that --help-auth will only list checkers that purport to
- supply at least one of the credential interfaces our
- application can use.
- """
- options = OptionsForUsernamePassword()
- for factory in options._checkerFactoriesForOptHelpAuth():
- invalid = True
- for interface in factory.credentialInterfaces:
- if options.supportsInterface(interface):
- invalid = False
- if invalid:
- raise strcred.UnsupportedInterfaces()
-
-
- def test_helpAuthTypeLimitsOutput(self):
- """
- Test that --help-auth-type will display a warning if you get
- help for an authType that does not supply at least one of the
- credential interfaces our application can use.
- """
- options = OptionsForUsernamePassword()
- # Find an interface that we can use for our test
- invalidFactory = None
- for factory in strcred.findCheckerFactories():
- if not options.supportsCheckerFactory(factory):
- invalidFactory = factory
- break
- self.assertNotIdentical(invalidFactory, None)
- # Capture output and make sure the warning is there
- newStdout = StringIO.StringIO()
- options.authOutput = newStdout
- self.assertRaises(SystemExit, options.parseOptions,
- ['--help-auth-type', 'anonymous'])
- self.assertIn(strcred.notSupportedWarning, newStdout.getvalue())
-
« no previous file with comments | « third_party/twisted_8_1/twisted/test/test_stdio.py ('k') | third_party/twisted_8_1/twisted/test/test_strerror.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698