import Config alias Ecto.Adapters.SQL.Sandbox alias Microwaveprop.Qrz.Client # Only in tests, remove the complexity from the password hashing algorithm config :bcrypt_elixir, :log_rounds, 1 # Print only warnings and errors during test config :logger, level: :warning config :microwaveprop, Client, username: "testuser", password: "testpass", agent: "microwaveprop-test/1.0", plug: {Req.Test, Client}, retry: false # Read-only secondary repo for aprs.me. Configured here so the app boots # under MIX_ENV=test, but uses the SQL.Sandbox in :manual mode so tests # that don't touch APRS data don't have to check the DB out. Tests that # do query the AprsRepo must call `Ecto.Adapters.SQL.Sandbox.checkout/1` # explicitly. config :microwaveprop, Microwaveprop.AprsRepo, username: "postgres", password: "postgres", hostname: "localhost", database: "aprsme_test#{System.get_env("MIX_TEST_PARTITION")}", pool: Sandbox, pool_size: 2, ownership_timeout: 60_000, timeout: 60_000 config :microwaveprop, Microwaveprop.Geocoder, plug: {Req.Test, Microwaveprop.Geocoder}, retry: false # In test we don't send emails config :microwaveprop, Microwaveprop.Mailer, adapter: Swoosh.Adapters.Test config :microwaveprop, Microwaveprop.Qrz, cache_ttl_hours: 0 # 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 :microwaveprop, Microwaveprop.Repo, username: "postgres", password: "postgres", hostname: "localhost", database: "microwaveprop_test#{System.get_env("MIX_TEST_PARTITION")}", pool: Sandbox, pool_size: System.schedulers_online() * 2, ownership_timeout: 60_000, timeout: 60_000 # We don't run a server during test. If one is required, # you can enable the server option below. config :microwaveprop, MicrowavepropWeb.Endpoint, http: [ip: {127, 0, 0, 1}, port: 4002], secret_key_base: "f7KbnwUezGrPtrv/67l6Wi+W9/+wOqwFG5QJ/ZLs24cVM1gg2lBswZwrKuyWsBAZ", server: false # Run Oban jobs inline during tests config :microwaveprop, Oban, testing: :inline # Skip the registration-time QRZ lookup in tests — it needs a Mox stub # that isn't set up across the test suite, and the worker is exercised # directly in its own dedicated test. config :microwaveprop, :enable_home_qth_lookup, false # MetricsLogSuppressionTest hits GET /metrics and asserts no "Sent 200" # log line; that path needs PromEx alive to return a 200. We can't # blanket-disable PromEx. Instead, toggle off the Oban-queue poller # below — its 5 s telemetry measurement issues an Ecto query from a # process that doesn't hold a sandbox connection and crashes with # DBConnection.OwnershipError, spamming the test log. config :microwaveprop, :prom_ex_include_oban_plugin, false # Score files land under a per-run tmp directory so replace_scores tests # don't write into a shared location (and we can assert on the file # contents from inside tests). config :microwaveprop, :propagation_scores_dir, Path.join(System.tmp_dir!(), "microwaveprop_test_scores_#{System.unique_integer([:positive])}") # Skip the Overpass road-proximity HTTP call in tests — the rover live # test exercises the full Calculate pipeline and we don't want it # reaching out to overpass-api.de. config :microwaveprop, :rover_road_proximity_enabled, false config :microwaveprop, cache_contact_count: false config :microwaveprop, cache_contact_map: false config :microwaveprop, elevation_req_options: [plug: {Req.Test, Microwaveprop.Terrain.ElevationClient}, retry: false] config :microwaveprop, gefs_req_options: [plug: {Req.Test, Microwaveprop.Weather.GefsClient}, retry: false] config :microwaveprop, giro_req_options: [plug: {Req.Test, Microwaveprop.Ionosphere.GiroClient}, retry: false] # Default the HRRR cycle freshness probe to "always available" in tests. # Individual cases that exercise the fallback path override via # `Application.put_env/3` in their setup. config :microwaveprop, hrrr_cycle_available_fn: fn _run_time -> true end config :microwaveprop, hrrr_req_options: [plug: {Req.Test, Microwaveprop.Weather.HrrrClient}, retry: false] config :microwaveprop, iem_rate_limiter_interval_ms: 0 config :microwaveprop, iem_req_options: [plug: {Req.Test, Microwaveprop.Weather.IemClient}, retry: false] config :microwaveprop, narr_req_options: [plug: {Req.Test, Microwaveprop.Weather.NarrClient}, retry: false] # Route HTTP requests through Req.Test stubs config :microwaveprop, nexrad_req_options: [plug: {Req.Test, Microwaveprop.Weather.NexradClient}, retry: false] config :microwaveprop, rtma_req_options: [plug: {Req.Test, Microwaveprop.Weather.RtmaClient}, retry: false] config :microwaveprop, solar_req_options: [plug: {Req.Test, Microwaveprop.Weather.SolarClient}] config :microwaveprop, srtm_req_options: [plug: {Req.Test, Microwaveprop.Terrain.Srtm}, retry: false] config :microwaveprop, start_freshness_monitor: false config :microwaveprop, swpc_req_options: [plug: {Req.Test, Microwaveprop.SpaceWeather.SwpcClient}, retry: false] config :microwaveprop, uwyo_req_options: [plug: {Req.Test, Microwaveprop.Weather.UwyoSoundingClient}, retry: false] # 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