From 2201e7944d1b10513d79ad6c8fe9c3572975a06e Mon Sep 17 00:00:00 2001 From: Seth Schoen Date: Thu, 14 May 2015 16:47:41 -0700 Subject: [PATCH] Unit tests for le_util.unique_lineage_name() --- letsencrypt/tests/le_util_test.py | 43 ++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/letsencrypt/tests/le_util_test.py b/letsencrypt/tests/le_util_test.py index c9da155c5..3f5f08c4c 100644 --- a/letsencrypt/tests/le_util_test.py +++ b/letsencrypt/tests/le_util_test.py @@ -1,4 +1,5 @@ """Tests for letsencrypt.le_util.""" +import errno import os import shutil import stat @@ -78,7 +79,7 @@ class CheckPermissionsTest(unittest.TestCase): class UniqueFileTest(unittest.TestCase): - """Tests for letsencrypt.class.le_util.unique_file.""" + """Tests for letsencrypt.le_util.unique_file.""" def setUp(self): self.root_path = tempfile.mkdtemp() @@ -122,5 +123,45 @@ class UniqueFileTest(unittest.TestCase): self.assertTrue(basename3.endswith('foo.txt')) +class UniqueLineageNameTest(unittest.TestCase): + """Tests for letsencrypt.le_util.unique_lineage_name.""" + + def setUp(self): + self.root_path = tempfile.mkdtemp() + + def tearDown(self): + shutil.rmtree(self.root_path, ignore_errors=True) + + def _call(self, filename, mode=0o777): + from letsencrypt.le_util import unique_lineage_name + return unique_lineage_name(self.root_path, filename, mode) + + def test_basic(self): + f, name = self._call("wow") + self.assertTrue(isinstance(f, file)) + self.assertTrue(isinstance(name, str)) + + def test_multiple(self): + for _ in range(10): + f, name = self._call("wow") + self.assertTrue(isinstance(f, file)) + self.assertTrue(isinstance(name, str)) + self.assertTrue("wow-0009.conf" in name) + + @mock.patch("letsencrypt.le_util.os.fdopen") + def test_failure(self, mock_fdopen): + err = OSError("whoops") + err.errno = errno.EIO + mock_fdopen.side_effect = err + self.assertRaises(OSError, self._call, "wow") + + @mock.patch("letsencrypt.le_util.os.fdopen") + def test_subsequent_failure(self, mock_fdopen): + self._call("wow") + err = OSError("whoops") + err.errno = errno.EIO + mock_fdopen.side_effect = err + self.assertRaises(OSError, self._call, "wow") + if __name__ == '__main__': unittest.main() # pragma: no cover