import Config ############################### ##### Domain ################## ############################### partition_suffix = if partition = System.get_env("MIX_TEST_PARTITION") do "_p#{partition}" else "" end config :domain, sql_sandbox: true config :domain, run_manual_migrations: true config :domain, Domain.Repo, database: "firezone_test#{partition_suffix}", pool: Ecto.Adapters.SQL.Sandbox, queue_target: 1000 # Oban has its own config validation that prevents overriding config in runtime.exs, # so we explicitly set the config in dev.exs, test.exs, and runtime.exs (for prod) only. config :domain, Oban, # Periodic jobs don't make sense in tests plugins: [ # Keep the last 90 days of completed, cancelled, and discarded jobs # {Oban.Plugins.Pruner, max_age: 60 * 60 * 24 * 90}, # Rescue jobs that may have failed due to transient errors like deploys # or network issues. It's not guaranteed that the job won't be executed # twice, so for now we disable it since all of our Oban jobs can be retried # without loss. # {Oban.Plugins.Lifeline, rescue_after: :timer.minutes(30)} # Periodic jobs # {Oban.Plugins.Cron, # crontab: [ # # Delete expired flows every minute # {"* * * * *", Domain.Flows.Jobs.DeleteExpiredFlows} # ]} ], queues: [default: 10], engine: Oban.Engines.Basic, repo: Domain.Repo config :domain, Domain.ChangeLogs.ReplicationConnection, replication_slot_name: "test_change_logs_slot", publication_name: "test_change_logs_publication", enabled: false, connection_opts: [ database: "firezone_test#{partition_suffix}" ] config :domain, Domain.Changes.ReplicationConnection, replication_slot_name: "test_changes_slot", publication_name: "test_changes_publication", enabled: false, connection_opts: [ database: "firezone_test#{partition_suffix}" ] config :domain, Domain.Billing.Stripe.APIClient, endpoint: "https://api.stripe.com", finch_transport_opts: [], retry_config: [ max_retries: 3, base_delay_ms: 100, max_delay_ms: 1000 ] config :domain, Domain.Telemetry, enabled: false config :domain, Domain.ConnectivityChecks, enabled: false config :domain, platform_adapter: Domain.GoogleCloudPlatform config :domain, Domain.GoogleCloudPlatform, service_account_email: "foo@iam.example.com" config :domain, Domain.ComponentVersions, fetch_from_url: false, versions: [ apple: "1.0.0", android: "1.0.0", gateway: "1.0.0", gui: "1.0.0", headless: "1.0.0" ] config :domain, Domain.Telemetry.Reporter.GoogleCloudMetrics, project_id: "fz-test" config :domain, web_external_url: "http://localhost:13100" # Prevent Oban from running jobs and plugins in tests config :domain, Oban, testing: :manual ############################### ##### Web ##################### ############################### config :web, Web.Endpoint, http: [port: 13_100], url: [port: 13_100], server: true config :web, Web.Plugs.SecureHeaders, csp_policy: [ "default-src 'self' 'nonce-${nonce}' https://api-js.mixpanel.com", "img-src 'self' data: https://www.gravatar.com https://track.hubspot.com", "style-src 'self' 'unsafe-inline'", "script-src 'self' 'unsafe-inline' https://cdn.mxpnl.com https://*.hs-analytics.net" ] config :web, :constant_execution_time, 1 ############################### ##### API ##################### ############################### config :api, API.Endpoint, http: [port: 13_101], url: [port: 13_101], server: true config :api, # shorten debounce timeout for tests relays_presence_debounce_timeout_ms: 100 ############################### ##### Third-party configs ##### ############################### config :domain, Domain.Mailer, adapter: Domain.Mailer.TestAdapter # Allow asserting on info logs and higher config :logger, level: :info config :argon2_elixir, t_cost: 1, m_cost: 8 config :wallaby, driver: Wallaby.Chrome, screenshot_on_failure: true, # TODO: Contribute to Wallaby to make this configurable on the per-process level, # along with buffer to write logs only on process failure js_logger: false, hackney_options: [timeout: 10_000, recv_timeout: 10_000] ex_unit_config = [ formatters: [JUnitFormatter, ExUnit.CLIFormatter], capture_log: true, exclude: [:acceptance] ] ++ case System.get_env("CI_ASSERT_RECEIVE_TIMEOUT_MS") do nil -> [] timeout -> [assert_receive_timeout: String.to_integer(timeout)] end config :ex_unit, ex_unit_config # Initialize plugs at runtime for faster development compilation config :phoenix, :plug_init_mode, :runtime config :workos, WorkOS.Client, api_key: "sk_example_123456789", client_id: "client_123456789" config :sentry, environment_name: :test