Skip to content

Commit

Permalink
tests: add more coverage for test_ceph_key
Browse files Browse the repository at this point in the history
This commit adds more coverage regarding the testing of ceph_key module

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit 27ca884)
  • Loading branch information
guits committed Aug 21, 2020
1 parent 8fde5f7 commit f22078b
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions tests/library/test_ceph_key.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,25 @@
sys.path.append('./library')
import ceph_key
import mock
import pytest
from ansible.module_utils import basic
from ansible.module_utils._text import to_bytes

# From ceph-ansible documentation
def set_module_args(args):
if '_ansible_remote_tmp' not in args:
args['_ansible_remote_tmp'] = '/tmp'
if '_ansible_keep_remote_files' not in args:
args['_ansible_keep_remote_files'] = False

args = json.dumps({'ANSIBLE_MODULE_ARGS': args})
basic._ANSIBLE_ARGS = to_bytes(args)

class AnsibleExitJson(Exception):
pass

def exit_json(*args, **kwargs):
raise AnsibleExitJson(kwargs)

@mock.patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': 'docker'})
class TestCephKeyModule(object):
Expand Down Expand Up @@ -519,3 +537,22 @@ def test_build_key_path_bootstrap_osd(self):
expected_result = "/var/lib/ceph/bootstrap-osd/fake.keyring"
result = ceph_key.build_key_path(fake_cluster, entity)
assert result == expected_result

@mock.patch('ansible.module_utils.basic.AnsibleModule.exit_json')
@mock.patch('ceph_key.exec_commands')
def test_state_info(self, m_exec_commands, m_exit_json):
set_module_args({"state": "info",
"cluster": "ceph",
"name": "client.admin"
})
m_exit_json.side_effect = exit_json
m_exec_commands.return_value = (0, ['ceph', 'auth', 'get', 'client.admin', '-f', 'json'] ,'[{"entity":"client.admin","key":"AQC1tw5fF156GhAAoJCvHGX/jl/k7/N4VZm8iQ==","caps":{"mds":"allow *","mgr":"allow *","mon":"allow *","osd":"allow *"}}]', 'exported keyring for client.admin')

with pytest.raises(AnsibleExitJson) as result:
ceph_key.run_module()

result = result.value.args[0]
assert result['changed'] == False
assert result['stdout'] == '[{"entity":"client.admin","key":"AQC1tw5fF156GhAAoJCvHGX/jl/k7/N4VZm8iQ==","caps":{"mds":"allow *","mgr":"allow *","mon":"allow *","osd":"allow *"}}]'
assert result['stderr'] == 'exported keyring for client.admin'
assert result['rc'] == 0

0 comments on commit f22078b

Please sign in to comment.