Merge branch 'devel-2.1'
[ganeti-local] / test / ganeti.backend_unittest.py
old mode 100644 (file)
new mode 100755 (executable)
index 2c94a75..756aed9
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 0.0510-1301, USA.
+# 02110-1301, USA.
 
 
-"""Script for unittesting the backend module"""
-
+"""Script for testing ganeti.backend"""
 
 import os
-import unittest
-import time
-import tempfile
+import sys
 import shutil
+import tempfile
+import unittest
 
-from ganeti import backend
-from ganeti import constants
 from ganeti import utils
+from ganeti import constants
+from ganeti import backend
 
 import testutils
 
 
+class TestX509Certificates(unittest.TestCase):
+  def setUp(self):
+    self.tmpdir = tempfile.mkdtemp()
+
+  def tearDown(self):
+    shutil.rmtree(self.tmpdir)
+
+  def test(self):
+    (name, cert_pem) = backend.CreateX509Certificate(300, cryptodir=self.tmpdir)
+
+    self.assertEqual(utils.ReadFile(os.path.join(self.tmpdir, name,
+                                                 backend._X509_CERT_FILE)),
+                     cert_pem)
+    self.assert_(0 < os.path.getsize(os.path.join(self.tmpdir, name,
+                                                  backend._X509_KEY_FILE)))
+
+    (name2, cert_pem2) = \
+      backend.CreateX509Certificate(300, cryptodir=self.tmpdir)
+
+    backend.RemoveX509Certificate(name, cryptodir=self.tmpdir)
+    backend.RemoveX509Certificate(name2, cryptodir=self.tmpdir)
+
+    self.assertEqual(utils.ListVisibleFiles(self.tmpdir), [])
+
+  def testNonEmpty(self):
+    (name, _) = backend.CreateX509Certificate(300, cryptodir=self.tmpdir)
+
+    utils.WriteFile(utils.PathJoin(self.tmpdir, name, "hello-world"),
+                    data="Hello World")
+
+    self.assertRaises(backend.RPCFail, backend.RemoveX509Certificate,
+                      name, cryptodir=self.tmpdir)
+
+    self.assertEqual(utils.ListVisibleFiles(self.tmpdir), [name])
+
+
 class TestNodeVerify(testutils.GanetiTestCase):
   def testMasterIPLocalhost(self):
     # this a real functional test, but requires localhost to be reachable