Index: third_party/twisted_8_1/twisted/test/test_randbytes.py |
diff --git a/third_party/twisted_8_1/twisted/test/test_randbytes.py b/third_party/twisted_8_1/twisted/test/test_randbytes.py |
deleted file mode 100644 |
index d62504f703b4df4799c60c01b55ee249b009f0c7..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/test/test_randbytes.py |
+++ /dev/null |
@@ -1,178 +0,0 @@ |
-# Copyright (c) 2007 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
-""" |
-Test cases for L{twisted.python.randbytes}. |
-""" |
- |
-import os, sys |
- |
-from twisted.trial import unittest |
-from twisted.python import randbytes |
- |
-try: |
- from Crypto.Util import randpool |
-except ImportError: |
- randpool = None |
- |
- |
- |
-class SecureRandomTestCaseBase(object): |
- """ |
- Base class for secureRandom test cases. |
- """ |
- |
- def _check(self, source): |
- """ |
- The given random bytes source should return the number of bytes |
- requested each time it is called and should probably not return the |
- same bytes on two consecutive calls (although this is a perfectly |
- legitimate occurrence and rejecting it may generate a spurious failure |
- -- maybe we'll get lucky and the heat death with come first). |
- """ |
- for nbytes in range(17, 25): |
- s = source(nbytes) |
- self.assertEquals(len(s), nbytes) |
- s2 = source(nbytes) |
- self.assertEquals(len(s2), nbytes) |
- # This is crude but hey |
- self.assertNotEquals(s2, s) |
- |
- |
- |
-class SecureRandomTestCase(SecureRandomTestCaseBase, unittest.TestCase): |
- """ |
- Test secureRandom under normal conditions. |
- """ |
- |
- def test_normal(self): |
- """ |
- L{randbytes.secureRandom} should return a string of the requested |
- length and make some effort to make its result otherwise unpredictable. |
- """ |
- self._check(randbytes.secureRandom) |
- |
- |
- |
-class ConditionalSecureRandomTestCase(SecureRandomTestCaseBase, |
- unittest.TestCase): |
- """ |
- Test random sources one by one, then remove it to. |
- """ |
- |
- def setUp(self): |
- """ |
- Create a L{randbytes.RandomFactory} to use in the tests. |
- """ |
- self.factory = randbytes.RandomFactory() |
- |
- |
- def errorFactory(self, nbytes): |
- """ |
- A factory raising an error when a source is not available. |
- """ |
- raise randbytes.SourceNotAvailable() |
- |
- |
- def test_osUrandom(self): |
- """ |
- L{RandomFactory._osUrandom} should work as a random source whenever |
- L{os.urandom} is available. |
- """ |
- try: |
- self._check(self.factory._osUrandom) |
- except randbytes.SourceNotAvailable: |
- # Not available on Python 2.3 |
- self.assertTrue(sys.version_info < (2, 4)) |
- |
- |
- def test_fileUrandom(self): |
- """ |
- L{RandomFactory._fileUrandom} should work as a random source whenever |
- C{/dev/urandom} is available. |
- """ |
- try: |
- self._check(self.factory._fileUrandom) |
- except randbytes.SourceNotAvailable: |
- # The test should only fail in /dev/urandom doesn't exist |
- self.assertFalse(os.path.exists('/dev/urandom')) |
- |
- |
- def test_cryptoRandom(self): |
- """ |
- L{RandomFactory._cryptoRandom} should work as a random source whenever |
- L{PyCrypto} is installed. |
- """ |
- try: |
- self._check(self.factory._cryptoRandom) |
- except randbytes.SourceNotAvailable: |
- # It fails if PyCrypto is not here |
- self.assertIdentical(randpool, None) |
- |
- |
- def test_withoutOsUrandom(self): |
- """ |
- If L{os.urandom} is not available but L{PyCrypto} is, |
- L{RandomFactory.secureRandom} should still work as a random source. |
- """ |
- self.factory._osUrandom = self.errorFactory |
- self._check(self.factory.secureRandom) |
- |
- if randpool is None: |
- test_withoutOsUrandom.skip = "PyCrypto not available" |
- |
- |
- def test_withoutOsAndFileUrandom(self): |
- """ |
- Remove C{os.urandom} and /dev/urandom read. |
- """ |
- self.factory._osUrandom = self.errorFactory |
- self.factory._fileUrandom = self.errorFactory |
- self._check(self.factory.secureRandom) |
- |
- if randpool is None: |
- test_withoutOsAndFileUrandom.skip = "PyCrypto not available" |
- |
- |
- def test_withoutAnything(self): |
- """ |
- Remove all secure sources and assert it raises a failure. Then try the |
- fallback parameter. |
- """ |
- self.factory._osUrandom = self.errorFactory |
- self.factory._fileUrandom = self.errorFactory |
- self.factory._cryptoRandom = self.errorFactory |
- self.assertRaises(randbytes.SecureRandomNotAvailable, |
- self.factory.secureRandom, 18) |
- def wrapper(): |
- return self.factory.secureRandom(18, fallback=True) |
- s = self.assertWarns( |
- RuntimeWarning, |
- "Neither PyCrypto nor urandom available - " |
- "proceeding with non-cryptographically secure random source", |
- __file__, |
- wrapper) |
- self.assertEquals(len(s), 18) |
- |
- |
- |
-class RandomTestCaseBase(SecureRandomTestCaseBase, unittest.TestCase): |
- """ |
- 'Normal' random test cases. |
- """ |
- |
- def test_normal(self): |
- """ |
- Test basic case. |
- """ |
- self._check(randbytes.insecureRandom) |
- |
- |
- def test_withoutGetrandbits(self): |
- """ |
- Test C{insecureRandom} without C{random.getrandbits}. |
- """ |
- factory = randbytes.RandomFactory() |
- factory.getrandbits = None |
- self._check(factory.insecureRandom) |
- |