import pytest


@pytest.mark.parametrize("host,expected_port", [
    ("f00.nginx-proxy.test", 81),
    ("bar.nginx-proxy.test", 81),
    ("test.nginx-proxy.f00", 82),
    ("test.nginx-proxy.bar", 82),
    ("web3.123.nginx-proxy.regexp", 83),
    ("web3.ABC.nginx-proxy.regexp", 83),
    ("web3.123.ABC.nginx-proxy.regexp", 83),
    ("web3.123-ABC.nginx-proxy.regexp", 83),
    ("web3.whatever.nginx-proxy.regexp-to-infinity-and-beyond", 83),
    ("web4.123.nginx-proxy.regexp", 84),
    ("web4.ABC.nginx-proxy.regexp", 84),
    ("web4.123.ABC.nginx-proxy.regexp", 84),
    ("web4.123-ABC.nginx-proxy.regexp", 84),
    ("web4.whatever.nginx-proxy.regexp", 84),
])
def test_wildcard_prefix(docker_compose, nginxproxy, host, expected_port):
    r = nginxproxy.get(f"http://{host}/port")
    assert r.status_code == 200
    assert r.text == f"answer from port {expected_port}\n"


@pytest.mark.parametrize("host", [
    "unexpected.nginx-proxy.tld",
    "web4.whatever.nginx-proxy.regexp-to-infinity-and-beyond"
])
def test_non_matching_host_is_503(docker_compose, nginxproxy, host):
    r = nginxproxy.get(f"http://{host}/port")
    assert r.status_code == 503, r.text