import Config

# Only in tests, remove the complexity from the password hashing algorithm
config :argon2_elixir,
  t_cost: 1,
  m_cost: 8

# Suppress log output during tests (tests that need logs use capture_log)
config :logger, :default_handler, false
config :logger, level: :error

# Initialize plugs at runtime for faster test compilation
config :phoenix, :plug_init_mode, :runtime

# Sort query params output of verified routes for robust url comparisons
config :phoenix,
  sort_verified_routes_query_params: true

# Enable helpful, but potentially expensive runtime checks
config :phoenix_live_view,
  enable_expensive_runtime_checks: true

# Disable swoosh api client as it is only required for production adapters
config :swoosh, :api_client, false

# Disable Oban job processing in tests (use testing mode)
config :towerops, Oban,
  repo: Towerops.Repo,
  testing: :manual,
  queues: false,
  plugins: false

# In test we don't send emails
config :towerops, Towerops.Mailer, adapter: Swoosh.Adapters.Test

# Configure your database
#
# The MIX_TEST_PARTITION environment variable can be used
# to provide built-in test partitioning in CI environment.
# Run `mix help test` for more information.
config :towerops, Towerops.Repo,
  username: "postgres",
  password: "postgres",
  hostname: "localhost",
  database: "towerops_test#{System.get_env("MIX_TEST_PARTITION")}",
  pool: Ecto.Adapters.SQL.Sandbox,
  pool_size: System.schedulers_online() * 2

# Configure Cloak encryption for testing
# Use a fixed test key (same as dev for simplicity)
config :towerops, Towerops.Vault,
  ciphers: [
    default: {
      Cloak.Ciphers.AES.GCM,
      # Test key - same as dev for consistency
      tag: "AES.GCM.V1", key: Base.decode64!("nQWmgQYhoCNXA3PAxwriKxLyPHAOWH9VgpLkBOXrowM=")
    }
  ]

# We don't run a server during test. If one is required,
# you can enable the server option below.
config :towerops, ToweropsWeb.Endpoint,
  http: [ip: {127, 0, 0, 1}, port: 4002],
  secret_key_base: "XDSSqVUtRXUjEfzxefIAaPIzBfonpNMOrCRyP1a0kjPzzyOpVNSRmMBVae/bwTqj",
  server: false

# Webhook secret for CI-triggered agent updates
config :towerops, :agent_webhook_secret, "test-webhook-secret"

# Set environment identifier for runtime checks
config :towerops, :env, :test

# Use mocks for testing
config :towerops,
  ping_module: Towerops.Monitoring.PingMock,
  poller_module: Towerops.Snmp.PollerMock,
  snmp_adapter: Towerops.Snmp.SnmpMock,
  sql_sandbox: true,
  # Disable rate limiting in tests to avoid blocking concurrent test requests
  rate_limiting_enabled: false
