import os import pytest from ja4_common.settings import ClickHouseSettings def test_default_settings(): s = ClickHouseSettings() assert s.CLICKHOUSE_HOST == "clickhouse" assert s.CLICKHOUSE_PORT == 8123 assert s.CLICKHOUSE_DB == "mabase_prod" assert s.CLICKHOUSE_USER == "admin" assert s.CLICKHOUSE_PASSWORD == "" def test_settings_from_env(monkeypatch): monkeypatch.setenv("CLICKHOUSE_HOST", "myhost") monkeypatch.setenv("CLICKHOUSE_PORT", "9000") monkeypatch.setenv("CLICKHOUSE_DB", "testdb") s = ClickHouseSettings() assert s.CLICKHOUSE_HOST == "myhost" assert s.CLICKHOUSE_PORT == 9000 assert s.CLICKHOUSE_DB == "testdb" def test_settings_password_default_empty(): s = ClickHouseSettings() assert s.CLICKHOUSE_PASSWORD == "" def test_settings_user_default(): s = ClickHouseSettings() assert s.CLICKHOUSE_USER == "admin" def test_settings_password_from_env(monkeypatch): monkeypatch.setenv("CLICKHOUSE_PASSWORD", "secret") s = ClickHouseSettings() assert s.CLICKHOUSE_PASSWORD == "secret" def test_settings_port_is_int(): s = ClickHouseSettings() assert isinstance(s.CLICKHOUSE_PORT, int) def test_settings_port_from_env_string(monkeypatch): """Port provided as string env var is coerced to int.""" monkeypatch.setenv("CLICKHOUSE_PORT", "9100") s = ClickHouseSettings() assert s.CLICKHOUSE_PORT == 9100 def test_settings_all_fields_overridable(monkeypatch): monkeypatch.setenv("CLICKHOUSE_HOST", "h1") monkeypatch.setenv("CLICKHOUSE_PORT", "1234") monkeypatch.setenv("CLICKHOUSE_DB", "mydb") monkeypatch.setenv("CLICKHOUSE_USER", "myuser") monkeypatch.setenv("CLICKHOUSE_PASSWORD", "mypass") s = ClickHouseSettings() assert s.CLICKHOUSE_HOST == "h1" assert s.CLICKHOUSE_PORT == 1234 assert s.CLICKHOUSE_DB == "mydb" assert s.CLICKHOUSE_USER == "myuser" assert s.CLICKHOUSE_PASSWORD == "mypass"