zulip/zerver/tests
Alex Vandiver 230bae17bb thumbnail: Generate a transcoded high-res version of HEIC/TIFF images.
If the content-type of the image is not in INLINE_MIME_TYPES, then we
do not expect browsers to be able to display it.  This behaviour is
particularly confusing because the thumbnail will render properly,
since that will be in the more widely-supported WebP format, but the
lightbox will show a broken image.

In these cases, generate a high-resolution (4032x3024) "thumbnail"
which clients can choose to use instead.  This thumbnail format is not
in the listed in the server's advertised thumbnail size list, because
it is not reliably generated for every image.

The transcoded thumbnail format is set on the `img` tag if it is
generated, and the original content-type is always passed to the
client, so it can decide how or if to render the original image.  This
content-type is as the _original uploader_ specified it, so may be
incorrect.

The transcoded image is not animated, even if the original was.  HEIC
files can nominally be animated, but in testing libvips was not able
to correctly recognize them as such.  TIFF files are parsed as being
"animated," with one page per frame; this is of dubious utility, so
we merely transcode the first page.  Always generating a static
transcoded image serves to also limit the computational time spent.

THUMBNAIL_OUTPUT_FORMATS is switched to be a tuple to ensure that it
is not accidentally mutated.
2025-01-09 09:10:28 -08:00
..
fixtures import: Sort realms migrations status before checking. 2025-01-02 18:43:16 -08:00
images thumbnail: Store the post-orientation-transformation dimensions. 2024-07-24 09:56:42 -07:00
__init__.py
test_alert_words.py alert_words: Migrate alert_words to use @typed_endpoint. 2023-09-08 08:20:17 -07:00
test_attachments.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
test_audit_log.py settings: Add realm-level setting moderation_request_channel. 2024-12-18 11:36:19 -08:00
test_auth_backends.py requirements: Upgrade Python requirements. 2024-10-20 18:16:27 -07:00
test_bots.py webhooks: Support filtering GitHub activity from private repositories. 2024-10-31 10:40:28 -07:00
test_cache.py ruff: Fix UP007 Use X | Y for type annotations. 2024-07-13 22:28:22 -07:00
test_compatibility.py python: Reformat with Ruff formatter. 2024-02-29 17:07:16 -08:00
test_create_video_call.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_custom_profile_data.py custom_profile_fields: Add "editable_by_user" setting. 2024-09-23 18:09:38 -07:00
test_decorators.py auth: Tweak invalid credentials error message. 2024-10-24 14:35:31 -07:00
test_delete_unclaimed_attachments.py do_delete_old_unclaimed_attachments: Cap deletions at batch size. 2024-08-28 13:57:57 -07:00
test_digest.py urls: Generate narrow links in backend with "channel" operator. 2024-10-11 17:00:23 -07:00
test_docs.py portico: Add Rush Stack case study. 2024-12-17 11:44:32 -08:00
test_drafts.py ruff: Fix UP007 Use X | Y for type annotations. 2024-07-13 22:28:22 -07:00
test_email_change.py realm-deactivation: Send email to owners as part of deactivation. 2024-06-26 16:48:18 -07:00
test_email_log.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_email_mirror.py streams: Allow specifying sender during channel email generation. 2025-01-08 12:17:16 -08:00
test_email_notifications.py email_notifications: Prevent html2text from mangling Unicode. 2024-10-30 09:49:23 -07:00
test_embedded_bot_system.py ruff: Fix SIM117 Use a single with statement with multiple contexts. 2024-07-14 13:48:32 -07:00
test_event_queue.py queue: Rename queue_json_publish to queue_json_publish_rollback_unsafe. 2024-12-06 09:23:02 -08:00
test_event_system.py initial_state_data: Add support for empty topic name. 2025-01-07 17:24:00 -08:00
test_events.py initial_state_data: Add support for empty topic name. 2025-01-07 17:24:00 -08:00
test_example.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_external.py ruff: Fix SIM117 Use a single with statement with multiple contexts. 2024-07-14 13:48:32 -07:00
test_github.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_health.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_home.py register: Add realm_empty_topic_display_name in /register response. 2025-01-07 17:24:00 -08:00
test_i18n.py i18n: Update translation data from Transifex. 2024-11-18 16:12:31 -08:00
test_import_export.py thumbnail: Generate a transcoded high-res version of HEIC/TIFF images. 2025-01-09 09:10:28 -08:00
test_integrations_dev_panel.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_integrations.py refactor: Relocate screenshots scripts to new tools/screenshots dir. 2024-05-14 16:17:44 -07:00
test_internet.py ruff: Fix B017 assertRaises(Exception): should be considered evil. 2022-11-03 12:10:15 -07:00
test_invite.py typos: Fix typos caught by typos and mwic. 2024-12-24 19:15:36 -08:00
test_legacy_subject.py tests: Consistently JSON-encode ‘to’ parameter 2022-09-13 11:05:37 -07:00
test_link_embed.py queue: Rename queue_json_publish to queue_json_publish_rollback_unsafe. 2024-12-06 09:23:02 -08:00
test_management_commands.py management: Add option to reset all the active realms to a level. 2024-11-05 08:51:06 -08:00
test_markdown_thumbnail.py thumbnail: Generate a transcoded high-res version of HEIC/TIFF images. 2025-01-09 09:10:28 -08:00
test_markdown.py mention: Allow silent mentioning system user groups. 2025-01-07 11:28:44 -08:00
test_mattermost_importer.py data_import: Add migration status file to converted exports. 2024-11-08 15:52:45 -08:00
test_message_delete.py queue: Rename queue_json_publish to queue_json_publish_rollback_unsafe. 2024-12-06 09:23:02 -08:00
test_message_dict.py fetch_messages: Add support for empty topic names. 2025-01-07 17:24:00 -08:00
test_message_edit_notifications.py queue: Rename queue_json_publish to queue_json_publish_rollback_unsafe. 2024-12-06 09:23:02 -08:00
test_message_edit.py fetch_messages: Add support for empty topic names. 2025-01-07 17:24:00 -08:00
test_message_fetch.py fetch_messages: Add support for empty topic names. 2025-01-07 17:24:00 -08:00
test_message_flags.py initial_state_data: Add support for empty topic name. 2025-01-07 17:24:00 -08:00
test_message_move_stream.py streams: Send message on changing stream posting permission. 2025-01-07 12:17:35 -08:00
test_message_move_topic.py message_send: Add support to send message with an empty topic name. 2025-01-07 17:24:00 -08:00
test_message_notification_emails.py handle_missedmessage_emails: Update codepath to queue event on commit. 2024-12-04 12:14:23 -08:00
test_message_send.py fetch_messages: Add support for empty topic names. 2025-01-07 17:24:00 -08:00
test_message_topics.py initial_state_data: Add support for empty topic name. 2025-01-07 17:24:00 -08:00
test_messages.py direct_message_group: Add new group_size field. 2024-08-23 11:09:41 -07:00
test_middleware.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_migrations.py CVE-2024-27286: Delete dangling UserMessage rows. 2024-03-19 18:22:24 -04:00
test_mirror_users.py ruff: Fix UP006 Use list instead of List for type annotation. 2024-07-13 22:28:22 -07:00
test_muted_users.py audit-log: Move user muted event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
test_new_users.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_notification_data.py mention: Do not include deactivated users in group mention data. 2024-10-10 11:37:44 -07:00
test_onboarding_steps.py topic: Add a first-time explanation for "Resolve topic". 2024-10-09 18:12:55 -07:00
test_onboarding.py
test_openapi.py fetch_messages: Add support for empty topic names. 2025-01-07 17:24:00 -08:00
test_outgoing_http.py requirements: Upgrade Python requirements. 2024-09-24 19:27:21 -07:00
test_outgoing_webhook_interfaces.py ruff: Fix UP006 Use list instead of List for type annotation. 2024-07-13 22:28:22 -07:00
test_outgoing_webhook_system.py message_cache: Use the sender’s recipient_id for incoming 1:1 DMs. 2024-12-11 12:05:03 -08:00
test_populate_db.py populate_db: Import timedelta from its canonical module. 2023-03-05 14:46:28 -08:00
test_presence.py presence: Add history_limit_days param to the API. 2024-09-10 13:15:35 -07:00
test_push_notifications.py remote_server_post_analytics: Add durable=True to outermost transaction. 2024-11-01 16:41:15 -07:00
test_queue_worker.py streams: Allow specifying sender during channel email generation. 2025-01-08 12:17:16 -08:00
test_queue.py queue: Rename queue_json_publish to queue_json_publish_rollback_unsafe. 2024-12-06 09:23:02 -08:00
test_rate_limiter.py ruff: Fix UP006 Use list instead of List for type annotation. 2024-07-13 22:28:22 -07:00
test_reactions.py api: Remove user object from reactions objects in the API. 2024-12-13 09:58:25 -08:00
test_read_receipts.py refactor: Rename huddle to direct_message_group in non API. 2024-07-04 07:56:31 -07:00
test_realm_domains.py models: Extract zerver.models.realms. 2023-12-16 22:08:44 -08:00
test_realm_emoji.py settings: Add can_add_custom_emoji_group realm setting. 2024-10-13 16:09:04 -07:00
test_realm_export.py queue: Rename queue_json_publish to queue_json_publish_rollback_unsafe. 2024-12-06 09:23:02 -08:00
test_realm_linkifiers.py audit-log: Move realm event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
test_realm_playgrounds.py models: Extract zerver.models.realms. 2023-12-16 22:08:44 -08:00
test_realm.py email: Update realm deactivation email for data deletion information. 2025-01-08 16:27:11 -08:00
test_recipient_parsing.py scheduled_messages: Migrate to typed_endpoint. 2024-08-20 10:03:22 -07:00
test_redis_utils.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
test_report.py zerver: Remove now-unused report/ endpoints. 2023-05-09 13:16:28 -07:00
test_retention.py delete_message: Fix recipients of "delete_message" event. 2024-10-07 11:35:06 -07:00
test_rocketchat_importer.py data_import: Add migration status file to converted exports. 2024-11-08 15:52:45 -08:00
test_saved_snippets.py saved_snippets: Add backend for saved snippets. 2024-09-24 15:27:58 -07:00
test_scheduled_messages.py scheduled_messages: Remove separate logfile. 2024-10-04 14:22:37 -07:00
test_scim.py scim: Extract ROLE_TYPE_TO_NAME dict to UserProfile. 2024-08-20 11:53:24 -07:00
test_send_email.py ruff: Fix SIM117 Use a single with statement with multiple contexts. 2024-07-14 13:48:32 -07:00
test_server_settings.py settings: Make SHARED_SECRET mandatory. 2022-08-25 12:13:03 -07:00
test_service_bot_system.py zerver: Rename some message_type variables to recipient_type. 2024-09-10 12:50:28 -07:00
test_sessions.py ruff: Fix UP035 Import from collections.abc, typing instead. 2024-07-13 22:28:22 -07:00
test_settings.py users: Allow zero-width-joiners in user names. 2024-09-03 16:34:55 -07:00
test_signup.py portico: Improve layout of /go page. 2024-12-17 23:24:00 -08:00
test_slack_importer.py slack_import: Make check_token_access more flexible. 2024-12-18 16:11:31 -08:00
test_slack_message_conversion.py slack_data_import: Fix incorrect hyperlink conversion. 2024-10-30 09:48:32 -07:00
test_soft_deactivation.py audit-log: Move user event types to AuditLogEventType enum. 2024-09-09 11:50:13 -07:00
test_subdomains.py ruff: Fix UP035 Import from collections.abc, typing instead. 2024-07-13 22:28:22 -07:00
test_submessage.py queue: Rename queue_json_publish to queue_json_publish_rollback_unsafe. 2024-12-06 09:23:02 -08:00
test_subs.py streams: Allow specifying sender during channel email generation. 2025-01-08 12:17:16 -08:00
test_templates.py css: Use classname instead of div selector for .blocks. 2024-08-13 22:36:35 -07:00
test_thumbnail.py thumbnail: Generate a transcoded high-res version of HEIC/TIFF images. 2025-01-09 09:10:28 -08:00
test_timeout.py timeout: Rename to unsafe_timeout. 2024-04-18 11:50:38 -07:00
test_timestamp.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_timezone.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_tornado.py ruff: Fix UP035 Import from collections.abc, typing instead. 2024-07-13 22:28:22 -07:00
test_transfer.py emoji: Pass down content-type, rather than guessing from extension. 2024-07-12 13:26:47 -07:00
test_tusd.py tusd: Allow user to upload files during preregistration. 2024-12-02 10:21:45 -08:00
test_tutorial.py user_profile: Remove 'tutorial_status' field. 2024-08-15 13:31:40 -07:00
test_typed_endpoint_validators.py zerver: Migrate some files to typed_endpoint. 2024-07-20 15:46:48 -07:00
test_typed_endpoint.py ruff: Enable B008 function-call-in-default-argument. 2024-11-10 22:43:55 -08:00
test_typing.py ruff: Fix SIM117 Use a single with statement with multiple contexts. 2024-07-14 13:48:32 -07:00
test_upload_local.py upload: Allow filtering to just a prefix (e.g. a realm id). 2024-09-26 12:01:11 -07:00
test_upload_s3.py upload: Allow filtering to just a prefix (e.g. a realm id). 2024-09-26 12:01:11 -07:00
test_upload.py typos: Fix typos caught by typos and mwic. 2024-12-24 19:15:36 -08:00
test_url_decoding.py url_decoding: Add 'is_same_server_message_link' function. 2024-06-17 10:42:32 -07:00
test_urls.py buttons: Add redesigned button styles. 2024-12-04 11:08:33 -08:00
test_user_groups.py streams: Send message on changing stream posting permission. 2025-01-07 12:17:35 -08:00
test_user_status.py user_status: Update do_update_user_status to send event on commit. 2024-07-31 22:33:52 -07:00
test_user_topics.py message: Add test coverage for 'set_visibility_policy_possible'. 2024-09-24 14:32:42 -07:00
test_users.py ruff: Fix PLC0206 Extracting value from dictionary without calling .items(). 2024-12-21 21:06:53 -08:00
test_validators.py endpoints: Remove the has_request_variables decorator. 2024-09-05 16:02:12 -07:00
test_webhooks_common.py ruff: Fix UP006 Use list instead of List for type annotation. 2024-07-13 22:28:22 -07:00
test_widgets.py ruff: Fix UP006 Use list instead of List for type annotation. 2024-07-13 22:28:22 -07:00
test_zcommand.py zcommand: Rename night->dark and day->light in the color scheme backend. 2024-06-30 22:45:26 -07:00
test_zephyr.py ruff: Bump target-version from py38 to py310. 2024-07-13 22:28:22 -07:00
test_zulip_update_announcements.py refactor: Rename huddle to direct_message_group in non API. 2024-07-04 07:56:31 -07:00