From 1b02310cbfe4ac8aaded7ce4cbc66fc67e9aa60f Mon Sep 17 00:00:00 2001 From: "Maximilian R." Date: Sat, 9 Mar 2024 01:04:25 +0100 Subject: [PATCH] Fine-grained tests for network options Signed-off-by: Maximilian R --- podman_compose.py | 1 + pytests/test_network_create_args.py | 148 ++++++++++++++++++++++++---- 2 files changed, 130 insertions(+), 19 deletions(-) diff --git a/podman_compose.py b/podman_compose.py index 51f1de7f..d2301fdd 100755 --- a/podman_compose.py +++ b/podman_compose.py @@ -729,6 +729,7 @@ def get_network_create_args(net_desc, proj_name, net_name): return args + async def assert_cnt_nets(compose, cnt): """ create missing networks diff --git a/pytests/test_network_create_args.py b/pytests/test_network_create_args.py index 450cc7bc..c2ab1194 100644 --- a/pytests/test_network_create_args.py +++ b/pytests/test_network_create_args.py @@ -1,6 +1,8 @@ import unittest + from podman_compose import get_network_create_args + class TestGetNetworkCreateArgs(unittest.TestCase): def test_minimal(self): net_desc = { @@ -9,20 +11,111 @@ def test_minimal(self): "driver": None, "driver_opts": {}, "ipam": {"config": []}, - "enable_ipv6": False + "enable_ipv6": False, + } + proj_name = "test_project" + net_name = "test_network" + expected_args = [ + "create", + "--label", + f"io.podman.compose.project={proj_name}", + "--label", + f"com.docker.compose.project={proj_name}", + net_name, + ] + args = get_network_create_args(net_desc, proj_name, net_name) + self.assertEqual(args, expected_args) + + def test_ipv6(self): + net_desc = { + "labels": [], + "internal": False, + "driver": None, + "driver_opts": {}, + "ipam": {"config": []}, + "enable_ipv6": True, + } + proj_name = "test_project" + net_name = "test_network" + expected_args = [ + "create", + "--label", + f"io.podman.compose.project={proj_name}", + "--label", + f"com.docker.compose.project={proj_name}", + "--ipv6", + net_name, + ] + args = get_network_create_args(net_desc, proj_name, net_name) + self.assertEqual(args, expected_args) + + def test_bridge(self): + net_desc = { + "labels": [], + "internal": False, + "driver": "bridge", + "driver_opts": {"opt1": "value1", "opt2": "value2"}, + "ipam": {"config": []}, + "enable_ipv6": False, + } + proj_name = "test_project" + net_name = "test_network" + expected_args = [ + "create", + "--label", + f"io.podman.compose.project={proj_name}", + "--label", + f"com.docker.compose.project={proj_name}", + "--driver", + "bridge", + "--opt", + "opt1=value1", + "--opt", + "opt2=value2", + net_name, + ] + args = get_network_create_args(net_desc, proj_name, net_name) + self.assertEqual(args, expected_args) + + def test_ipam_driver(self): + net_desc = { + "labels": [], + "internal": False, + "driver": None, + "driver_opts": {}, + "ipam": { + "driver": "default", + "config": [ + { + "subnet": "192.168.0.0/24", + "ip_range": "192.168.0.2/24", + "gateway": "192.168.0.1", + } + ], + }, } proj_name = "test_project" net_name = "test_network" expected_args = [ "create", - "--label", f"io.podman.compose.project={proj_name}", - "--label", f"com.docker.compose.project={proj_name}", - net_name + "--label", + f"io.podman.compose.project={proj_name}", + "--label", + f"com.docker.compose.project={proj_name}", + "--ipam-driver", + "default", + "--subnet", + "192.168.0.0/24", + "--ip-range", + "192.168.0.2/24", + "--gateway", + "192.168.0.1", + net_name, ] args = get_network_create_args(net_desc, proj_name, net_name) self.assertEqual(args, expected_args) - def test_with_options(self): + def test_complete(self): net_desc = { "labels": ["label1", "label2"], "internal": True, @@ -30,28 +123,45 @@ def test_with_options(self): "driver_opts": {"opt1": "value1", "opt2": "value2"}, "ipam": { "driver": "default", - "config": [{"subnet": "192.168.0.0/24", "ip_range": "192.168.0.2/24", "gateway": "192.168.0.1"}] + "config": [ + { + "subnet": "192.168.0.0/24", + "ip_range": "192.168.0.2/24", + "gateway": "192.168.0.1", + } + ], }, - "enable_ipv6": True + "enable_ipv6": True, } proj_name = "test_project" net_name = "test_network" expected_args = [ "create", - "--label", f"io.podman.compose.project={proj_name}", - "--label", f"com.docker.compose.project={proj_name}", - "--label", "label1", - "--label", "label2", + "--label", + f"io.podman.compose.project={proj_name}", + "--label", + f"com.docker.compose.project={proj_name}", + "--label", + "label1", + "--label", + "label2", "--internal", - "--driver", "bridge", - "--opt", "opt1=value1", - "--opt", "opt2=value2", - "--ipam-driver", "default", + "--driver", + "bridge", + "--opt", + "opt1=value1", + "--opt", + "opt2=value2", + "--ipam-driver", + "default", "--ipv6", - "--subnet", "192.168.0.0/24", - "--ip-range", "192.168.0.2/24", - "--gateway", "192.168.0.1", - net_name + "--subnet", + "192.168.0.0/24", + "--ip-range", + "192.168.0.2/24", + "--gateway", + "192.168.0.1", + net_name, ] args = get_network_create_args(net_desc, proj_name, net_name) self.assertEqual(args, expected_args)