import pytest

def test_default_root_response(docker_compose, nginxproxy):
    r = nginxproxy.get("http://nginx-proxy.test/")
    assert r.status_code == 418

@pytest.mark.parametrize("stub,header", [
    ("nginx-proxy.test/web1", "bar"),
    ("foo.nginx-proxy.test", "f00"),
])
def test_custom_applies(docker_compose, nginxproxy, stub, header):
    r = nginxproxy.get(f"http://{stub}/port")
    assert r.status_code == 200
    assert "X-test" in r.headers
    assert header == r.headers["X-test"]

@pytest.mark.parametrize("stub,code", [
    ("nginx-proxy.test/foo", 418),
    ("nginx-proxy.test/web2", 200),
    ("nginx-proxy.test/web3", 200),
    ("bar.nginx-proxy.test", 503),
])
def test_custom_does_not_apply(docker_compose, nginxproxy, stub, code):
    r = nginxproxy.get(f"http://{stub}/port")
    assert r.status_code == code
    assert "X-test" not in r.headers

@pytest.mark.parametrize("stub,port", [
    ("nginx-proxy.test/web1", 81),
    ("nginx-proxy.test/web2", 82),
    ("nginx-proxy.test/web3", 83),
    ("nginx-proxy.test/alt", 83),
])
def test_alternate(docker_compose, nginxproxy, stub, port):
    r = nginxproxy.get(f"http://{stub}/port")
    assert r.status_code == 200
    assert r.text == f"answer from port {port}\n"