zulip/zerver/tests
Daniil Fadeev 2f203f4de1 emails: Inline CSS in emails in build_email.
Previously, we had an architecture where CSS inlining for emails was
done at provision time in inline_email_css.py. This was necessary
because the library we were using for this, Premailer, was extremely
slow, and doing the inlining for every outgoing email would have been
prohibitively expensive.

Now that we've migrated to a more modern library that inlines the
small amount of CSS we have into emails nearly instantly, we are able
to remove the complex architecture built to work around Premailer
being slow and just do the CSS inlining as the final step in sending
each individual email.

This has several significant benefits:

* Removes a fiddly provisioning step that made the edit/refresh cycle
  for modifying email templates confusing; there's no longer a CSS
  inlining step that, if you forget to do it, results in your testing a
  stale variant of the email templates.
* Fixes internationalization problems related to translators working
  with pre-CSS-inlined emails, and then Django trying to apply the
  translators to the post-CSS-inlined version.
* Makes the send_custom_email pipeline simpler and easier to improve.

Signed-off-by: Daniil Fadeev <fadeevd@zulip.com>
2023-04-05 12:22:29 -07:00
..
fixtures emails: Inline CSS in emails in build_email. 2023-04-05 12:22:29 -07:00
images
__init__.py
test_alert_words.py tests: Refactor away result.json() calls with helpers. 2022-06-06 23:06:00 -07:00
test_attachments.py upload: Rename delete_message_image to use word "attachment". 2023-03-02 16:36:19 -08:00
test_audit_log.py user_settings: Create RealmAuditLog entries for all user settings. 2023-03-23 10:06:47 -07:00
test_auth_backends.py backend-auth: Add user ID to fetch api key responses. 2023-04-04 10:54:49 -07:00
test_bots.py response: Implement ignored parameters with MutableJsonResponse class. 2023-03-06 10:33:13 -08:00
test_cache.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_compatibility.py ruff: Fix RSE102 Unnecessary parentheses on raised exception. 2023-02-04 16:34:55 -08:00
test_create_video_call.py tests: Refactor away result.json() calls with helpers. 2022-06-06 23:06:00 -07:00
test_custom_profile_data.py settings: Add backend code for using user email_address_visibility setting. 2023-02-10 17:35:49 -08:00
test_data_types.py
test_decorators.py response: Implement ignored parameters with MutableJsonResponse class. 2023-03-06 10:33:13 -08:00
test_digest.py black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
test_docs.py web: Save two 301 redirects from /privacy to /privacy/ to /policies/privacy. 2023-03-24 14:51:01 -07:00
test_drafts.py test_draft: Avoid inference with type annotation. 2022-07-26 18:00:24 -07:00
test_email_change.py settings: Add backend code for using user email_address_visibility setting. 2023-02-10 17:35:49 -08:00
test_email_log.py tests: Remove `FORWARD_ADDRESS_CONFIG_FILE` created in test. 2022-07-21 15:25:11 -07:00
test_email_mirror.py upload: Rename upload_message_file to use word "attachment". 2023-03-02 16:36:19 -08:00
test_email_notifications.py emails: Inline CSS in emails in build_email. 2023-04-05 12:22:29 -07:00
test_embedded_bot_system.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_event_queue.py user_groups: Use check_add_user_group instead in test cases. 2023-03-27 09:05:00 -07:00
test_event_system.py test_helpers: Rename reset_emails_in_zulip_realm. 2023-03-01 12:17:11 -08:00
test_events.py user_groups: Use check_add_user_group instead in test cases. 2023-03-27 09:05:00 -07:00
test_example.py users: Always pass "delivery_email" field in user objects. 2023-02-10 17:35:49 -08:00
test_external.py test_classes: Add submit_realm_creation_form helper. 2023-03-27 15:44:42 -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_gitter_importer.py ruff: Fix C405 Unnecessary `list` literal (rewrite as a `set` literal). 2022-11-03 12:10:15 -07:00
test_home.py sentry: Add frontend event monitoring. 2023-03-07 10:51:45 -08:00
test_hotspots.py
test_i18n.py auth: Add @require_post to remote_user_jwt. 2023-02-03 15:23:35 -08:00
test_import_export.py user_topics: Update 'set visibility policy' codepath for bulk db operations. 2023-03-29 09:50:06 -07:00
test_integrations.py
test_integrations_dev_panel.py black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
test_internet.py ruff: Fix B017 `assertRaises(Exception):` should be considered evil. 2022-11-03 12:10:15 -07:00
test_invite.py emails: Replace Premailer with CSS-inline. 2023-04-03 15:15:05 -07:00
test_legacy_subject.py tests: Consistently JSON-encode ‘to’ parameter 2022-09-13 11:05:37 -07:00
test_link_embed.py ruff: Fix ISC003 Explicitly concatenated string. 2023-01-04 16:25:07 -08:00
test_logging_handlers.py Fix typos caught by typos. 2023-01-03 11:09:50 -08:00
test_management_commands.py export: Make --deactivate-realm exports be imported as active. 2023-04-03 16:08:43 -07:00
test_markdown.py user_groups: Use check_add_user_group instead in test cases. 2023-03-27 09:05:00 -07:00
test_mattermost_importer.py
test_message_dict.py models: Remove type prefixes from __str__ values. 2023-03-08 22:56:55 -08:00
test_message_edit.py user_topics: Update test_edit_muted_topic to verify events sent. 2023-03-29 09:50:06 -07:00
test_message_edit_notifications.py
test_message_fetch.py user_topics: Update lib functions to work with any visibility_policy. 2023-03-29 09:50:06 -07:00
test_message_flags.py user_topics: Introduce visibility policy enum subclass in models.py. 2023-03-14 17:50:45 -07:00
test_message_send.py models: Remove type prefixes from __str__ values. 2023-03-08 22:56:55 -08:00
test_message_topics.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_messages.py message send: Ignore alert words for presence idle users. 2023-01-06 17:08:20 -08:00
test_middleware.py help: Improve "Deactivate your account" help page. 2023-03-15 15:32:47 -07:00
test_migrations.py models: Add denormalized .realm column to Message. 2022-10-07 10:09:38 -07:00
test_mirror_users.py test_helpers: Rename reset_emails_in_zulip_realm. 2023-03-01 12:17:11 -08:00
test_muted_users.py mute user: Remove unnecessary check for double muting. 2023-02-20 21:04:13 -08:00
test_new_users.py create-user: Remove notifications sent to admin realm. 2023-03-13 12:28:26 -07:00
test_notification_data.py user_groups: Use check_add_user_group instead in test cases. 2023-03-27 09:05:00 -07:00
test_onboarding.py
test_openapi.py docs: Remove spaces before commas. 2023-02-22 17:17:25 -08:00
test_outgoing_http.py requirements: Upgrade Python requirements. 2022-06-01 16:01:54 -07:00
test_outgoing_webhook_interfaces.py
test_outgoing_webhook_system.py settings: Add backend code for using user email_address_visibility setting. 2023-02-10 17:35:49 -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 models: Remove type prefixes from __str__ values. 2023-03-08 22:56:55 -08:00
test_push_notifications.py user_groups: Use check_add_user_group instead in test cases. 2023-03-27 09:05:00 -07:00
test_queue.py
test_queue_worker.py ruff: Fix SIM105 Use `contextlib.suppress` instead of try-except-pass. 2023-01-23 11:18:36 -08:00
test_rate_limiter.py ruff: Fix RSE102 Unnecessary parentheses on raised exception. 2023-02-04 16:34:55 -08:00
test_reactions.py tests: Consistently JSON-encode ‘to’ parameter 2022-09-13 11:05:37 -07:00
test_read_receipts.py muted users: Make file naming consistent. 2023-02-10 15:39:57 -08:00
test_realm.py user_groups: Add "Nobody" system user group. 2023-03-28 14:26:22 -07:00
test_realm_domains.py realm_domains: Allow only owners to add, edit or delete domains. 2022-09-16 15:27:52 -07:00
test_realm_emoji.py models: Remove type prefixes from __str__ values. 2023-03-08 22:56:55 -08:00
test_realm_export.py realm_export: Add transaction.atomic to export_realm. 2023-01-26 10:49:19 -08:00
test_realm_linkifiers.py tests: Refactor away result.json() calls with helpers. 2022-06-06 23:06:00 -07:00
test_realm_playgrounds.py rest: Restrict access to json views via basic auth. 2022-11-04 14:44:07 -07:00
test_redis_utils.py typing: Fix missing attribtute of RedisUtilsTest. 2022-06-23 22:05:12 -07:00
test_report.py report: Use ZULIP_VERSION rather than shelling out to git every time. 2023-03-07 10:51:45 -08:00
test_retention.py uploads: Split out S3 and local file backends into separate files. 2023-01-09 18:23:58 -05:00
test_rocketchat_importer.py data_import: Stop tar'ing up converted data. 2023-02-26 17:42:01 -08:00
test_scim.py test_scim: Add test for missing or wrong authentication. 2022-11-05 15:13:46 -07:00
test_send_email.py docs: Document how to use SMTP without authentication. 2023-02-27 11:59:48 -08:00
test_server_settings.py settings: Make SHARED_SECRET mandatory. 2022-08-25 12:13:03 -07:00
test_service_bot_system.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_sessions.py black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
test_settings.py user_settings: Automate 'Include realm name in message email subject'. 2023-03-14 17:48:57 -07:00
test_signup.py codespell: Fix newly found typos. 2023-04-03 22:39:21 -07:00
test_slack_importer.py data_import: Stop tar'ing up converted data. 2023-02-26 17:42:01 -08:00
test_slack_message_conversion.py
test_soft_deactivation.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_subdomains.py subdomains: Extend tests for for same-host when STATIC_URL has domain. 2023-02-14 17:17:06 -05:00
test_submessage.py
test_subs.py user_groups: Use check_add_user_group instead in test cases. 2023-03-27 09:05:00 -07:00
test_templates.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_thumbnail.py typing: Access url via key "Location" instead of attribute "url". 2022-05-30 11:59:47 -07:00
test_timeout.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08: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: Fix DTZ001 `datetime.datetime()` without `tzinfo` argument. 2023-01-04 16:25:07 -08:00
test_tornado.py test_tornado: Avoid deprecated AsyncHTTPTestCase. 2022-07-05 17:54:17 -07:00
test_transfer.py upload: Rename upload_message_file to use word "attachment". 2023-03-02 16:36:19 -08:00
test_tutorial.py web: Save a needless 301 redirect from /apps to /apps/. 2023-03-24 14:51:01 -07:00
test_typing.py private-messages: Update translated backend strings use "direct message". 2023-02-24 11:47:26 -08:00
test_upload.py requirements: Upgrade Python requirements. 2023-04-03 22:39:21 -07:00
test_upload_local.py tests: Update ZulipTestCase.tearDown to remove local uploads. 2023-03-28 14:38:06 -07:00
test_upload_s3.py delete_old_unclaimed_attachments: Add flag to clean up storage. 2023-03-02 16:36:19 -08:00
test_urls.py web: Save a 301 redirect from /help to /help/. 2023-03-24 14:51:01 -07:00
test_user_groups.py user_groups: Add "Nobody" system user group. 2023-03-28 14:26:22 -07:00
test_user_status.py user-status: Stop updating the UserStatus model for `away` updates. 2022-09-23 12:27:54 -07:00
test_user_topics.py user_topics: Update test to verify end-to-end behaviour. 2023-04-03 22:31:49 -07:00
test_users.py actions: Implement do_delete_user_preserving_messages function. 2023-03-29 12:51:21 -07:00
test_webhooks_common.py black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
test_widgets.py tests: Consistently JSON-encode ‘to’ parameter 2022-09-13 11:05:37 -07:00
test_zcommand.py tests: Refactor away result.json() calls with helpers. 2022-06-06 23:06:00 -07:00
test_zephyr.py zephyr: Check PERSONAL_ZMIRROR_SERVER before updating cache. 2022-08-12 17:08:04 -07:00