zulip/zerver/tests
Zixuan James Li 268f858f39 linkifier: Support URL templates for linkifiers.
This swaps out url_format_string from all of our APIs and replaces it
with url_template. Note that the documentation changes in the following
commits  will be squashed with this commit.

We change the "url_format" key to "url_template" for the
realm_linkifiers events in event_schema, along with updating
LinkifierDict. "url_template" is the name chosen to normalize
mixed usages of "url_format_string" and "url_format" throughout
the backend.

The markdown processor is updated to stop handling the format string
interpolation and delegate the task template expansion to the uri_template
library instead.

This change affects many test cases. We mostly just replace "%(name)s"
with "{name}", "url_format_string" with "url_template" to make sure that
they still pass. There are some test cases dedicated for testing "%"
escaping, which aren't relevant anymore and are subject to removal.
But for now we keep most of them as-is, and make sure that "%" is always
escaped since we do not use it for variable substitution any more.

Since url_format_string is not populated anymore, a migration is created
to remove this field entirely, and make url_template non-nullable since
we will always populate it. Note that it is possible to have
url_template being null after migration 0422 and before 0424, but
in practice, url_template will not be None after backfilling and the
backend now is always setting url_template.

With the removal of url_format_string, RealmFilter model will now be cleaned
with URL template checks, and the old checks for escapes are removed.

We also modified RealmFilter.clean to skip the validation when the
url_template is invalid. This avoids raising mulitple ValidationError's
when calling full_clean on a linkifier. But we might eventually want to
have a more centric approach to data validation instead of having
the same validation in both the clean method and the validator.

Fixes #23124.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
2023-04-19 12:20:49 -07:00
..
fixtures emails: Inline CSS in emails in build_email. 2023-04-05 12:22:29 -07:00
images emoji: Support animated PNGs. 2022-03-15 12:47:21 -07:00
__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 linkifier: Support URL templates for linkifiers. 2023-04-19 12:20:49 -07:00
test_auth_backends.py auth: Rewrite data model for tracking enabled auth backends. 2023-04-18 09:22:56 -07:00
test_bots.py test_classes: Rename and refactor 'tornado_redirected_to_list'. 2023-04-07 09:45:26 -07: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 emails: Add new onboarding email with guide for organization type. 2023-04-10 08:38:09 -07:00
test_email_mirror.py error-bot: Remove ERROR_BOT support. 2023-04-13 14:59:58 -07:00
test_email_notifications.py emails: Add new onboarding email with guide for organization type. 2023-04-10 08:38:09 -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 linkifier: Support URL templates for linkifiers. 2023-04-19 12:20:49 -07:00
test_events.py linkifier: Support URL templates for linkifiers. 2023-04-19 12:20:49 -07:00
test_example.py emails: Add new onboarding email with guide for organization type. 2023-04-10 08:38:09 -07: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 auth: Remove Realm.AUTHENTICATION_FLAGS class attribute. 2023-04-18 09:22:56 -07:00
test_home.py auth_enabled_helper: Add realm_authentication_methods argument. 2023-04-18 09:22:56 -07:00
test_hotspots.py actions: Split out zerver.actions.create_user. 2022-04-14 17:14:35 -07:00
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 error_notify: Drop any remaining browser-side errors in RabbitMQ queue. 2023-04-13 14:59:58 -07: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 linkifier: Support URL templates for linkifiers. 2023-04-19 12:20:49 -07:00
test_mattermost_importer.py tests: Verify emoji codes. 2021-12-06 13:22:47 -08:00
test_message_dict.py linkifier: Support URL templates for linkifiers. 2023-04-19 12:20:49 -07:00
test_message_edit.py user_topics: Update 'do_update_message' to handle 'merge userTopic states'. 2023-04-18 16:40:57 -07:00
test_message_edit_notifications.py push_notifications: Ensure notifications are on for the remove codepath. 2022-03-09 16:33:51 -08:00
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 test_classes: Rename and refactor 'tornado_redirected_to_list'. 2023-04-07 09:45:26 -07:00
test_message_send.py message-type: Add support for "direct" as value for type parameter. 2023-04-18 12:29:33 -07: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 report_error: Remove API endpoint for client error reporting. 2023-04-13 14:59:58 -07:00
test_migrations.py migrations: Backfill url_template from url format string. 2023-04-19 12:20:49 -07:00
test_mirror_users.py message: Use `recipient_type_name` for API message type references. 2023-04-18 12:29:33 -07: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 urls: Move jwt_fetch_api_key endpoint to v1_api_mobile_patterns. 2023-04-18 15:44:31 -07:00
test_outgoing_http.py test: Replace occurences of `uri` with `url`. 2023-04-08 16:27:55 -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 zilencer: Delete duplicate remote push registrations. 2023-04-13 15:17:20 -07:00
test_queue.py test_queue_error_json: Acknowledge the received message. 2022-01-21 13:38:13 -08:00
test_queue_worker.py workers: Rewrite missedmessage_emails with a worker thread. 2023-04-10 17:38:08 -07:00
test_rate_limiter.py ruff: Fix RSE102 Unnecessary parentheses on raised exception. 2023-02-04 16:34:55 -08:00
test_reactions.py test_classes: Rename and refactor 'tornado_redirected_to_list'. 2023-04-07 09:45:26 -07:00
test_read_receipts.py muted users: Make file naming consistent. 2023-02-10 15:39:57 -08:00
test_realm.py user_settings: Add web_mark_read_on_scroll_policy field. 2023-04-18 18:32:02 -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 linkifier: Support URL templates for linkifiers. 2023-04-19 12:20:49 -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_error: Remove API endpoint for client error reporting. 2023-04-13 14:59:58 -07: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: Add web_mark_read_on_scroll_policy field. 2023-04-18 18:32:02 -07:00
test_signup.py auth: Rewrite data model for tracking enabled auth backends. 2023-04-18 09:22:56 -07:00
test_slack_importer.py auth: Rewrite data model for tracking enabled auth backends. 2023-04-18 09:22:56 -07: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_classes: Rename and refactor 'tornado_redirected_to_list'. 2023-04-07 09:45:26 -07:00
test_subs.py error-bot: Remove ERROR_BOT support. 2023-04-13 14:59:58 -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 test: Replace occurences of `uri` with `url`. 2023-04-08 16:27:55 -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 message-type: Add support for "direct" as value for type parameter. 2023-04-18 12:29:33 -07:00
test_upload.py test: Replace occurences of `uri` with `url`. 2023-04-08 16:27:55 -07:00
test_upload_local.py test: Replace occurences of `uri` with `url`. 2023-04-08 16:27:55 -07:00
test_upload_s3.py test: Replace occurences of `uri` with `url`. 2023-04-08 16:27:55 -07:00
test_urls.py auth: Remove Realm.AUTHENTICATION_FLAGS class attribute. 2023-04-18 09:22:56 -07:00
test_user_groups.py error-bot: Remove ERROR_BOT support. 2023-04-13 14:59:58 -07:00
test_user_status.py test_classes: Rename and refactor 'tornado_redirected_to_list'. 2023-04-07 09:45:26 -07:00
test_user_topics.py test_classes: Rename and refactor 'tornado_redirected_to_list'. 2023-04-07 09:45:26 -07:00
test_users.py auth: Rewrite data model for tracking enabled auth backends. 2023-04-18 09:22:56 -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