-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(
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)