# Test environment variables for ConfigPlugin E2E tests
DATABASE_URL=postgres://localhost:5432/testdb
API_KEY=test-api-key-12345
PORT=3021
DEBUG=true
APP_NAME=ConfigPluginE2E

# ─────────────────────────────────────────────────────────────────────────────
# Hierarchical config for fallback testing
# Note: camelCase keys become UPPERCASE without additional underscores
# e.g., "openaiKey" → "OPENAIKEY", not "OPENAI_KEY"
# ─────────────────────────────────────────────────────────────────────────────

# Global level (fallback for all)
OPENAIKEY=sk-global-key
ANTHROPICKEY=ak-global-key
MODELNAME=gpt-4o-global

# Entity type level (agents.*)
AGENTS_OPENAIKEY=sk-agents-default
AGENTS_MODELNAME=gpt-4o-agents-default

# Entity specific level (agents.research_agent.*)
AGENTS_RESEARCH_AGENT_OPENAIKEY=sk-research-agent-specific
AGENTS_RESEARCH_AGENT_MODELNAME=gpt-4o-research-specific

# Entity specific with dashes (agents.my_cool_agent.*)
AGENTS_MY_COOL_AGENT_OPENAIKEY=sk-my-cool-agent-specific

# Plugin level testing
PLUGINS_REDISURL=redis://plugins-default:6379
PLUGINS_MY_PLUGIN_REDISURL=redis://my-plugin-specific:6379

# Test case: only global exists (use snake_case for key)
GLOBAL_ONLY_KEY=global-only-value

# Test case: only entity-type exists
AGENTS_TYPE_ONLY_KEY=agents-type-only-value

# Test case: all three levels exist (use simple key name)
# Note: camelCase keys like "testKey" become "TESTKEY" (no underscores added)
TESTKEY=global-level
AGENTS_TESTKEY=agents-level
AGENTS_TEST_AGENT_TESTKEY=agent-specific-level

# ─────────────────────────────────────────────────────────────────────────────
# Sophisticated Test Scenarios
# ─────────────────────────────────────────────────────────────────────────────

# Edge Case: Entity names with special characters
# "agent--with---dashes" → "AGENT__WITH___DASHES"
AGENTS_AGENT__WITH___DASHES_SPECIALKEY=agent-multi-dash-value
# "agent.with.dots" → "AGENT_WITH_DOTS"
AGENTS_AGENT_WITH_DOTS_SPECIALKEY=agent-dots-value
# "agent with spaces" → "AGENT_WITH_SPACES"
AGENTS_AGENT_WITH_SPACES_SPECIALKEY=agent-spaces-value
# "MixedCaseAgent" → "MIXEDCASEAGENT"
AGENTS_MIXEDCASEAGENT_SPECIALKEY=agent-mixed-case-value
# "agent123" → "AGENT123"
AGENTS_AGENT123_SPECIALKEY=agent-numeric-value

# Edge Case: Empty and whitespace values
EMPTYVALUE=
WHITESPACEVALUE=
NEWLINEVALUE=line1

# Partial Fallback Chain Testing
# Only global level exists for this key
GLOBALONLY=global-only-value-isolated
# Only entity-type level exists (no global, no specific)
ADAPTERS_TYPEONLY=adapters-type-only-value
# Only entity-specific level exists (no global, no type)
PLUGINS_ISOLATED_PLUGIN_SPECIFICONLY=plugin-specific-only-value

# Precedence Testing - same key at all levels with different entity types
SHAREDKEY=global-shared
AGENTS_SHAREDKEY=agents-shared
PLUGINS_SHAREDKEY=plugins-shared
ADAPTERS_SHAREDKEY=adapters-shared
AGENTS_ALPHA_AGENT_SHAREDKEY=alpha-agent-shared
PLUGINS_ALPHA_PLUGIN_SHAREDKEY=alpha-plugin-shared
ADAPTERS_ALPHA_ADAPTER_SHAREDKEY=alpha-adapter-shared

# Complex nested path simulation (using compound keys)
AGENTS_DATA_PROCESSOR_BATCHSIZE=100
AGENTS_DATA_PROCESSOR_TIMEOUT=30000
AGENTS_DATA_PROCESSOR_RETRYCOUNT=3
AGENTS_BATCHSIZE=50
BATCHSIZE=25

# Boolean-like values at different levels
FEATUREFLAG=false
AGENTS_FEATUREFLAG=true
AGENTS_FEATURE_AGENT_FEATUREFLAG=enabled

# Numeric values at different levels
MAXCONNECTIONS=10
PLUGINS_MAXCONNECTIONS=20
PLUGINS_DB_PLUGIN_MAXCONNECTIONS=50

# URL-like values for realistic scenarios
WEBHOOKURL=https://global.example.com/webhook
AGENTS_WEBHOOKURL=https://agents.example.com/webhook
AGENTS_NOTIFIER_AGENT_WEBHOOKURL=https://notifier.example.com/webhook

# JSON-like string values
CONFIGJSON={"level":"global"}
AGENTS_CONFIGJSON={"level":"agents","extra":true}

# Very long value
LONGVALUE=this-is-a-very-long-configuration-value-that-might-be-used-for-testing-how-the-system-handles-larger-strings-in-environment-variables-which-could-be-certificates-or-other-lengthy-data

# Unicode value
UNICODEVALUE=Hello-世界-🌍

# Case sensitivity test (different cases should be different keys)
CASESENSITIVE=lowercase
CaseSensitive=mixedcase
