prop/test/microwaveprop_web/controllers
Graham McIntire 14b90ee9f3
fix(security,perf): address 9 audit findings (access control, DoS, crashes)
- Beacon detail endpoints (LiveView + REST API) now hide unapproved
  beacons from anonymous and unauthorized viewers; only the submitter
  and admins can see pending records before approval. Adds
  Beacons.get_visible_beacon/2 with scope-aware checks.
- API contact pagination now honors per_page end-to-end.
  Radio.list_contacts/1 accepts :per_page and clamps to 200.
- API rate limiter: ETS table is now owned by a long-lived Sweeper
  GenServer (won't die with a request task); Sweeper periodically
  prunes expired-window rows to bound memory; init_table/0 race is
  rescued.
- /scores/cells and /weather/cells: add per-IP rate limiting and a
  shared GridBounds clamp/413 guard so global / oversized viewports
  no longer drive unbounded binary responses.
- NEXRAD PNG unfilter (sub/up/average/paeth): replace acc++[byte]
  + Enum.at(acc, idx-bpp) with O(n) binary recursion. Decode time
  for the 12200x5400 n0q frame goes from quadratic to linear.
- LiveTableFooter.parse_page and ScoresFile.fetch_bound: switch
  String.to_integer/String.to_float to Integer.parse/Float.parse,
  fall back to defaults instead of raising.
- PathLive and MapLive band-event handlers: replace
  String.to_integer(params["band"]) with parse_int / parse_band_param
  so a non-numeric band parameter no longer crashes the LiveView.
2026-05-11 18:53:21 -05:00
..
api/v1 fix(security,perf): address 9 audit findings (access control, DoS, crashes) 2026-05-11 18:53:21 -05:00
agent_skills_controller_test.exs feat(agent-discovery): Link/markdown/content-signal/api-catalog/skills 2026-04-17 12:09:05 -05:00
api_catalog_controller_test.exs feat(agent-discovery): Link/markdown/content-signal/api-catalog/skills 2026-04-17 12:09:05 -05:00
api_docs_controller_test.exs feat: serve API docs at /docs/api 2026-05-09 09:09:45 -05:00
api_token_controller_test.exs feat(settings): manage /api/v1 tokens from user settings UI 2026-05-09 09:59:56 -05:00
beacon_monitor_controller_test.exs Add beacon monitor registration and fix prod SMTP 2026-04-08 11:30:28 -05:00
contact_map_controller_test.exs test: push line coverage from 71.7% → 78.67% 2026-04-23 18:43:18 -05:00
error_html_test.exs initial 2026-03-28 11:28:47 -05:00
error_json_test.exs initial 2026-03-28 11:28:47 -05:00
health_controller_test.exs fix(probes): stop DB saturation from SIGKILLing every pod 2026-04-21 16:00:04 -05:00
html_module_test.exs test: lift coverage to 85% and pin threshold 2026-05-08 13:59:56 -05:00
page_controller_test.exs test: add /qsos→/contacts redirect + scorer conversion properties 2026-04-23 14:03:02 -05:00
scores_controller_test.exs fix(security,perf): address 9 audit findings (access control, DoS, crashes) 2026-05-11 18:53:21 -05:00
user_registration_controller_test.exs Add password auth with callsign + email confirmation 2026-04-08 10:21:40 -05:00
user_reset_password_controller_test.exs feat(auth): self-service password reset 2026-04-18 08:42:35 -05:00
user_session_controller_test.exs feat(auth): self-service password reset 2026-04-18 08:42:35 -05:00
user_settings_controller_test.exs feat(accounts): add Home QTH section to user settings page 2026-04-25 16:51:54 -05:00
weather_tile_controller_test.exs fix(security,perf): address 9 audit findings (access control, DoS, crashes) 2026-05-11 18:53:21 -05:00