diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-04-14 03:43:54 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-04-14 03:43:54 +0000 |
commit | da3dca3dd64871cc227cfeef768ff8a605c1267d (patch) | |
tree | 39b2aeb9d76bf4956b953bbaffa38dd0784895a7 | |
parent | fa8ac826bfa3614478c8dda1395642530c2a113c (diff) | |
parent | c34f4cc37539a8491f98142ec728261786c8df37 (diff) | |
download | keystonemiddleware-da3dca3dd64871cc227cfeef768ff8a605c1267d.tar.gz |
Merge "Create signing_dir upon first usage" into stable/mitaka
-rw-r--r-- | keystonemiddleware/auth_token/_signing_dir.py | 21 | ||||
-rw-r--r-- | keystonemiddleware/tests/unit/auth_token/test_signing_dir.py | 30 |
2 files changed, 33 insertions, 18 deletions
diff --git a/keystonemiddleware/auth_token/_signing_dir.py b/keystonemiddleware/auth_token/_signing_dir.py index f8b1a41..3ef53ac 100644 --- a/keystonemiddleware/auth_token/_signing_dir.py +++ b/keystonemiddleware/auth_token/_signing_dir.py @@ -28,14 +28,12 @@ class SigningDirectory(object): def __init__(self, directory_name=None, log=None): self._log = log or _LOG - if directory_name is None: - directory_name = tempfile.mkdtemp(prefix='keystone-signing-') - self._log.info( - _LI('Using %s as cache directory for signing certificate'), - directory_name) self._directory_name = directory_name - - self._verify_signing_dir() + if self._directory_name: + self._log.info( + _LI('Using %s as cache directory for signing certificate'), + self._directory_name) + self._verify_signing_dir() def write_file(self, file_name, new_contents): @@ -63,8 +61,17 @@ class SigningDirectory(object): return f.read() def calc_path(self, file_name): + self._lazy_create_signing_dir() return os.path.join(self._directory_name, file_name) + def _lazy_create_signing_dir(self): + if self._directory_name is None: + self._directory_name = tempfile.mkdtemp(prefix='keystone-signing-') + self._log.info( + _LI('Using %s as cache directory for signing certificate'), + self._directory_name) + self._verify_signing_dir() + def _verify_signing_dir(self): if os.path.isdir(self._directory_name): if not os.access(self._directory_name, os.W_OK): diff --git a/keystonemiddleware/tests/unit/auth_token/test_signing_dir.py b/keystonemiddleware/tests/unit/auth_token/test_signing_dir.py index b2ef95d..5664d7d 100644 --- a/keystonemiddleware/tests/unit/auth_token/test_signing_dir.py +++ b/keystonemiddleware/tests/unit/auth_token/test_signing_dir.py @@ -53,12 +53,13 @@ class SigningDirectoryTests(utils.BaseTestCase): # write_file when the file doesn't exist creates the file. signing_directory = _signing_dir.SigningDirectory() - self.addCleanup(shutil.rmtree, signing_directory._directory_name) file_name = self.getUniqueString() contents = self.getUniqueString() signing_directory.write_file(file_name, contents) + self.addCleanup(shutil.rmtree, signing_directory._directory_name) + file_path = signing_directory.calc_path(file_name) with open(file_path) as f: actual_contents = f.read() @@ -69,12 +70,13 @@ class SigningDirectoryTests(utils.BaseTestCase): # write_file when the file already exists overwrites it. signing_directory = _signing_dir.SigningDirectory() - self.addCleanup(shutil.rmtree, signing_directory._directory_name) file_name = self.getUniqueString() orig_contents = self.getUniqueString() signing_directory.write_file(file_name, orig_contents) + self.addCleanup(shutil.rmtree, signing_directory._directory_name) + new_contents = self.getUniqueString() signing_directory.write_file(file_name, new_contents) @@ -89,28 +91,32 @@ class SigningDirectoryTests(utils.BaseTestCase): # is written. signing_directory = _signing_dir.SigningDirectory() + original_file_name = self.getUniqueString() + original_contents = self.getUniqueString() + signing_directory.write_file(original_file_name, original_contents) + self.addCleanup(shutil.rmtree, signing_directory._directory_name) # Delete the directory. shutil.rmtree(signing_directory._directory_name) - file_name = self.getUniqueString() - contents = self.getUniqueString() - signing_directory.write_file(file_name, contents) + new_file_name = self.getUniqueString() + new_contents = self.getUniqueString() + signing_directory.write_file(new_file_name, new_contents) - actual_contents = signing_directory.read_file(file_name) - self.assertEqual(contents, actual_contents) + actual_contents = signing_directory.read_file(new_file_name) + self.assertEqual(new_contents, actual_contents) def test_read_file(self): # Can read a file that was written. signing_directory = _signing_dir.SigningDirectory() - self.addCleanup(shutil.rmtree, signing_directory._directory_name) - file_name = self.getUniqueString() contents = self.getUniqueString() signing_directory.write_file(file_name, contents) + self.addCleanup(shutil.rmtree, signing_directory._directory_name) + actual_contents = signing_directory.read_file(file_name) self.assertEqual(contents, actual_contents) @@ -119,19 +125,21 @@ class SigningDirectoryTests(utils.BaseTestCase): # Show what happens when try to read a file that wasn't written. signing_directory = _signing_dir.SigningDirectory() - self.addCleanup(shutil.rmtree, signing_directory._directory_name) file_name = self.getUniqueString() self.assertRaises(IOError, signing_directory.read_file, file_name) + self.addCleanup(shutil.rmtree, signing_directory._directory_name) def test_calc_path(self): # calc_path returns the actual filename built from the directory name. signing_directory = _signing_dir.SigningDirectory() - self.addCleanup(shutil.rmtree, signing_directory._directory_name) file_name = self.getUniqueString() actual_path = signing_directory.calc_path(file_name) + + self.addCleanup(shutil.rmtree, signing_directory._directory_name) + expected_path = os.path.join(signing_directory._directory_name, file_name) self.assertEqual(expected_path, actual_path) |