Isolate the remote registry in tests
Endpoint resolution consults remembered remotes, so tests that assert the bare-domain :443 default failed on any machine with an explicit-port remote remembered for the same host, while passing in CI. That made a real behavior difference look like a local-only flake. Isolate the registry for the whole suite instead of patching the two affected tests, since any test touching endpoint resolution has the same hidden dependency. Tests that need remembered entries still override the path. Also replace the hardcoded personal remote host with a documentation domain.
This commit is contained in:
@@ -12,6 +12,18 @@ from browser_cli.remote import pool as _remote_pool
|
|||||||
|
|
||||||
TEST_BROWSER_PROFILE = "testing"
|
TEST_BROWSER_PROFILE = "testing"
|
||||||
|
|
||||||
|
@pytest.fixture(autouse=True)
|
||||||
|
def _isolate_remote_registry(monkeypatch, tmp_path):
|
||||||
|
"""Point the remembered-remote registry at an empty throwaway file.
|
||||||
|
|
||||||
|
Endpoint resolution consults remembered remotes, so without this a developer
|
||||||
|
who has remembered ``host:8765`` sees different results than CI for the same
|
||||||
|
code. Tests that need remembered entries still monkeypatch the path themselves.
|
||||||
|
"""
|
||||||
|
monkeypatch.setattr(
|
||||||
|
"browser_cli.remote.registry.REMOTE_REGISTRY_PATH", tmp_path / "empty-remotes.json"
|
||||||
|
)
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
def _clear_remote_pool():
|
def _clear_remote_pool():
|
||||||
"""Close any pooled remote connections between tests so a connection opened
|
"""Close any pooled remote connections between tests so a connection opened
|
||||||
|
|||||||
+15
-15
@@ -356,7 +356,7 @@ def test_active_browser_targets_includes_remote_targets(monkeypatch, tmp_path):
|
|||||||
assert targets[0].display_group == "browser-host.example"
|
assert targets[0].display_group == "browser-host.example"
|
||||||
|
|
||||||
def test_looks_like_domain():
|
def test_looks_like_domain():
|
||||||
assert _looks_like_domain("browsercli.yiprawr.dev") is True
|
assert _looks_like_domain("browser-host.example") is True
|
||||||
assert _looks_like_domain("browser-host.example") is True
|
assert _looks_like_domain("browser-host.example") is True
|
||||||
assert _looks_like_domain("sub.domain.org") is True
|
assert _looks_like_domain("sub.domain.org") is True
|
||||||
assert _looks_like_domain("localhost") is False
|
assert _looks_like_domain("localhost") is False
|
||||||
@@ -365,17 +365,17 @@ def test_looks_like_domain():
|
|||||||
assert _looks_like_domain("host") is False # no dot
|
assert _looks_like_domain("host") is False # no dot
|
||||||
|
|
||||||
def test_normalize_endpoint_strips_443_for_domains():
|
def test_normalize_endpoint_strips_443_for_domains():
|
||||||
assert _normalize_endpoint("browsercli.yiprawr.dev:443") == "browsercli.yiprawr.dev"
|
assert _normalize_endpoint("browser-host.example:443") == "browser-host.example"
|
||||||
assert _normalize_endpoint("browsercli.yiprawr.dev") == "browsercli.yiprawr.dev"
|
assert _normalize_endpoint("browser-host.example") == "browser-host.example"
|
||||||
assert _normalize_endpoint("203.0.113.1:443") == "203.0.113.1:443" # IP: keep port
|
assert _normalize_endpoint("203.0.113.1:443") == "203.0.113.1:443" # IP: keep port
|
||||||
assert _normalize_endpoint("localhost:443") == "localhost:443" # localhost: keep port
|
assert _normalize_endpoint("localhost:443") == "localhost:443" # localhost: keep port
|
||||||
assert _normalize_endpoint("host:8765") == "host:8765" # non-443 port: unchanged
|
assert _normalize_endpoint("host:8765") == "host:8765" # non-443 port: unchanged
|
||||||
assert _normalize_endpoint("browsercli.yiprawr.dev:8765") == "browsercli.yiprawr.dev:8765"
|
assert _normalize_endpoint("browser-host.example:8765") == "browser-host.example:8765"
|
||||||
|
|
||||||
def test_resolve_connect_endpoint_adds_443_for_domain():
|
def test_resolve_connect_endpoint_adds_443_for_domain():
|
||||||
assert _resolve_connect_endpoint("browsercli.yiprawr.dev") == "browsercli.yiprawr.dev:443"
|
assert _resolve_connect_endpoint("browser-host.example") == "browser-host.example:443"
|
||||||
assert _resolve_connect_endpoint("browsercli.yiprawr.dev:443") == "browsercli.yiprawr.dev:443"
|
assert _resolve_connect_endpoint("browser-host.example:443") == "browser-host.example:443"
|
||||||
assert _resolve_connect_endpoint("browsercli.yiprawr.dev:8765") == "browsercli.yiprawr.dev:8765"
|
assert _resolve_connect_endpoint("browser-host.example:8765") == "browser-host.example:8765"
|
||||||
assert _resolve_connect_endpoint("host:8765") == "host:8765"
|
assert _resolve_connect_endpoint("host:8765") == "host:8765"
|
||||||
|
|
||||||
def test_resolve_connect_endpoint_raises_for_bare_non_domain():
|
def test_resolve_connect_endpoint_raises_for_bare_non_domain():
|
||||||
@@ -399,9 +399,9 @@ def test_send_command_normalizes_domain_port_443(monkeypatch):
|
|||||||
|
|
||||||
monkeypatch.setattr("browser_cli.client.core._send_remote", fake_send_remote)
|
monkeypatch.setattr("browser_cli.client.core._send_remote", fake_send_remote)
|
||||||
|
|
||||||
result = send_command("tabs.list", remote="browsercli.yiprawr.dev:443")
|
result = send_command("tabs.list", remote="browser-host.example:443")
|
||||||
assert result == "ok"
|
assert result == "ok"
|
||||||
assert sent_to["endpoint"] == "browsercli.yiprawr.dev" # stored/routed without port
|
assert sent_to["endpoint"] == "browser-host.example" # stored/routed without port
|
||||||
|
|
||||||
def test_send_command_domain_without_port_defaults_to_443(monkeypatch):
|
def test_send_command_domain_without_port_defaults_to_443(monkeypatch):
|
||||||
"""--remote domain (no port) is treated as :443."""
|
"""--remote domain (no port) is treated as :443."""
|
||||||
@@ -420,14 +420,14 @@ def test_send_command_domain_without_port_defaults_to_443(monkeypatch):
|
|||||||
|
|
||||||
monkeypatch.setattr("browser_cli.client.core._send_remote", fake_send_remote)
|
monkeypatch.setattr("browser_cli.client.core._send_remote", fake_send_remote)
|
||||||
|
|
||||||
result = send_command("tabs.list", remote="browsercli.yiprawr.dev")
|
result = send_command("tabs.list", remote="browser-host.example")
|
||||||
assert result == "ok"
|
assert result == "ok"
|
||||||
assert sent_to["endpoint"] == "browsercli.yiprawr.dev"
|
assert sent_to["endpoint"] == "browser-host.example"
|
||||||
|
|
||||||
def test_domain_display_name_omits_port(monkeypatch, tmp_path):
|
def test_domain_display_name_omits_port(monkeypatch, tmp_path):
|
||||||
"""Domain endpoints stored without :443 display as 'domain:profile', not 'domain:443:profile'."""
|
"""Domain endpoints stored without :443 display as 'domain:profile', not 'domain:443:profile'."""
|
||||||
remotes_path = tmp_path / "remotes.json"
|
remotes_path = tmp_path / "remotes.json"
|
||||||
endpoint = "browsercli.yiprawr.dev"
|
endpoint = "browser-host.example"
|
||||||
remotes_path.write_text(json.dumps({endpoint: {}}), encoding="utf-8")
|
remotes_path.write_text(json.dumps({endpoint: {}}), encoding="utf-8")
|
||||||
monkeypatch.setattr("browser_cli.client.targets.REGISTRY_PATH", tmp_path / "missing-registry.json")
|
monkeypatch.setattr("browser_cli.client.targets.REGISTRY_PATH", tmp_path / "missing-registry.json")
|
||||||
monkeypatch.setattr("browser_cli.remote.registry.REMOTE_REGISTRY_PATH", remotes_path)
|
monkeypatch.setattr("browser_cli.remote.registry.REMOTE_REGISTRY_PATH", remotes_path)
|
||||||
@@ -440,13 +440,13 @@ def test_domain_display_name_omits_port(monkeypatch, tmp_path):
|
|||||||
targets = active_browser_targets()
|
targets = active_browser_targets()
|
||||||
|
|
||||||
assert len(targets) == 1
|
assert len(targets) == 1
|
||||||
assert targets[0].display_name == "browsercli.yiprawr.dev:automatisation"
|
assert targets[0].display_name == "browser-host.example:automatisation"
|
||||||
assert targets[0].remote == endpoint
|
assert targets[0].remote == endpoint
|
||||||
|
|
||||||
def test_domain_display_name_backward_compat_with_stored_443(monkeypatch, tmp_path):
|
def test_domain_display_name_backward_compat_with_stored_443(monkeypatch, tmp_path):
|
||||||
"""Old remotes.json with :443 still displays cleanly without the port."""
|
"""Old remotes.json with :443 still displays cleanly without the port."""
|
||||||
remotes_path = tmp_path / "remotes.json"
|
remotes_path = tmp_path / "remotes.json"
|
||||||
endpoint = "browsercli.yiprawr.dev:443" # old format
|
endpoint = "browser-host.example:443" # old format
|
||||||
remotes_path.write_text(json.dumps({endpoint: {}}), encoding="utf-8")
|
remotes_path.write_text(json.dumps({endpoint: {}}), encoding="utf-8")
|
||||||
monkeypatch.setattr("browser_cli.client.targets.REGISTRY_PATH", tmp_path / "missing-registry.json")
|
monkeypatch.setattr("browser_cli.client.targets.REGISTRY_PATH", tmp_path / "missing-registry.json")
|
||||||
monkeypatch.setattr("browser_cli.remote.registry.REMOTE_REGISTRY_PATH", remotes_path)
|
monkeypatch.setattr("browser_cli.remote.registry.REMOTE_REGISTRY_PATH", remotes_path)
|
||||||
@@ -459,7 +459,7 @@ def test_domain_display_name_backward_compat_with_stored_443(monkeypatch, tmp_pa
|
|||||||
targets = active_browser_targets()
|
targets = active_browser_targets()
|
||||||
|
|
||||||
assert len(targets) == 1
|
assert len(targets) == 1
|
||||||
assert targets[0].display_name == "browsercli.yiprawr.dev:automatisation"
|
assert targets[0].display_name == "browser-host.example:automatisation"
|
||||||
|
|
||||||
def test_send_command_explicit_key_does_not_persist_remote_key(monkeypatch, tmp_path):
|
def test_send_command_explicit_key_does_not_persist_remote_key(monkeypatch, tmp_path):
|
||||||
"""--key is a one-shot override; use `browser-cli remote trust` to remember it."""
|
"""--key is a one-shot override; use `browser-cli remote trust` to remember it."""
|
||||||
|
|||||||
Reference in New Issue
Block a user