Files
wehub-resource-sync 4b6817381b
CI (OpenClaw E2E) / openclaw test (push) Has been cancelled
CI / coverage-report (push) Has been cancelled
CI / test-kubernetes (push) Has been cancelled
CI / should-run-thorough (push) Has been cancelled
CI / test-thorough (cloudwatch-demo) (push) Has been cancelled
CI / test-thorough (flink-ecs) (push) Has been cancelled
CI / test-thorough (upstream-lambda) (push) Has been cancelled
CI / test-thorough (prefect-ecs-fargate) (push) Has been cancelled
Release / build-binaries (zip, opensre.exe, onefile, windows-latest, windows-x64) (push) Has been cancelled
Benchmark image — build + push to ECR (any adapter) / build + push (push) Has been cancelled
CI / quality (ubuntu-latest) (push) Has been cancelled
CI / test (tools-runtime) (push) Has been cancelled
CI / test (e2e-general) (push) Has been cancelled
CI / test (cli-runtime) (push) Has been cancelled
CI / test (e2e-provider-and-openclaw) (push) Has been cancelled
CI / test (integrations-and-misc) (push) Has been cancelled
Release / verify (push) Has been cancelled
Release / build-python-dist (push) Has been cancelled
Release / build-binaries (tar.gz, opensre, onedir, macos-15-intel, darwin-x64) (push) Has been cancelled
Release / build-binaries (tar.gz, opensre, onedir, macos-latest, darwin-arm64) (push) Has been cancelled
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04, linux-x64) (push) Has been cancelled
Release / publish-release (push) Has been cancelled
Release / publish-main-release (push) Has been cancelled
Interactive Shell Live (PR + post-merge) / turn-checks (no-LLM) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Interactive Shell Live (PR + post-merge) / turn-live shard ${{ matrix.shard_index }} (push) Has been cancelled
Release / prepare (push) Has been cancelled
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04-arm, linux-arm64) (push) Has been cancelled
Synthetic Deterministic Tests / Synthetic offline (deterministic) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:10:45 +08:00

57 lines
1.9 KiB
Python

from __future__ import annotations
import pytest
from integrations.grafana.config import GrafanaAccountConfig
def test_grafana_config_normalizes_instance_url() -> None:
"""Test that trailing slashes and whitespace are stripped from the instance URL."""
config = GrafanaAccountConfig(
account_id="test-acc",
instance_url=" https://grafana.example.com/ ",
read_token="secret",
)
assert config.instance_url == "https://grafana.example.com"
@pytest.mark.parametrize(
"url, token, expected",
[
("http://localhost:3000", "", True),
("http://127.0.0.1:3000", "", True),
("http://0.0.0.0:3000", "", True),
("http://localhost:3000", "has-token", False), # Token presence disables anon auth
("https://grafana.example.com", "", False), # External host requires token
("", "", False), # Empty URL
],
)
def test_grafana_config_uses_local_anonymous_auth(url: str, token: str, expected: bool) -> None:
"""Test the logic for determining if local anonymous auth is allowed."""
config = GrafanaAccountConfig(
account_id="test",
instance_url=url,
read_token=token,
)
assert config.uses_local_anonymous_auth is expected
@pytest.mark.parametrize(
"url, token, expected",
[
("https://grafana.com", "token", True), # Standard config
("http://localhost:3000", "", True), # Local anon config
("https://grafana.com", "", False), # Hosted without token
("", "token", False), # Missing URL
("", "", False), # Fully unconfigured
],
)
def test_grafana_config_is_configured(url: str, token: str, expected: bool) -> None:
"""Test that is_configured correctly identifies valid setups."""
config = GrafanaAccountConfig(
account_id="test",
instance_url=url,
read_token=token,
)
assert config.is_configured is expected