prop/test/microwaveprop_web/live
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
..
admin test: push line coverage from 71.7% → 78.67% 2026-04-23 18:43:18 -05:00
contact_live test: push line coverage from 71.7% → 78.67% 2026-04-23 18:43:18 -05:00
rover_locations_live feat(rover-locations): edit status + notes alongside marker drag 2026-05-03 13:10:47 -05:00
rover_planning_live test: bump coverage 80% -> 81.3% via more LiveView + module tests 2026-05-08 09:10:34 -05:00
algo_live_test.exs Show topbar loading indicator while scores are loading 2026-03-31 09:30:20 -05:00
api_docs_live_test.exs feat(docs/api): protocol-style two-pane API reference layout 2026-05-10 11:06:29 -05:00
beacon_live_test.exs fix(security,perf): address 9 audit findings (access control, DoS, crashes) 2026-05-11 18:53:21 -05:00
contact_live_test.exs feat(contacts): per-month bar chart on the /contacts page 2026-05-05 09:35:08 -05:00
contact_map_live_test.exs feat(rover-planning): /rover-planning page with path-profile worker 2026-05-03 11:04:11 -05:00
eme_live_test.exs refactor: deduplicate helpers and simplify Scorer 2026-04-28 14:14:34 -05:00
import_live_test.exs feat(import): live /imports/:id progress page + gate upload bars on submit 2026-04-17 09:31:22 -05:00
live_stash_guard_test.exs test: push coverage 79.64% -> 80.04% across multiple modules 2026-05-08 08:42:03 -05:00
map_live_test.exs perf(map): /scores/cells binary endpoint, client-side fetch + band/time prefetch 2026-04-29 14:27:20 -05:00
path_live_test.exs test: bump coverage 80% -> 81.3% via more LiveView + module tests 2026-05-08 09:10:34 -05:00
rover_live_test.exs test: more Weather + RoverLive + GefsFetchWorker coverage tests 2026-05-08 09:46:16 -05:00
rover_locations_live_test.exs refactor(rover-locations): rename status atoms ideal→good, off_limits→bad 2026-05-03 11:13:18 -05:00
rover_planning_live_test.exs feat(rover-planning): worker pre-computes full /path output, PathLive renders cached 2026-05-03 14:58:16 -05:00
skewt_live_test.exs test: SkewtLive HRRR + sounding fixtures bring coverage to 82.7% 2026-05-08 09:38:41 -05:00
skewt_location_resolver_test.exs test: bump coverage 80% -> 81.3% via more LiveView + module tests 2026-05-08 09:10:34 -05:00
skewt_svg_test.exs feat(rover): Oban worker enriches station elevation post-insert 2026-04-25 16:26:33 -05:00
status_live_test.exs feat(status): show Rust prop-grid-rs work queue alongside Oban panel 2026-04-19 17:07:38 -05:00
submit_live_test.exs fix(submit): allowlist switch_tab values instead of trusting client input 2026-04-25 10:10:42 -05:00
user_management_live_test.exs Drop gridmap.org dependency, resolve callsigns locally 2026-04-12 17:43:29 -05:00
user_profile_live_test.exs test: coverage round 3 (83.96% → 84.39%) + 10 new property tests 2026-04-24 10:15:37 -05:00
weather_ca_map_live_test.exs fix(weather-ca): drop the 1h freshness cutoff so HRDPS data renders 2026-04-30 12:24:34 -05:00
weather_map_live_test.exs fix(weather): tolerate stale map_bounds from /map → /weather navigation 2026-04-30 17:34:38 -05:00