summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2015-09-21 15:59:53 +0200
committerKali Kaneko <kali@leap.se>2015-09-24 12:09:32 -0400
commitff85233fdf560c344a473b72b41d9cf078cddba3 (patch)
tree83305189e257decc293d022ef1ff30b954906de9
parentfe78108a4a5cf67af9aec374d11596bf5f5e8d3f (diff)
[bug] keep combined file longer in scope
In previous commit 9546348c, the combined bundle ca was not long enough in scope and was therefore deleted when it actually was used. Adopted test to check whether file is deleted.
-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 22fb725b..f00e049a 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 7b90ae15..b2722b2e 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)