summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keymanager/src/leap/keymanager/__init__.py16
-rw-r--r--keymanager/src/leap/keymanager/tests/test_keymanager.py8
2 files changed, 19 insertions, 5 deletions
diff --git a/keymanager/src/leap/keymanager/__init__.py b/keymanager/src/leap/keymanager/__init__.py
index 22fb725..f00e049 100644
--- a/keymanager/src/leap/keymanager/__init__.py
+++ b/keymanager/src/leap/keymanager/__init__.py
@@ -19,6 +19,7 @@ Key Manager is a Nicknym agent for LEAP client.
"""
# let's do a little sanity check to see if we're using the wrong gnupg
import fileinput
+import os
import sys
import tempfile
from leap.common import ca_bundle
@@ -140,6 +141,18 @@ class KeyManager(object):
self._combined_ca_bundle = self._create_combined_bundle_file()
#
+ # destructor
+ #
+
+ def __del__(self):
+ try:
+ created_tmp_combined_ca_bundle = self._combined_ca_bundle not in [ca_bundle.where(), self._ca_cert_path]
+ if created_tmp_combined_ca_bundle:
+ os.remove(self._combined_ca_bundle)
+ except OSError:
+ pass
+
+ #
# utilities
#
@@ -151,8 +164,7 @@ class KeyManager(object):
elif not self._ca_cert_path:
return leap_ca_bundle
- # file is auto deleted when python process ends
- tmp_file = tempfile.NamedTemporaryFile(delete=True)
+ tmp_file = tempfile.NamedTemporaryFile(delete=False) # delete when keymanager expires
with open(tmp_file.name, 'w') as fout:
fin = fileinput.input(files=(leap_ca_bundle, self._ca_cert_path))
diff --git a/keymanager/src/leap/keymanager/tests/test_keymanager.py b/keymanager/src/leap/keymanager/tests/test_keymanager.py
index 7b90ae1..b2722b2 100644
--- a/keymanager/src/leap/keymanager/tests/test_keymanager.py
+++ b/keymanager/src/leap/keymanager/tests/test_keymanager.py
@@ -20,7 +20,7 @@
Tests for the Key Manager.
"""
-
+from os import path
from datetime import datetime
import tempfile
from leap.common import ca_bundle
@@ -369,8 +369,7 @@ class KeyManagerKeyManagementTestCase(KeyManagerWithSoledadTestCase):
@inlineCallbacks
def test_fetch_uses_combined_ca_bundle_otherwise(self):
- with tempfile.NamedTemporaryFile() as tmp_input, \
- tempfile.NamedTemporaryFile() as tmp_output:
+ with tempfile.NamedTemporaryFile() as tmp_input, tempfile.NamedTemporaryFile(delete=False) as tmp_output:
ca_content = 'some\ncontent\n'
ca_cert_path = tmp_input.name
self._dump_to_file(ca_cert_path, ca_content)
@@ -390,6 +389,9 @@ class KeyManagerKeyManagementTestCase(KeyManagerWithSoledadTestCase):
expected = self._slurp_file(ca_bundle.where()) + ca_content
self.assertEqual(expected, self._slurp_file(tmp_output.name))
+ del km # force km out of scope
+ self.assertFalse(path.exists(tmp_output.name))
+
def _dump_to_file(self, filename, content):
with open(filename, 'w') as out:
out.write(content)