mirror of https://github.com/sipwise/ngcpcfg.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.8 KiB
123 lines
3.8 KiB
#!/usr/bin/env py.test-3
|
|
|
|
import pytest
|
|
from pathlib import Path
|
|
from fixtures.programs import copy_tree
|
|
from fixtures.programs import read_cfg
|
|
|
|
|
|
def test_read_cfg():
|
|
env = {
|
|
"CONFIG_POOL": "/etc",
|
|
}
|
|
cfg = read_cfg("fixtures/ngcpcfg.cfg", env)
|
|
cfg["ngcpcfg"]["CONFIG_POOL"] == env["CONFIG_POOL"]
|
|
|
|
|
|
def test_file_out(tmpdir):
|
|
"""src is a file from outside NGCPCTL_MAIN"""
|
|
filename = "config.yml"
|
|
src = Path("fixtures/repos").joinpath(filename)
|
|
dst_dir = Path(tmpdir.mkdir("copy_tree"))
|
|
assert copy_tree(dst_dir, src, dst_dir) == None
|
|
|
|
|
|
def test_file_in(tmpdir):
|
|
"""src is a file from NGCPCTL_MAIN """
|
|
filename = "config.yml"
|
|
base = Path("fixtures/repos")
|
|
src = base.joinpath(filename)
|
|
dst_dir = Path(tmpdir.mkdir("copy_tree"))
|
|
rel, dst = copy_tree(base, src, dst_dir)
|
|
assert dst_dir.joinpath(filename).exists()
|
|
assert str(rel) == filename
|
|
assert dst == dst_dir.joinpath(filename)
|
|
|
|
|
|
def test_dir_out(tmpdir):
|
|
dirname = tmpdir.mkdir("config")
|
|
dst_dir = Path(tmpdir.mkdir("copy_tree"))
|
|
assert copy_tree(dst_dir, dirname, dst_dir) == None
|
|
|
|
|
|
def test_dir_in(tmpdir):
|
|
src = tmpdir.mkdir("config")
|
|
dst_dir = Path(tmpdir.mkdir("copy_tree"))
|
|
rel, dst = copy_tree(tmpdir, src, dst_dir)
|
|
assert dst_dir.joinpath(src).exists()
|
|
assert str(rel) == "config"
|
|
assert dst == dst_dir.joinpath("config")
|
|
|
|
|
|
def test_empty(ngcpcfg):
|
|
env, cfg = ngcpcfg()
|
|
ngcpctl_config = Path(env["NGCPCTL_MAIN"]).joinpath("config.yml")
|
|
assert ngcpctl_config.exists()
|
|
assert str(ngcpctl_config) != str(cfg["NGCPCTL_CONFIG"])
|
|
assert Path(cfg["TEMPLATE_POOL_BASE"]) == Path(env["NGCPCTL_MAIN"]).joinpath(
|
|
"templates"
|
|
)
|
|
|
|
|
|
def test_config(ngcpcfg):
|
|
"""test that templates are properly copied and configs defined in env"""
|
|
env, cfg = ngcpcfg({"NGCPCFG": "fixtures/ngcpcfg.cfg"})
|
|
tt2_path = Path(cfg["TEMPLATE_POOL_BASE"]).joinpath("etc/bad-syntax.txt.tt2")
|
|
assert tt2_path.exists()
|
|
assert Path(env["NETWORK_CONFIG"]) == Path("fixtures/repos/network.yml").resolve()
|
|
|
|
|
|
def test_template_pool(ngcpcfg):
|
|
pool_path = Path("fixtures/apply_templates").resolve()
|
|
env, cfg = ngcpcfg(
|
|
{
|
|
"TEMPLATE_POOL_BASE": pool_path,
|
|
}
|
|
)
|
|
assert env["TEMPLATE_POOL_BASE"] == env["SERVICES_POOL_BASE"]
|
|
tt2_path = Path(cfg["TEMPLATE_POOL_BASE"]).joinpath("etc/fake.txt.tt2")
|
|
assert tt2_path.exists()
|
|
# no files from fixtures/repos/templates is left
|
|
tt2_path = Path(cfg["TEMPLATE_POOL_BASE"]).joinpath("etc/bad-syntax.txt.tt2")
|
|
assert not tt2_path.exists()
|
|
|
|
|
|
def test_empty_cli(ngcpcfgcli):
|
|
out = ngcpcfgcli(
|
|
"status",
|
|
)
|
|
assert out.returncode == 0
|
|
ngcpctl_config = Path(out.env["NGCPCTL_MAIN"]).joinpath("config.yml")
|
|
assert ngcpctl_config.exists()
|
|
assert str(ngcpctl_config) != str(out.cfg["NGCPCTL_CONFIG"])
|
|
|
|
|
|
def test_template_pool_cli(ngcpcfgcli):
|
|
pool_path = Path("fixtures/apply_templates").resolve()
|
|
out = ngcpcfgcli(
|
|
"status",
|
|
env={
|
|
"TEMPLATE_POOL_BASE": pool_path,
|
|
},
|
|
)
|
|
tt2_path = Path(out.cfg["TEMPLATE_POOL_BASE"]).joinpath("etc/fake.txt.tt2")
|
|
assert tt2_path.exists()
|
|
|
|
|
|
def test_config_cli(ngcpcfgcli):
|
|
"""test that templates are properly copied and configs defined in env"""
|
|
out = ngcpcfgcli(
|
|
"status", env={"NGCPCFG": "fixtures/ngcpcfg_carrier_instances.cfg"}
|
|
)
|
|
# NGCPCFG is always generated with env values and add as ${NGCPCTL_MAIN}/ngcpcfg.cfg
|
|
assert (
|
|
out.env["NGCPCFG"]
|
|
== Path(out.env["NGCPCTL_MAIN"]).joinpath("ngcpcfg.cfg").resolve()
|
|
)
|
|
tt2_path = Path(out.cfg["TEMPLATE_POOL_BASE"]).joinpath("etc/bad-syntax.txt.tt2")
|
|
assert tt2_path.exists()
|
|
assert (
|
|
Path(out.env["NETWORK_CONFIG"])
|
|
== Path("fixtures/repos/network_carrier_instances.yml").resolve()
|
|
)
|