From: Travis Rhoden Date: Fri, 22 May 2015 14:36:23 +0000 (-0400) Subject: [RM-11694] Add test for admin key file permissions X-Git-Tag: v1.5.25~4^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=78fe41a682b6e5655d50091ff1d8b355e72edb2c;p=ceph-deploy.git [RM-11694] Add test for admin key file permissions Signed-off-by: Travis Rhoden --- diff --git a/ceph_deploy/tests/test_cli_admin.py b/ceph_deploy/tests/test_cli_admin.py index 1c7b369..50b06a3 100644 --- a/ceph_deploy/tests/test_cli_admin.py +++ b/ceph_deploy/tests/test_cli_admin.py @@ -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)