blob: 64c6bef144dd9cf2204215d801bcbbd97e1d2fcf [file] [log] [blame]
import logging
import os
import pickle
import platform
import pytest
import localpaths # type: ignore
from . import serve
from .serve import ConfigBuilder
logger = logging.getLogger()
@pytest.mark.skipif(platform.uname()[0] == "Windows",
reason="Expected contents are platform-dependent")
def test_make_hosts_file_nix():
with ConfigBuilder(logger,
ports={"http": [8000]},
browser_host="foo.bar",
alternate_hosts={"alt": "foo2.bar"},
subdomains={"a", "b"},
not_subdomains={"x, y"}) as c:
hosts = serve.make_hosts_file(c, "192.168.42.42")
lines = hosts.split("\n")
assert set(lines) == {"",
"192.168.42.42\tfoo.bar",
"192.168.42.42\tfoo2.bar",
"192.168.42.42\ta.foo.bar",
"192.168.42.42\ta.foo2.bar",
"192.168.42.42\tb.foo.bar",
"192.168.42.42\tb.foo2.bar"}
assert lines[-1] == ""
@pytest.mark.skipif(platform.uname()[0] != "Windows",
reason="Expected contents are platform-dependent")
def test_make_hosts_file_windows():
with ConfigBuilder(logger,
ports={"http": [8000]},
browser_host="foo.bar",
alternate_hosts={"alt": "foo2.bar"},
subdomains={"a", "b"},
not_subdomains={"x", "y"}) as c:
hosts = serve.make_hosts_file(c, "192.168.42.42")
lines = hosts.split("\n")
assert set(lines) == {"",
"0.0.0.0\tx.foo.bar",
"0.0.0.0\tx.foo2.bar",
"0.0.0.0\ty.foo.bar",
"0.0.0.0\ty.foo2.bar",
"192.168.42.42\tfoo.bar",
"192.168.42.42\tfoo2.bar",
"192.168.42.42\ta.foo.bar",
"192.168.42.42\ta.foo2.bar",
"192.168.42.42\tb.foo.bar",
"192.168.42.42\tb.foo2.bar"}
assert lines[-1] == ""
def test_ws_doc_root_default():
with ConfigBuilder(logger) as c:
assert c.doc_root == localpaths.repo_root
assert c.ws_doc_root == os.path.join(localpaths.repo_root, "websockets", "handlers")
assert c.paths["ws_doc_root"] == c.ws_doc_root
def test_init_ws_doc_root():
with ConfigBuilder(logger, ws_doc_root="/") as c:
assert c.doc_root == localpaths.repo_root # check this hasn't changed
assert c.ws_doc_root == "/"
assert c.paths["ws_doc_root"] == c.ws_doc_root
def test_set_ws_doc_root():
cb = ConfigBuilder(logger)
cb.ws_doc_root = "/"
with cb as c:
assert c.doc_root == localpaths.repo_root # check this hasn't changed
assert c.ws_doc_root == "/"
assert c.paths["ws_doc_root"] == c.ws_doc_root
def test_pickle():
# Ensure that the config object can be pickled
with ConfigBuilder(logger) as c:
pickle.dumps(c)
def test_alternate_host_unspecified():
ConfigBuilder(logger, browser_host="web-platform.test")
@pytest.mark.parametrize("primary, alternate", [
("web-platform.test", "web-platform.test"),
("a.web-platform.test", "web-platform.test"),
("web-platform.test", "a.web-platform.test"),
("a.web-platform.test", "a.web-platform.test"),
])
def test_alternate_host_invalid(primary, alternate):
with pytest.raises(ValueError):
ConfigBuilder(logger, browser_host=primary, alternate_hosts={"alt": alternate})
@pytest.mark.parametrize("primary, alternate", [
("web-platform.test", "not-web-platform.test"),
("a.web-platform.test", "b.web-platform.test"),
("web-platform-tests.dev", "web-platform-tests.live"),
])
def test_alternate_host_valid(primary, alternate):
ConfigBuilder(logger, browser_host=primary, alternate_hosts={"alt": alternate})