38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import pytest
|
|
|
|
from omnigent.db.utils import normalize_database_url
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input_url, expected",
|
|
[
|
|
# PaaS providers emit postgres:// (shorthand form)
|
|
(
|
|
"postgres://user:pw@host:5432/db",
|
|
"postgresql+psycopg://user:pw@host:5432/db",
|
|
),
|
|
# Standard form without driver specifier
|
|
(
|
|
"postgresql://user:pw@host:5432/db",
|
|
"postgresql+psycopg://user:pw@host:5432/db",
|
|
),
|
|
# Already correct — pass through unchanged
|
|
(
|
|
"postgresql+psycopg://user:pw@host:5432/db",
|
|
"postgresql+psycopg://user:pw@host:5432/db",
|
|
),
|
|
# SQLite (local dev) — pass through unchanged
|
|
(
|
|
"sqlite:///./omnigent.db",
|
|
"sqlite:///./omnigent.db",
|
|
),
|
|
# Credentials with special characters survive the prefix rewrite
|
|
(
|
|
"postgres://user:p%40ssword@host/db",
|
|
"postgresql+psycopg://user:p%40ssword@host/db",
|
|
),
|
|
],
|
|
)
|
|
def test_normalize_database_url(input_url: str, expected: str) -> None:
|
|
assert normalize_database_url(input_url) == expected
|