This patch adds a unit test for InitSSHSetup before
we start extending it in the next patch.

Signed-off-by: Helga Velroyen <[email protected]>
---
 test/py/ganeti.ssh_unittest.py | 41 +++++++++++++++++++++++++++++++++++++++++
 test/py/testutils.py           | 15 +++++++++++++++
 2 files changed, 56 insertions(+)

diff --git a/test/py/ganeti.ssh_unittest.py b/test/py/ganeti.ssh_unittest.py
index b0ba9dd..635426f 100755
--- a/test/py/ganeti.ssh_unittest.py
+++ b/test/py/ganeti.ssh_unittest.py
@@ -407,5 +407,46 @@ class TestPublicSshKeys(testutils.GanetiTestCase):
       "789-ABC ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n")
 
 
+class TestGetUserFiles(testutils.GanetiTestCase):
+
+  _PRIV_KEY = "my private key"
+  _PUB_KEY = "my public key"
+  _AUTH_KEYS = "a\nb\nc"
+
+  def _setUpFakeKeys(self):
+    os.makedirs(os.path.join(self.tmpdir, ".ssh"))
+
+    self.priv_filename = os.path.join(self.tmpdir, ".ssh", "id_dsa")
+    priv_fd = open(self.priv_filename, 'w')
+    priv_fd.write(self._PRIV_KEY)
+    priv_fd.close()
+
+    self.pub_filename = os.path.join(self.tmpdir, ".ssh", "id_dsa.pub")
+    pub_fd = open(self.pub_filename, 'w')
+    pub_fd.write(self._PUB_KEY)
+    pub_fd.close()
+
+    self.auth_filename = os.path.join(self.tmpdir, ".ssh", "authorized_keys")
+    auth_fd = open(self.auth_filename, 'w')
+    auth_fd.write(self._AUTH_KEYS)
+    auth_fd.close()
+
+  def setUp(self):
+    testutils.GanetiTestCase.setUp(self)
+    self.tmpdir = tempfile.mkdtemp()
+    self._setUpFakeKeys()
+
+  def tearDown(self):
+    shutil.rmtree(self.tmpdir)
+
+  def _GetTempHomedir(self, _):
+    return self.tmpdir
+
+  def testNewKeys(self):
+    ssh.InitSSHSetup(_homedir_fn=self._GetTempHomedir)
+    self.assertFileContentNotEqual(self.priv_filename, self._PRIV_KEY)
+    self.assertFileContentNotEqual(self.pub_filename, self._PUB_KEY)
+
+
 if __name__ == "__main__":
   testutils.GanetiTestProgram()
diff --git a/test/py/testutils.py b/test/py/testutils.py
index 033daa8..d73d8b4 100644
--- a/test/py/testutils.py
+++ b/test/py/testutils.py
@@ -105,6 +105,7 @@ class GanetiTestProgram(unittest.TestProgram):
     return unittest.TestProgram.runTests(self)
 
 
+# pylint: disable=R0904
 class GanetiTestCase(unittest.TestCase):
   """Helper class for unittesting.
 
@@ -134,6 +135,18 @@ class GanetiTestCase(unittest.TestCase):
     actual_content = utils.ReadFile(file_name)
     self.assertEqual(actual_content, expected_content)
 
+  def assertFileContentNotEqual(self, file_name, reference_content):
+    """Checks that the content of a file is different to the reference.
+
+    @type file_name: str
+    @param file_name: the file whose contents we should check
+    @type reference_content: str
+    @param reference_content: the content we use as reference
+
+    """
+    actual_content = utils.ReadFile(file_name)
+    self.assertNotEqual(actual_content, reference_content)
+
   def assertFileMode(self, file_name, expected_mode):
     """Checks that the mode of a file is what we expect.
 
@@ -195,6 +208,8 @@ class GanetiTestCase(unittest.TestCase):
     self._temp_files.append(fname)
     return fname
 
+# pylint: enable=R0904
+
 
 def patch_object(*args, **kwargs):
   """Unified patch_object for various versions of Python Mock.
-- 
2.1.0.rc2.206.gedb03e5

Reply via email to