"""Tests for V1 auth and sharing config in OgMemConfig."""
from __future__ import annotations
from providers.unified_config import OgMemConfig
def test_load_reads_v1_auth_and_sharing_from_env(monkeypatch):
monkeypatch.setenv("OG_ROLE_CONTROL_ENABLED", "true")
monkeypatch.setenv("OG_ROOT_API_KEY", "root-key")
monkeypatch.setenv("OG_ADMIN_API_KEYS", "admin-a,admin-b")
monkeypatch.setenv("OG_AGENT_SHARED_MODE", "user")
monkeypatch.setenv("OG_AGENT_SHARED_LIST", "agent-1,agent-2")
monkeypatch.setenv("OG_HTTP_IP_ALLOWLIST", "127.0.0.1,10.0.0.0/8")
monkeypatch.setenv("OG_HTTP_IP_ALLOWLIST_TRUST_PROXY", "true")
cfg = OgMemConfig.load("/tmp/non-existent-ogmem.yaml")
assert cfg.role_control_enabled is True
assert cfg.root_api_key == "root-key"
assert cfg.admin_api_keys == ["admin-a", "admin-b"]
assert cfg.agent_shared_mode == "user"
assert cfg.agent_shared_list == ["agent-1", "agent-2"]
assert cfg.http_ip_allowlist == ["127.0.0.1", "10.0.0.0/8"]
assert cfg.http_ip_allowlist_trust_proxy is True
def test_load_uses_safe_defaults_for_v1_auth_and_sharing():
cfg = OgMemConfig.load("/tmp/non-existent-ogmem.yaml")
assert cfg.role_control_enabled is False
assert cfg.root_api_key is None
assert cfg.admin_api_keys == []
assert cfg.agent_shared_mode == "off"
assert cfg.agent_shared_list == []
assert cfg.http_ip_allowlist == []
assert cfg.http_ip_allowlist_trust_proxy is False
def test_compact_prepare_token_ttl_defaults_to_300():
cfg = OgMemConfig.load("/tmp/non-existent-ogmem.yaml")
assert cfg.compact_prepare_token_ttl == 300
def test_compact_prepare_token_ttl_reads_yaml_and_env(monkeypatch):
from providers import unified_config
monkeypatch.setenv("OGMEM_COMPACT_PREPARE_TOKEN_TTL", "123")
monkeypatch.setattr(
unified_config,
"_load_yaml",
lambda _path: {"memory": {"compact_prepare_token_ttl": 456}},
)
cfg = OgMemConfig.load("unused.yaml")
assert cfg.compact_prepare_token_ttl == 456
monkeypatch.setattr(unified_config, "_load_yaml", lambda _path: {"memory": {}})
cfg = OgMemConfig.load("unused.yaml")
assert cfg.compact_prepare_token_ttl == 123
def test_rolling_compress_enabled_defaults_to_true():
cfg = OgMemConfig.load("/tmp/non-existent-ogmem.yaml")
assert cfg.rolling_compress_enabled is True
def test_rolling_compress_enabled_can_be_disabled_by_env(monkeypatch):
monkeypatch.setenv("OGMEM_ROLLING_COMPRESS_ENABLED", "false")
cfg = OgMemConfig.load("/tmp/non-existent-ogmem.yaml")
assert cfg.rolling_compress_enabled is False
def test_rolling_compress_enabled_yaml_overrides_env(monkeypatch):
from providers import unified_config
monkeypatch.setenv("OGMEM_ROLLING_COMPRESS_ENABLED", "false")
monkeypatch.setattr(
unified_config,
"_load_yaml",
lambda _path: {"memory": {"rolling_compress_enabled": True}},
)
cfg = OgMemConfig.load("unused.yaml")
assert cfg.rolling_compress_enabled is True
def test_archive_merge_prd_defaults():
cfg = OgMemConfig()
assert cfg.archive_max_count == 10
assert cfg.archive_merge_threshold == 10
assert not hasattr(cfg, "archive_auto_merge_enabled")
assert not hasattr(cfg, "archive_merge_max_messages")
def test_archive_merge_reads_prd_yaml_and_env(monkeypatch):
monkeypatch.setenv("OGMEM_ARCHIVE_MAX_COUNT", "7")
monkeypatch.setenv("OGMEM_ARCHIVE_MERGE_THRESHOLD", "6")
cfg = OgMemConfig.load(config_path="missing.yaml")
assert cfg.archive_max_count == 7
assert cfg.archive_merge_threshold == 6
def test_rolling_fallback_defaults_disabled_and_env_override(monkeypatch):
assert OgMemConfig().rolling_compress_fallback_enabled is False
monkeypatch.setenv("OGMEM_ROLLING_COMPRESS_FALLBACK_ENABLED", "true")
cfg = OgMemConfig.load(config_path="missing.yaml")
assert cfg.rolling_compress_fallback_enabled is True
def test_compact_gap_completion_defaults():
cfg = OgMemConfig()
assert cfg.prefetch_enabled is False
assert cfg.prefetch_top_k == 5
assert cfg.session_state_bridge_enabled is True
assert cfg.session_state_sync_interval_turns == 1
assert cfg.topic_detection_enabled is False
assert cfg.compression_quality_enabled is False
assert cfg.compression_quality_persist_metadata is False
def test_compact_gap_completion_reads_yaml_and_env(monkeypatch):
from providers import unified_config as uc
monkeypatch.setattr(
uc,
"_load_yaml",
lambda _path: {
"memory": {
"prefetch_enabled": True,
"prefetch_top_k": 9,
"session_state_bridge_enabled": False,
"session_state_sync_interval_turns": 4,
"topic_detection_enabled": True,
"compression_quality_enabled": True,
"compression_quality_persist_metadata": True,
}
},
)
cfg = OgMemConfig.load("ignored.yaml")
assert cfg.prefetch_enabled is True
assert cfg.prefetch_top_k == 9
assert cfg.session_state_bridge_enabled is False
assert cfg.session_state_sync_interval_turns == 4
assert cfg.topic_detection_enabled is True
assert cfg.compression_quality_enabled is True
assert cfg.compression_quality_persist_metadata is True
monkeypatch.setenv("OGMEM_PREFETCH_ENABLED", "false")
monkeypatch.setenv("OGMEM_PREFETCH_TOP_K", "3")
monkeypatch.setenv("OGMEM_SESSION_STATE_BRIDGE_ENABLED", "true")
monkeypatch.setenv("OGMEM_SESSION_STATE_SYNC_INTERVAL_TURNS", "2")
monkeypatch.setenv("OGMEM_TOPIC_DETECTION_ENABLED", "false")
monkeypatch.setenv("OGMEM_COMPRESSION_QUALITY_ENABLED", "false")
monkeypatch.setenv("OGMEM_COMPRESSION_QUALITY_PERSIST_METADATA", "false")
monkeypatch.setattr(uc, "_load_yaml", lambda _path: {"memory": {}})
cfg = OgMemConfig.load("ignored.yaml")
assert cfg.prefetch_enabled is False
assert cfg.prefetch_top_k == 3
assert cfg.session_state_bridge_enabled is True
assert cfg.session_state_sync_interval_turns == 2
assert cfg.topic_detection_enabled is False
assert cfg.compression_quality_enabled is False
assert cfg.compression_quality_persist_metadata is False