Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Create free account
hub
/
github.com/Screenly/Anthias
/ functions
Functions
1,832 in github.com/Screenly/Anthias
⨍
Functions
1,832
◇
Types & classes
160
↳
Endpoints
84
Function
test_sweep_marks_unreachable_when_url_fails
(eager_celery: None)
tests/test_celery_tasks.py:308
Function
test_sweep_probe_exception_does_not_kill_sweep
One asset's probe blowing up must not break the others.
tests/test_celery_tasks.py:400
Function
test_sweep_skips_disabled_assets
(eager_celery: None)
tests/test_celery_tasks.py:343
Function
test_sweep_skips_processing_assets
(eager_celery: None)
tests/test_celery_tasks.py:354
Function
test_sweep_skips_skip_asset_check_assets_entirely
Operator opted out of validation; trust them and don't probe. Critically, last_reachability_check must NOT be set — the API exposes that field
tests/test_celery_tasks.py:365
Method
test_sweep_soft_limit_aborts_and_releases_lock
( self, eager_celery: None )
tests/test_celery_tasks.py:1867
Method
test_sweep_task_has_soft_limit_headroom
(self)
tests/test_celery_tasks.py:1841
Function
test_sweep_updates_last_reachability_check
(eager_celery: None)
tests/test_celery_tasks.py:328
Function
test_system_info_context_shape
Smoke test for the enriched page-context dict — guards against silent shape regressions in the load/disk/memory/resolution helpers the System
tests/test_template_views.py:2320
Function
test_system_info_page_renders
Smoke-test that System Info renders (heading visible, no 5xx) against the values the page actually produced — also the source of the ``system-
tests/test_app.py:1751
Function
test_system_info_renders
(client: Client)
tests/test_template_views.py:62
Method
test_tasks_have_soft_limit_headroom
(self)
tests/test_celery_tasks.py:1894
Method
test_telemetry_soft_limit_skips_tick
(self)
tests/test_celery_tasks.py:1918
Function
test_template_handle_unicode_non_string
()
tests/test_utils.py:277
Function
test_to_json_serialises_asset
(asset: Asset)
tests/test_template_views.py:207
Function
test_toggle_disables_asset
(reset_assets: None, page: Page)
tests/test_app.py:1345
Function
test_toggle_enables_asset
(reset_assets: None, page: Page)
tests/test_app.py:1318
Method
test_token_scheme_and_prefer_header
(self)
src/anthias_server/api/tests/test_screenly_migration.py:158
Method
test_trailing_dots_are_stripped
(self)
src/anthias_server/api/tests/test_screenly_migration.py:121
Method
test_transactions_start_immediate
(self)
tests/test_django_db_settings.py:27
Function
test_trigger_recheck_no_op_on_missing_asset_id
()
tests/test_viewer.py:822
Function
test_trigger_recheck_no_op_when_internal_token_missing
When ``internal_auth_token`` returns '' (no secret available in settings or env), the request would be a guaranteed 403 — so the viewer skips
tests/test_viewer.py:828
Function
test_trigger_recheck_posts_to_recheck_endpoint
The viewer's job is to send whatever ``internal_auth_token`` yields as a header; the HMAC derivation itself is exercised in ``lib/internal_aut
tests/test_viewer.py:800
Function
test_trigger_recheck_swallows_request_errors
Best-effort: a server hiccup must not interrupt the asset loop.
tests/test_viewer.py:840
Method
test_true_under_balena
(self, monkeypatch: pytest.MonkeyPatch)
tests/test_sentry.py:252
Function
test_trusted_origin_does_not_open_other_hosts
Trusting ``https://signage.example.com`` must not implicitly trust ``https://attacker.example``. The trusted-origin allowlist is exact: only t
tests/test_csrf.py:233
Function
test_try_connectivity_all_fail
()
tests/test_diagnostics.py:323
Function
test_try_connectivity_all_succeed
()
tests/test_diagnostics.py:313
Function
test_try_connectivity_mixed
()
tests/test_diagnostics.py:333
Function
test_unblank_display_resumes_and_powers_on
( restore_blank_state: None, )
tests/test_viewer.py:2236
Function
test_unicode_correctness_in_bottle_templates
()
tests/test_utils.py:28
Function
test_unknown_asset_id_returns_404
( api_client: APIClient, version: str )
src/anthias_server/api/tests/test_assets.py:198
Method
test_unknown_asset_id_returns_404
( self, api_client: APIClient, migrate_url: str )
src/anthias_server/api/tests/test_screenly_migration.py:636
Method
test_unknown_zone_name
(self, tmp_path: Path)
tests/test_django_timezone.py:57
Method
test_unlistable_directory_is_skipped_not_fatal
( self, tmp_path: Path )
tests/test_whitenoise_resilient.py:63
Function
test_unscheduled_asset_unchanged
Backward compat: defaults must not narrow is_active(). ASSET_X carries no play_days/play_time_* overrides, so the new window filter should be
tests/test_scheduler.py:337
Method
test_unstattable_entry_is_skipped_not_fatal
( self, tmp_path: Path )
tests/test_whitenoise_resilient.py:90
Function
test_update_asset_publishes_reload
v1.x put writes its own publish; v1_2/v2 share the helper.
src/anthias_server/api/tests/test_assets.py:608
Function
test_update_asset_should_return_updated_asset
( api_client: APIClient, version: str )
src/anthias_server/api/tests/test_assets.py:156
Function
test_upload_gate_codecs_are_h264_or_hevc
QtMultimedia + libavcodec (the ffmpeg-backed Qt 6 media plugin) auto-selects the appropriate decoder at playback time — V4L2 stateless ``rpi-h
tests/test_media_player.py:977
Function
test_uri_basename_shown_for_local_assets
For local-file assets the picker should show the basename (e.g. ``WIZARD_VIDEO_BASENAME``) — pasting the full ``/data/anthias_assets/...`` pat
tests/test_migrate_to_screenly.py:455
Method
test_url_asset_uses_source_url
(self, post_mock: MagicMock)
src/anthias_server/api/tests/test_screenly_migration.py:300
Function
test_url_fails_probes_private_host_instead_of_rejecting
A LAN host is probed like any other — HEAD actually fires. The reachable/unreachable verdict itself is already covered by ``test_url_fails_re
tests/test_utils.py:433
Function
test_url_fails_returns_false_on_2xx_response
()
tests/test_utils.py:48
Function
test_url_fails_returns_true_on_connection_error
()
tests/test_utils.py:39
Function
test_url_fails_short_circuits_for_invalid_url
()
tests/test_utils.py:56
Function
test_user_agent_wraps_product_token_with_homepage
()
tests/test_http.py:26
Function
test_v2_create_with_play_days_round_trips
( api_client: APIClient, )
src/anthias_server/api/tests/test_assets.py:269
Function
test_v2_get_clamps_out_of_range_refresh_interval
The serializer's write path rejects out-of-range values, but a hand-edited row or a legacy import could leave a junk value in metadata. GET sh
src/anthias_server/api/tests/test_assets.py:448
Function
test_v2_get_normalises_refresh_interval_in_metadata_too
The top-level ``refresh_interval_s`` and the embedded ``metadata['refresh_interval_s']`` must agree on the response — a row with an out-of-ran
src/anthias_server/api/tests/test_assets.py:410
Function
test_v2_patch_refresh_interval_out_of_range_rejected
Both bounds of the documented 0..REFRESH_INTERVAL_S_MAX range must 400 on write. ``-1`` is the just-below-zero case; ``86401`` catches the typ
src/anthias_server/api/tests/test_assets.py:363
Function
test_v2_patch_refresh_interval_preserves_pipeline_metadata
Operator-driven refresh_interval_s edits must not stomp on the upload pipeline's metadata keys (original_ext, transcoded, error_message). Pre-
src/anthias_server/api/tests/test_assets.py:380
Function
test_v2_patch_refresh_interval_round_trips
PATCH a single ``refresh_interval_s`` (partial update) onto an existing webpage asset and read the new value back.
src/anthias_server/api/tests/test_assets.py:342
Function
test_v2_patch_refresh_interval_zero_disables
0 stores explicitly; the viewer treats 0 the same as a missing key (no auto-refresh). Operators clearing the field from the edit modal POST 0
src/anthias_server/api/tests/test_assets.py:473
Function
test_v2_post_with_refresh_interval_round_trips
POST round-trip for the webpage auto-refresh interval. The interval lives inside ``Asset.metadata`` (so the upload pipeline's read-only stanc
src/anthias_server/api/tests/test_assets.py:293
Function
test_v2_post_without_refresh_interval_defaults_to_zero
A create without ``refresh_interval_s`` reads back as 0 (the "no auto-refresh" default), and ``metadata`` is left as an empty dict so the uplo
src/anthias_server/api/tests/test_assets.py:324
Function
test_v2_update_with_empty_play_days_rejected
( api_client: APIClient, v2_asset_detail_url: str )
src/anthias_server/api/tests/test_assets.py:221
Function
test_v2_update_with_full_time_window_accepted
( api_client: APIClient, v2_asset_detail_url: str )
src/anthias_server/api/tests/test_assets.py:251
Function
test_v2_update_with_partial_time_window_rejected
( api_client: APIClient, v2_asset_detail_url: str )
src/anthias_server/api/tests/test_assets.py:234
Function
test_valid_token_loads_asset_picker_with_seed_rows
The Continue button on a valid token must call validate, then load /api/v2/assets, then transition to the select step with each seed asset ren
tests/test_migrate_to_screenly.py:222
Method
test_valid_token_returns_group_id
( self, validate_mock: MagicMock, group_mock: MagicMock, api_client: APIClient
src/anthias_server/api/tests/test_screenly_migration.py:465
Method
test_valid_zone_present_on_disk
(self, tmp_path: Path)
tests/test_django_timezone.py:34
Function
test_validate_url
(url: str, expected: bool)
tests/test_utils.py:142
Function
test_verify_password_empty_stored_returns_false
()
tests/test_auth.py:73
Function
test_video_arm64_catch_all_rejects_everything
The catch-all ``arm64`` DEVICE_TYPE has no entry in the HW decode map (an unknown aarch64 SBC isn't guaranteed to expose a v4l2-request decode
tests/test_processing.py:954
Function
test_video_arm64_with_rockpi4_subtype_accepts_h264
A Rock Pi 4 running the catch-all arm64 image gets its ``{h264, hevc}`` set once ``host:board_subtype=rockpi4`` is published by anthias_host_a
tests/test_processing.py:1002
Function
test_video_h264_accepted_on_pi5_software_decode
H.264 is accepted on Pi 5 via software decode — the Cortex-A76 handles 1080p H.264 without frame drops, and YouTube rarely serves HEVC so bloc
tests/test_processing.py:748
Function
test_video_high_ram_accepts_4k
A 4K upload on a high-RAM board (Pi 5, Pi 4 4GB) is NOT gated by resolution — the low-RAM cap only fires when MemTotal sits below the threshol
tests/test_processing.py:1151
Function
test_video_low_ram_accepts_1080p
1080p HEVC on the same low-RAM board passes the gate — exactly the boundary the on-device measurement said survives.
tests/test_processing.py:1110
Function
test_video_low_ram_rejects_4k_with_resolution_message
A 4K HEVC upload on a low-RAM board (codec is in the supported set, but resolution exceeds 1920×1080) is rejected with a resolution-specific m
tests/test_processing.py:1051
Function
test_video_low_ram_unsupported_codec_recipe_includes_downscale
When the upload fails BOTH the codec gate and the resolution gate (e.g. 4K MPEG-2 on Rock Pi 4 1GB), the codec message wins (codec is the stri
tests/test_processing.py:1191
Function
test_video_missing_file_raises_filenotfound
(asset_dir: str)
tests/test_processing.py:602
Function
test_video_supported_codec_writes_metadata_and_clears_processing
H.264 upload on a Pi 4 (which HW-decodes H.264) is accepted: the row gets codec / dims / fps written into ``metadata`` and ``is_processing`` i
tests/test_processing.py:612
Function
test_video_task_declares_codec_rejection_as_expected
The codec/resolution gate raises ``UnsupportedVideoCodecError`` as a deliberate, operator-facing rejection — not a fault. The video task must
tests/test_processing.py:1750
Function
test_video_unknown_codec_is_rejected
ffprobe failure (codec reported as 'unknown') must reject the upload — we won't pass through a clip we can't certify against the board's HW de
tests/test_processing.py:920
Function
test_video_unsupported_codec_h264_board_recipe
A board that supports H.264 (Pi 4) gets a libx264 recipe — libx264 is significantly faster than libx265 for the operator.
tests/test_processing.py:827
Function
test_video_unsupported_codec_raises_with_ffmpeg_recipe
A codec outside the board's HW decode set is rejected. The exception's message names the rejected codec and supported set; its ``recipe`` attr
tests/test_processing.py:636
Function
test_video_unsupported_codec_recipe_falls_back_to_upload_placeholder
When the row has no ``metadata.upload_name`` (YouTube downloads, pre-rebrand rows), the recipe uses a stable ``upload<ext>`` placeholder so th
tests/test_processing.py:707
Function
test_video_unsupported_codec_still_rejected_on_pi5
VP9 / AV1 uploads on Pi 5 are still rejected even though H.264 software-decode was added to the Pi 5 codec set. The rejection recipe tells the
tests/test_processing.py:785
Function
test_view_image_reraises_unrelated_dbus_error
Method-level failures from a live webview (or a dead session bus) are not respawn-worthy — they must propagate so the container restart handle
tests/test_viewer.py:617
Function
test_view_image_respawns_webview_on_mid_call_death
A webview that survives the handshake but dies during the ``loadImage`` D-Bus call must be reaped, respawned with the inline budget, and sent
tests/test_viewer.py:559
Function
test_view_webpage_arms_reload_interval
``view_webpage`` must always call ``setReloadInterval`` after ``loadPage`` — even when the URI is unchanged from the previous tick, since an a
tests/test_viewer.py:391
Function
test_view_webpage_default_zero_interval
Splash / fallback callers pass no interval, which becomes 0 — the C++ side treats that as "disable the timer", so this is the no-auto-refresh
tests/test_viewer.py:414
Function
test_view_webpage_resets_interval_on_unchanged_url
When the URI matches ``current_browser_url`` we skip the ``loadPage`` D-Bus call (cheap no-op), but ``setReloadInterval`` still has to fire so
tests/test_viewer.py:512
Function
test_view_webpage_respawns_webview_on_mid_call_death
Same recovery contract for the ``loadPage`` path — and the auto-refresh timer must still be armed on the respawned process.
tests/test_viewer.py:591
Function
test_view_webpage_setreloadinterval_failure_modes
( viewer_fixtures: _ViewerFixtures, error_message: str, expected_call_count: int, )
tests/test_viewer.py:455
Function
test_viewer_current_asset
( send_to_viewer_mock: Any, api_client: APIClient, cleanup_asset_dir: None, )
src/anthias_server/api/tests/test_v1_endpoints.py:172
Function
test_viewer_publisher_get_instance_creates_once
()
tests/test_messaging.py:50
Function
test_viewer_publisher_send_publishes_correct_payload
()
tests/test_messaging.py:28
Function
test_viewer_publisher_singleton_rejects_second_init
()
tests/test_messaging.py:39
Method
test_waits_then_proceeds_when_socket_appears
( self, monkeypatch: pytest.MonkeyPatch, tmp_path: Any )
tests/test_viewer.py:2058
Method
test_wal_and_synchronous_pragmas_in_init_command
(self)
tests/test_django_db_settings.py:22
Function
test_watchdog_should_create_file_if_not_exists
( viewer_fixtures: _ViewerFixtures, )
tests/test_viewer.py:695
Function
test_watchdog_should_update_mtime
( viewer_fixtures: _ViewerFixtures, )
tests/test_viewer.py:706
Method
test_whitespace_only_name_falls_back
(self)
src/anthias_server/api/tests/test_screenly_migration.py:91
Function
test_windowed_cap_applies_when_any_asset_has_window
()
tests/test_scheduler.py:349
Function
test_windowed_cap_does_not_apply_after_end_date
An expired windowed asset can never become active again, so it must not keep the cap firing every 60s.
tests/test_scheduler.py:407
Function
test_windowed_cap_does_not_apply_before_start_date
A windowed asset whose start_date is in the future shouldn't drag the cap into the picture — its activeness can't flip until start_date arrive
tests/test_scheduler.py:387
Function
test_windowed_cap_does_not_apply_for_partial_time_window
Partial windows (only one of from/to set) are no-ops in _matches_play_window — has_window_filter() must agree, otherwise the 60s cap fires for
tests/test_scheduler.py:371
Function
test_windowed_cap_does_not_apply_without_window
()
tests/test_scheduler.py:364
← previous
next →
1,701–1,800 of 1,832, ranked by callers