From 8b768153b8829692fe5ad833a8f86c70f8101360 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Mon, 23 Aug 2021 12:07:30 +0200 Subject: [PATCH] cephadm: Add test_command_list_networks Signed-off-by: Sebastian Wagner --- src/cephadm/tests/fixtures.py | 14 ++++++++------ src/cephadm/tests/test_networks.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/cephadm/tests/fixtures.py b/src/cephadm/tests/fixtures.py index 348568379bc..ed1e7376672 100644 --- a/src/cephadm/tests/fixtures.py +++ b/src/cephadm/tests/fixtures.py @@ -95,8 +95,6 @@ def with_cephadm_ctx( :param list_networks: mock 'list-networks' return :param hostname: mock 'socket.gethostname' return """ - if not list_networks: - list_networks = {} if not hostname: hostname = 'host1' @@ -106,8 +104,12 @@ def with_cephadm_ctx( mock.patch('cephadm.find_executable', return_value='foo'), \ mock.patch('cephadm.is_available', return_value=True), \ mock.patch('cephadm.json_loads_retry', return_value={'epoch' : 1}), \ - mock.patch('cephadm.list_networks', return_value=list_networks), \ mock.patch('socket.gethostname', return_value=hostname): - ctx: cd.CephadmContext = cd.cephadm_init_ctx(cmd) - ctx.container_engine = container_engine - yield ctx + ctx: cd.CephadmContext = cd.cephadm_init_ctx(cmd) + ctx.container_engine = container_engine + if list_networks is not None: + with mock.patch('cephadm.list_networks', return_value=list_networks): + yield ctx + else: + yield ctx + diff --git a/src/cephadm/tests/test_networks.py b/src/cephadm/tests/test_networks.py index 6429c985282..f7bd44eb892 100644 --- a/src/cephadm/tests/test_networks.py +++ b/src/cephadm/tests/test_networks.py @@ -1,8 +1,11 @@ +import json from textwrap import dedent from unittest import mock import pytest +from tests.fixtures import with_cephadm_ctx, cephadm_fs + with mock.patch('builtins.open', create=True): from importlib.machinery import SourceFileLoader cd = SourceFileLoader('cephadm', 'cephadm').load_module() @@ -188,3 +191,11 @@ class TestCommandListNetworks: ]) def test_parse_ipv6_route(self, test_routes, test_ips, expected): assert cd._parse_ipv6_route(test_routes, test_ips) == expected + + @mock.patch.object(cd, 'call_throws', return_value=('10.4.0.1 dev tun0 proto kernel scope link src 10.4.0.2 metric 50\n', '', '')) + def test_command_list_networks(self, cephadm_fs, capsys): + with with_cephadm_ctx([]) as ctx: + cd.command_list_networks(ctx) + assert json.loads(capsys.readouterr().out) == { + '10.4.0.1': {'tun0': ['10.4.0.2']} + } \ No newline at end of file -- 2.39.5