]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-deploy.git/commitdiff
[RM-11694] Add test for admin key file permissions
authorTravis Rhoden <trhoden@redhat.com>
Fri, 22 May 2015 14:36:23 +0000 (10:36 -0400)
committerTravis Rhoden <trhoden@redhat.com>
Fri, 22 May 2015 14:36:23 +0000 (10:36 -0400)
Signed-off-by: Travis Rhoden <trhoden@redhat.com>
ceph_deploy/tests/test_cli_admin.py

index 1c7b369da5d395aebd1d0b895bae25fd8c585487..50b06a3c8ae7f32b91ab2467a066c443138dcc5f 100644 (file)
@@ -1,6 +1,12 @@
-import pytest
+import os
 import subprocess
 
+import pytest
+from mock import patch, MagicMock, Mock
+
+from ceph_deploy.cli import _main as main
+from ceph_deploy.hosts import remotes
+from ceph_deploy.tests.directory import directory
 
 def test_help(tmpdir, cli):
     with cli(
@@ -47,3 +53,30 @@ def test_bad_no_key(tmpdir, cli):
             result = p.stderr.read()
     assert 'ceph.client.admin.keyring not found' in result
     assert err.value.status == 1
+
+
+def test_write_keyring(tmpdir):
+    with tmpdir.join('ceph.conf').open('w'):
+        pass
+    with tmpdir.join('ceph.client.admin.keyring').open('w'):
+        pass
+
+    etc_ceph = os.path.join(str(tmpdir), 'etc', 'ceph')
+    os.makedirs(etc_ceph)
+
+    distro = MagicMock()
+    distro.conn = MagicMock()
+    remotes.write_file.func_defaults = (str(tmpdir),)
+    distro.conn.remote_module = remotes
+    distro.conn.remote_module.write_conf = Mock()
+
+    with patch('ceph_deploy.admin.hosts'):
+        with patch('ceph_deploy.admin.hosts.get', MagicMock(return_value=distro)):
+            with directory(str(tmpdir)):
+                main(args=['admin', 'host1'])
+
+    keyring_file = os.path.join(etc_ceph, 'ceph.client.admin.keyring')
+    assert os.path.exists(keyring_file)
+
+    file_mode = oct(os.stat(keyring_file).st_mode & 0777)
+    assert file_mode == oct(0600)