syncstorage-rs/tools/spanner/test_utils.py
Taddes af1c5fb68a
Some checks failed
Glean probe-scraper / glean-probe-scraper (push) Has been cancelled
Main Workflow - Lint, Build, Test / python-env (push) Has been cancelled
Main Workflow - Lint, Build, Test / rust-env (push) Has been cancelled
Main Workflow - Lint, Build, Test / python-checks (push) Has been cancelled
Main Workflow - Lint, Build, Test / rust-checks (push) Has been cancelled
Main Workflow - Lint, Build, Test / clippy (mysql) (push) Has been cancelled
Main Workflow - Lint, Build, Test / clippy (postgres) (push) Has been cancelled
Main Workflow - Lint, Build, Test / clippy (spanner) (push) Has been cancelled
Main Workflow - Lint, Build, Test / build-and-unit-test-postgres (push) Has been cancelled
Main Workflow - Lint, Build, Test / build-postgres-image (push) Has been cancelled
Main Workflow - Lint, Build, Test / postgres-e2e-tests (push) Has been cancelled
Main Workflow - Lint, Build, Test / build-and-unit-test-mysql (push) Has been cancelled
Main Workflow - Lint, Build, Test / build-mysql-image (push) Has been cancelled
Main Workflow - Lint, Build, Test / mysql-e2e-tests (push) Has been cancelled
Main Workflow - Lint, Build, Test / build-and-unit-test-spanner (push) Has been cancelled
Main Workflow - Lint, Build, Test / build-spanner-image (push) Has been cancelled
Main Workflow - Lint, Build, Test / spanner-e2e-tests (push) Has been cancelled
Build, Tag and Push Container Images to GAR / check (push) Has been cancelled
Build, Tag and Push Container Images to GAR / build-and-push-syncstorage-rs (push) Has been cancelled
Build, Tag and Push Container Images to GAR / build-and-push-syncserver-postgres (push) Has been cancelled
Build, Tag and Push Container Images to GAR / build-and-push-syncstorage-rs-spanner-python-utils (push) Has been cancelled
Build, Tag and Push Container Images to GAR / build-and-push-syncserver-postgres-python-utils (push) Has been cancelled
Build, Tag and Push Container Images to GAR / build-and-push-syncserver-mysql (push) Has been cancelled
Publish Sync docs to pages / build-mdbook (push) Has been cancelled
Publish Sync docs to pages / build-openapi (push) Has been cancelled
Publish Sync docs to pages / combine-and-prepare (push) Has been cancelled
Publish Sync docs to pages / deploy (push) Has been cancelled
feat: add python utils and integrate into workflow (#2176)
feat: add python utils and integrate into workflow
2026-04-01 16:02:34 -04:00

55 lines
1.9 KiB
Python

"""Tests for the Spanner utilities module."""
import pytest
from tools.spanner.utils import ids_from_env
@pytest.fixture(autouse=True)
def reset_env(monkeypatch: pytest.MonkeyPatch) -> None:
"""Reset Spanner-related environment variables before each test."""
for var in [
"SYNC_SYNCSTORAGE__DATABASE_URL",
"INSTANCE_ID",
"DATABASE_ID",
"GOOGLE_CLOUD_PROJECT",
]:
monkeypatch.delenv(var, raising=False)
def test_ids_from_env_parses_url(monkeypatch: pytest.MonkeyPatch) -> None:
"""Test with passed in DSN"""
monkeypatch.setenv(
"SYNC_SYNCSTORAGE__DATABASE_URL",
"spanner://projects/proj/instances/inst/databases/db",
)
dsn = "SYNC_SYNCSTORAGE__DATABASE_URL"
instance_id, database_id, project_id = ids_from_env(dsn)
assert project_id == "proj"
assert instance_id == "inst"
assert database_id == "db"
def test_ids_from_env_with_missing_url(monkeypatch: pytest.MonkeyPatch) -> None:
"""Test ensures that default env vars set id values."""
monkeypatch.setenv("INSTANCE_ID", "foo")
monkeypatch.setenv("DATABASE_ID", "bar")
monkeypatch.setenv("GOOGLE_CLOUD_PROJECT", "baz")
instance_id, database_id, project_id = ids_from_env()
assert instance_id == "foo"
assert database_id == "bar"
assert project_id == "baz"
def test_from_env_with_invalid_url(monkeypatch: pytest.MonkeyPatch) -> None:
"""A non-spanner URL scheme falls through to the env-var fallbacks."""
monkeypatch.setenv("SYNC_SYNCSTORAGE__DATABASE_URL", "notaspanner://foo")
monkeypatch.setenv("INSTANCE_ID", "default")
monkeypatch.setenv("DATABASE_ID", "default-db")
monkeypatch.setenv("GOOGLE_CLOUD_PROJECT", "default-proj")
instance_id, database_id, project_id = ids_from_env()
assert instance_id == "default"
assert database_id == "default-db"
assert project_id == "default-proj"