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_idempotent_rerun
(home_dir: str)
tests/test_migrate_legacy_paths.py:128
Function
test_iis_rewrite_host_proxy_with_trusted_origin_passes
Issue #2900 fix: when the operator lists the public hostname they actually serve Anthias under in CSRF_TRUSTED_ORIGINS, Django's stock check a
tests/test_csrf.py:213
Function
test_iis_rewrite_host_proxy_without_trusted_origin_rejected
Today's behaviour: IIS rewrites Host upstream, no trusted origin is configured, and the same-host fallback can't bridge two genuinely differen
tests/test_csrf.py:196
Function
test_image_corrupt_input_raises_clean_error
Pillow's UnidentifiedImageError must bubble out so the on_failure hook can write metadata.error_message — never leave a half-written staging f
tests/test_processing.py:326
Function
test_image_decompression_bomb_is_rejected
A malicious image (or a misclassified scan) advertising enormous dimensions must be rejected *before* any pixel decode happens. The check read
tests/test_processing.py:347
Function
test_image_heif_converts_to_lossless_webp
HEIC / HEIF (case-insensitive) → WebP. RGBA so the alpha handling on the WebP write path is exercised even though HEIF sources commonly arrive
tests/test_processing.py:301
Function
test_image_jpeg_routes_no_op
A caller that mis-routed a JPEG (or .png, .webp) through this task must not re-encode it — the row already plays. Just clear is_processing and
tests/test_processing.py:475
Function
test_image_missing_file_raises_filenotfound
Source file disappeared between row creation and task pickup (cleanup raced operator, disk pressure). Fail clean so on_failure writes the erro
tests/test_processing.py:462
Function
test_image_no_op_path_clears_stale_error_message
A row being re-uploaded after a previous failed conversion carries ``metadata.error_message``. When the new upload is a format the pipeline do
tests/test_processing.py:494
Function
test_image_normalises_to_lossless_webp_across_formats
Every entry in ``NORMALIZE_IMAGE_EXTS`` produces a valid WebP output: the original is removed, the row's URI is swapped to the new ``.webp`` p
tests/test_processing.py:251
Function
test_image_partial_write_cleans_staging
If Pillow writes some bytes to the staging file and *then* raises mid-encode (disk pressure, codec crash), the runner must clean up the partia
tests/test_processing.py:398
Function
test_image_pipeline_clears_prior_error
A re-uploaded asset whose previous attempt left an error message in metadata must clear that on success — the operator's next refresh shouldn'
tests/test_processing.py:543
Function
test_image_rename_failure_cleans_staging
The atomic ``os.replace(staging, final_uri)`` normally succeeds in <1ms, but a filesystem-full / permissions / cross-device error there would
tests/test_processing.py:430
Function
test_image_row_already_finalized_no_op
Duplicate task fire on an already-finalised row → no-op. Same contract download_youtube_asset enforces.
tests/test_processing.py:518
Function
test_image_row_missing_no_op
Row deleted between dispatch and pickup → no-op.
tests/test_processing.py:537
Function
test_inactive_row_has_no_drag_handle
( reset_assets: None, page: Page )
tests/test_app.py:511
Function
test_info_v1_endpoint
( redis_get_mock: Any, filesizeformat_mock: Any, get_load_avg_mock: Any, is_up_to_date_mock: A
src/anthias_server/api/tests/test_info_endpoints.py:57
Function
test_info_v2_endpoint
( getenv_mock: Any, get_node_ip_mock: Any, mac_address_mock: Any, virtual_memory_mock: Any,
src/anthias_server/api/tests/test_info_endpoints.py:142
Method
test_init_command_is_valid_sqlite
(self, tmp_path: Path)
tests/test_django_db_settings.py:31
Function
test_integrations_balena_environment
( mock_getenv: Any, mock_is_balena: Any, api_client: APIClient, integrations_url: str, )
src/anthias_server/api/tests/test_v2_endpoints.py:465
Function
test_integrations_non_balena_environment
( mock_is_balena: Any, api_client: APIClient, integrations_url: str )
src/anthias_server/api/tests/test_v2_endpoints.py:497
Function
test_integrations_renders
(client: Client)
tests/test_template_views.py:75
Function
test_internal_auth_works_without_basic_auth
Viewer has no operator BasicAuth credentials; the internal header is sufficient for this side-effect-only endpoint.
tests/test_recheck_endpoint.py:141
Function
test_intro_step_advances_to_token_step
The "I have a token" button must transition Alpine state from intro → token; the token surface is the only one visible after.
tests/test_migrate_to_screenly.py:176
Method
test_invalid_token_skips_group_creation
( self, validate_mock: MagicMock, group_mock: MagicMock, api_client: APIClient
src/anthias_server/api/tests/test_screenly_migration.py:490
Function
test_invalid_token_surfaces_inline_error
A 200 response with ``valid: false`` must render the rejection message inline; the user stays on the token step (no advance to asset picker).
tests/test_migrate_to_screenly.py:196
Function
test_is_balena_app_false
(monkeypatch: Any)
tests/test_utils.py:161
Function
test_is_balena_app_true
(monkeypatch: Any)
tests/test_utils.py:156
Function
test_is_ci_false
(monkeypatch: Any)
tests/test_utils.py:151
Function
test_is_ci_true
(monkeypatch: Any)
tests/test_utils.py:146
Function
test_is_demo_node_false
(monkeypatch: Any)
tests/test_utils.py:171
Function
test_is_demo_node_true
(monkeypatch: Any)
tests/test_utils.py:166
Function
test_is_docker_uses_dockerenv_marker
()
tests/test_utils.py:176
Function
test_is_legacy_sha256
(value: str, expected: bool)
tests/test_auth.py:90
Function
test_is_playing_false_when_process_exited
(gstfb: _GstFixtures)
tests/test_media_player.py:686
Function
test_is_playing_returns_false_after_stop
(mpv: _MPVFixtures)
tests/test_media_player.py:184
Function
test_is_playing_returns_false_before_play
(mpv: _MPVFixtures)
tests/test_media_player.py:191
Function
test_is_playing_returns_true_after_play
(mpv: _MPVFixtures)
tests/test_media_player.py:178
Function
test_is_streaming_uri_false_for_non_streams
(uri: str)
tests/test_remote_video.py:165
Function
test_is_streaming_uri_true_for_streams
(uri: str)
tests/test_remote_video.py:143
Function
test_is_up_to_date_github_error_no_cache_returns_false
First-run fail-pessimistic: don't claim 'up to date' when we have never successfully checked.
tests/test_github.py:310
Function
test_is_up_to_date_github_error_with_cached_verdict_uses_it
( github_env: None, redis_data: dict[str, str] )
tests/test_github.py:263
Function
test_is_up_to_date_local_ahead_returns_true
A local dev bump (e.g. master tip past the last release tag) is still 'up to date' — the indicator is about being behind, not matching exactly
tests/test_github.py:219
Function
test_is_up_to_date_local_behind_returns_false
( github_env: None, redis_data: dict[str, str] )
tests/test_github.py:204
Function
test_is_up_to_date_malformed_remote_tag_falls_back
( github_env: None, redis_data: dict[str, str] )
tests/test_github.py:326
Function
test_is_up_to_date_malformed_remote_tag_no_cache_returns_false
( github_env: None, )
tests/test_github.py:343
Function
test_is_up_to_date_matching_versions_returns_true
( github_env: None, redis_data: dict[str, str] )
tests/test_github.py:189
Function
test_is_up_to_date_unparseable_local_string_suppresses_indicator
( github_env: None, )
tests/test_github.py:250
Function
test_is_up_to_date_unparseable_local_suppresses_indicator
Dev builds without a parseable CalVer get no comparison and no pill. The remote fetch isn't even attempted in that case.
tests/test_github.py:237
Function
test_is_up_to_date_verdict_cache_does_not_leak_across_releases
An upgrade during a GitHub outage must not reuse the previous version's verdict — that verdict was computed against the OLD installed release,
tests/test_github.py:289
Function
test_is_wayland_board_keys_off_qpa
Issue #3044: _is_wayland_board() must recognise every cage board (x86, arm64, pi5), not just x86. Keying off QT_QPA_PLATFORM mirrors the Docke
tests/test_viewer.py:1216
Function
test_is_wayland_board_true_for_pi5
The concrete regression: a Pi 5 viewer (DEVICE_TYPE=pi5, QT_QPA_PLATFORM=wayland from the Dockerfile) is now correctly classified as a Wayland
tests/test_viewer.py:1225
Function
test_is_youtube_url_handles_whitespace
Operators paste from clipboard; trailing whitespace shouldn't flip the classification.
tests/test_youtube_helper.py:54
Function
test_is_youtube_url_recognises_canonical_forms
(uri: str)
tests/test_youtube_helper.py:33
Function
test_is_youtube_url_rejects_other_inputs
(uri: str)
tests/test_youtube_helper.py:50
Function
test_json_dump_serialises_datetime
()
tests/test_utils.py:197
Function
test_json_tz
()
tests/test_utils.py:33
Function
test_keep_same_position_on_playlist_update
( restore_shuffle_setting: None, )
tests/test_scheduler.py:171
Method
test_keeps_events_without_exc_info
(self)
tests/test_sentry.py:160
Method
test_keeps_ordinary_exceptions
(self)
tests/test_sentry.py:151
Method
test_keeps_wrapper_when_context_is_suppressed
(self)
tests/test_sentry.py:102
Function
test_legacy_symlinked_uri_is_preserved
Pre-rebrand DB rows reference paths like ~/screenly_assets/foo.png, which after upgrade is a symlink to ~/anthias_assets/foo.png. The orp
tests/test_celery_tasks.py:114
Function
test_load_browser
(viewer_fixtures: _ViewerFixtures)
tests/test_viewer.py:194
Function
test_load_browser_inline_budget_limits_attempts
The mid-playback respawn path passes a small budget so a persistent failure can't freeze the asset_loop for minutes — the explicit max_attempt
tests/test_viewer.py:364
Function
test_load_browser_missing_binary_short_circuits
A permanent failure (missing binary) must NOT consume the retry budget — it raises on the first attempt with no backoff.
tests/test_viewer.py:340
Function
test_load_browser_raises_after_exhausting_retries
When every attempt fails, load_browser still raises — but only after spending the retry budget, so the fall-through to a container restart is
tests/test_viewer.py:316
Function
test_load_browser_resets_current_browser_url
A fresh webview displays nothing, so the previous process's URL must not short-circuit the next view_* value comparison — with an unchanged UR
tests/test_viewer.py:667
Function
test_load_browser_resets_set_reload_interval_capability
If the webview process crashed and we latched off, the next ``load_browser()`` should re-enable capability detection — the fresh process might
tests/test_viewer.py:481
Function
test_load_browser_retries_then_succeeds
A board that crashes the webview on the first launches but comes up on a later one must self-heal in-process — the whole point of the spawn re
tests/test_viewer.py:282
Method
test_local_asset_missing_file_raises_error
( self, post_mock: MagicMock, tmp_path: Path, monkeypatch: pytest.MonkeyPatch,
src/anthias_server/api/tests/test_screenly_migration.py:349
Method
test_local_asset_open_oserror_surfaces_as_per_asset_error
( self, post_mock: MagicMock, tmp_path: Path, monkeypatch: pytest.MonkeyPatch,
src/anthias_server/api/tests/test_screenly_migration.py:369
Method
test_local_asset_uses_multipart_with_pretty_filename
( self, post_mock: MagicMock, tmp_path: Path, monkeypatch: pytest.MonkeyPatch,
src/anthias_server/api/tests/test_screenly_migration.py:321
Function
test_local_on_other_pi_uses_headphones
( alsa_settings: Any, device_type: str )
tests/test_media_player.py:302
Function
test_local_on_pi5_uses_detected_hdmi_device
(alsa_settings: Any)
tests/test_media_player.py:286
Function
test_login_get_renders_auth_card
A bare GET /login/ must produce the new auth-card layout. The string assertions here would catch a broken {% extends %}, missing static refere
tests/test_login_view.py:44
Function
test_login_get_round_trips_next
?next=/settings/ must round-trip into the form so the operator's original destination survives the POST.
tests/test_login_view.py:62
Function
test_login_post_honors_safe_next
A successful POST with a same-host `next` redirects there, not to the dashboard.
tests/test_login_view.py:72
Function
test_login_post_invalid_creds_keeps_next
A failed login re-renders the form, and the next value must survive so the operator's destination isn't lost on a typo.
tests/test_login_view.py:110
Function
test_login_post_rejects_offhost_next
Open-redirect guard: an attacker-controlled host in `next` must NOT be honoured — the view falls back to the dashboard. Without this filter, /
tests/test_login_view.py:89
Function
test_marshal_dbus_options_wraps_in_glib_variant
pydbus refuses to coerce a Python scalar to ``GLib.Variant`` when the slot is declared ``a{sv}`` ("Expected GLib.Variant, but got str" at runt
tests/test_media_player.py:218
Function
test_missing_internal_auth_is_forbidden
()
tests/test_recheck_endpoint.py:130
Method
test_missing_timezone_file
(self, tmp_path: Path)
tests/test_django_timezone.py:75
Method
test_missing_token_is_400
( self, api_client: APIClient, validate_url: str )
src/anthias_server/api/tests/test_screenly_migration.py:548
Function
test_missing_token_still_rejected
The same-host Origin relaxation must not bypass the token check itself — a POST with a matching Origin but no ``csrfmiddlewaretoken`` body / `
tests/test_csrf.py:141
Function
test_module_level_linux_user_constant
()
tests/test_auth.py:94
Function
test_mpv_never_passes_video_rotate_on_pi4_64
Pi 4 (eglfs) rotates the whole screen via QT_QPA_EGLFS_ROTATION (set in src/anthias_viewer/__init__.py:_build_webview_env), and the QGraphicsV
tests/test_media_player.py:934
Function
test_mpv_never_passes_video_rotate_under_cage
x86 / arm64 / pi5 run under cage and inherit the compositor transform via wlr-randr (issue #2856 — driven from src/anthias_viewer/__init__.py)
tests/test_media_player.py:891
Function
test_multi_upload_skips_rejected_file_and_continues
A file the server refuses (invalid type → HTTP 200 + error toast) must not silently abort the batch: the error surfaces and the remaining vali
tests/test_app.py:704
Method
test_name_already_has_extension_is_not_doubled
(self)
src/anthias_server/api/tests/test_screenly_migration.py:97
Function
test_navbar_links_navigate
The top-nav tabs must reach their pages (Integrations is balena-gated and absent in the test container).
tests/test_app.py:1472
Function
test_needs_image_normalisation
(filename: str, expected: bool)
tests/test_processing.py:1937
Method
test_network_error_returns_502
( self, validate_mock: MagicMock, api_client: APIClient, validate_url: str,
src/anthias_server/api/tests/test_screenly_migration.py:509
Method
test_network_error_returns_502
( self, migrate_mock: MagicMock, api_client: APIClient, migrate_url: str,
src/anthias_server/api/tests/test_screenly_migration.py:620
Function
test_no_bootstrap_class_names_in_templates
Regression guard for the rename pass that took us off Bootstrap. Scans every template for a fixed list of Bootstrap utility / component class
tests/test_template_views.py:2446
Function
test_no_console_errors_on_load
The deferred home.js + vendor.js bundles must execute without throwing. A console error on a fresh page load means the minifier or an import b
tests/test_app.py:258
Method
test_no_error_log_on_healthy_tree
( self, tmp_path: Path, caplog: pytest.LogCaptureFixture )
tests/test_whitenoise_resilient.py:173
Method
test_no_op_when_no_socket_env
( self, monkeypatch: pytest.MonkeyPatch )
tests/test_viewer.py:2011
Function
test_no_origin_header_still_works
Curl-style clients with no Origin header (legitimate server-to-server callers, scripted operators) must still POST successfully when they carr
tests/test_csrf.py:169
Function
test_no_skip_when_current_asset_still_active
Unrelated edits (e.g. duration on a different asset) shouldn't interrupt the displayed asset.
tests/test_viewer.py:955
Method
test_no_uri_asset_raises_before_request
( self, post_mock: MagicMock )
src/anthias_server/api/tests/test_screenly_migration.py:414
← previous
next →
1,301–1,400 of 1,832, ranked by callers