zulip/zerver/tests
Sahil Batra aeb9a27d0e message: Ignore messages in unsubcribed streams when marking them unread.
Zulip's unread messages design has an invariant that all unread stream
messages must be in streams the user is subscribed to. For example, We
do not include the unread messages from unsubscribed streams in the
"unread_msgs" data structure in "/register" response and we mark all
unread messages as read when unsubscribing a user from a stream.

Previously, the mark as unread endpoint allowed violating that
invariant, allowing you to mark messages in any stream as unread.

Doing so caused the "message_details" data structures sent with
"update_message_flags" events to not contain messages from
unsubscribed streams, even though those messages were present in the
set of message IDs. These malformed events, in turn, caused exceptions
in the frontend's processing of such an event.

This change is paired with a separate UI change to not offer the "Mark
as unread" feature in such streams; with just this commit, that will
silently fail.

With some additions to the tests by tabbott.
2022-11-02 14:49:23 -07:00
..
fixtures tests: Update tests to use example profile picture. 2022-10-31 14:36:54 -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 tests: Refactor away result.json() calls with helpers. 2022-06-06 23:06:00 -07:00
test_audit_log.py message_edit: Send only changed settings in event data and api response. 2022-09-28 11:47:40 -07:00
test_auth_backends.py tests: Update tests to use example profile picture. 2022-10-31 14:36:54 -07:00
test_bots.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_cache.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_compatibility.py python: Reformat with Black 22 (stable). 2022-02-18 18:03:13 -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 test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_data_types.py
test_decorators.py do_deactivate_user: Revoke sessions in transaction.on_commit(). 2022-10-11 10:49:07 -07:00
test_digest.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_docs.py templates: Replace default HTML title and meta-description elements. 2022-09-19 20:17:17 -07:00
test_drafts.py test_draft: Avoid inference with type annotation. 2022-07-26 18:00:24 -07:00
test_email_change.py user-settings: Make default `None` for name, email and password changes. 2022-08-08 15:37:41 -07: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 email_mirror: Remove limits (expiry, max uses) to improve usability. 2022-09-16 18:07:28 -07:00
test_email_notifications.py url_encoding: Use user name instead of email in personal_narrow_url. 2022-10-28 09:47:43 -07:00
test_embedded_bot_system.py tests: Ensure stream senders get a UserMessage row. 2021-12-10 09:40:04 -08:00
test_event_queue.py tornado: Raise the same error for nonexistent and unauthorized queues. 2022-09-20 15:20:36 -07:00
test_event_system.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_events.py message_edit: Send only changed settings in event data and api response. 2022-09-28 11:47:40 -07:00
test_example.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_external.py tests: Consistently JSON-encode ‘to’ parameter 2022-09-13 11:05:37 -07:00
test_github.py downloads: Serve desktop downloads from desktop-download.zulip.com. 2021-08-28 23:08:45 -07:00
test_gitter_importer.py import: Fix timestamp check in long_term_idle_helper. 2022-08-29 15:18:00 -07:00
test_home.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_hotspots.py actions: Split out zerver.actions.create_user. 2022-04-14 17:14:35 -07:00
test_i18n.py tests: Replace `HttpResponse` with `TestHttpResponse.` 2022-06-08 11:25:03 -07:00
test_import_export.py models: Add denormalized .realm column to Message. 2022-10-07 10:09:38 -07:00
test_integrations.py
test_integrations_dev_panel.py middleware: Pass unhandled API exceptions through to the test suite. 2022-06-23 19:23:08 -07:00
test_internet.py
test_legacy_subject.py tests: Consistently JSON-encode ‘to’ parameter 2022-09-13 11:05:37 -07:00
test_link_embed.py python: Clean up getattr, setattr, delattr calls with literal names. 2022-10-10 08:40:28 -07:00
test_logging_handlers.py python: Clean up getattr, setattr, delattr calls with literal names. 2022-10-10 08:40:28 -07:00
test_management_commands.py realm_creation: Rework error pages. 2022-10-31 17:35:06 -07:00
test_markdown.py api-docs: Update examples of queue_id for uuid format. 2022-10-13 10:08:42 -07:00
test_mattermost_importer.py tests: Verify emoji codes. 2021-12-06 13:22:47 -08:00
test_message_dict.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_message_edit.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -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 test_helpers: Tighten type annotation for queries_captured. 2022-10-17 11:32:52 -07:00
test_message_flags.py message: Ignore messages in unsubcribed streams when marking them unread. 2022-11-02 14:49:23 -07:00
test_message_send.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_message_topics.py delete_topic: Use the same timeout pattern as /mark_all_as_read. 2022-11-02 16:50:06 -04:00
test_messages.py actions: Split out zerver.actions.message_send. 2022-04-14 17:14:34 -07:00
test_middleware.py templates: Improve footer content on documentation pages. 2022-09-27 11:13:55 -07:00
test_migrations.py models: Add denormalized .realm column to Message. 2022-10-07 10:09:38 -07:00
test_mirror_users.py actions: Split out zerver.actions.message_send. 2022-04-14 17:14:34 -07:00
test_muting_topics.py stream_topic: Refactor user_ids_muting_topic. 2022-09-27 17:18:48 -07:00
test_muting_users.py tests: Refactor away result.json() calls with helpers. 2022-06-06 23:06:00 -07:00
test_new_users.py tools: Add missing spaces in concatenated string literals. 2022-10-24 14:52:49 -07:00
test_notification_data.py notifications: Don't enqueue notifications for bots. 2022-01-03 09:55:06 -08:00
test_onboarding.py
test_openapi.py test_openapi: Fix status code passed to validate_... in test_attributes. 2022-10-27 16:59:54 -07:00
test_outgoing_http.py requirements: Upgrade Python requirements. 2022-06-01 16:01:54 -07:00
test_outgoing_webhook_interfaces.py outgoing webhooks: Fix inconsistencies with Slack's API. 2021-09-23 11:19:20 -07:00
test_outgoing_webhook_system.py testing: 100% code coverage for zerver/lib/outgoing_webhook.py. 2022-05-17 13:51:00 -07:00
test_populate_db.py populate_db: Add support for creating messages older than 5 days ago. 2022-04-25 16:16:15 -07:00
test_presence.py user-presence: Refactor function names with "status" for clarity. 2022-09-23 12:27:54 -07:00
test_push_notifications.py models: Add denormalized .realm column to Message. 2022-10-07 10:09:38 -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 invites: Use expiration time in minutes instead of days. 2022-04-20 13:31:37 -07:00
test_rate_limiter.py test_rate_limiter: Make test_add_remove_rule clean up its rules. 2022-08-10 16:30:39 -07:00
test_reactions.py tests: Consistently JSON-encode ‘to’ parameter 2022-09-13 11:05:37 -07:00
test_read_receipts.py read_receipts: Exclude muted users from read receipts. 2022-09-16 16:19:54 -07:00
test_realm.py message_edit: Send only changed settings in event data and api response. 2022-09-28 11:47:40 -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 cache: Avoid flushing invalid cache for realm emoji. 2022-08-09 14:44:28 -07:00
test_realm_export.py realm_export: Improve estimate of data export size. 2022-09-16 14:54:45 -07: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 actions: Split out zerver.actions.realm_playgrounds. 2022-04-14 17:14:30 -07:00
test_redis_utils.py typing: Fix missing attribtute of RedisUtilsTest. 2022-06-23 22:05:12 -07:00
test_report.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
test_retention.py retention: Use Message.realm to simplify private message query. 2022-10-31 10:23:57 -07:00
test_rocketchat_importer.py emoji: Finish script to generate emoji_names.py with CLDR data. 2022-10-04 12:29:35 -07:00
test_scim.py scim: Further slim down SCIMClient removing unused attributes. 2022-09-30 15:34:50 +02:00
test_send_email.py test_send_email: Fix the to_email argument to pass str. 2022-07-15 14:00:56 -07:00
test_server_settings.py settings: Make SHARED_SECRET mandatory. 2022-08-25 12:13:03 -07:00
test_service_bot_system.py typing: Tighten type annotations for patch_queue_publish. 2022-08-22 15:46:16 -07:00
test_sessions.py home: For web public realms, skip login for spectators. 2022-04-28 12:34:29 -07:00
test_settings.py user_settings: Add user setting to control the user list style. 2022-09-09 16:30:54 -07:00
test_signup.py realm_creation: Rework error pages. 2022-10-31 17:35:06 -07:00
test_slack_importer.py test_slack_importer: Add assertion about message count. 2022-10-07 10:10:01 -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
test_submessage.py actions: Split out zerver.actions.submessage. 2022-04-14 17:14:30 -07:00
test_subs.py markdown: Pass realm down into render_stream_description. 2022-11-01 08:20:47 -07:00
test_templates.py markdown: Rewrite include plugin without markdown-include. 2022-06-26 17:36:31 -07: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 timeout: Add test coverage. 2022-04-07 17:26:01 -07:00
test_timestamp.py docs: Add missing space in “time zone”. 2022-02-24 14:05:12 -08:00
test_timezone.py requirements: Upgrade to Django 4.0. 2022-07-13 16:07:17 -07:00
test_tornado.py test_tornado: Avoid deprecated AsyncHTTPTestCase. 2022-07-05 17:54:17 -07:00
test_transfer.py tests: Disable lazy loading of moto. 2022-09-30 11:19:39 -07:00
test_tutorial.py recent-topics: Update hash for view to be "#recent". 2022-10-25 11:03:44 -07:00
test_typing.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_upload.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_urls.py tests: Move URL redirect tests for portico landing pages. 2022-09-06 14:57:06 -07:00
test_user_groups.py tests: Consistently JSON-encode ‘to’ parameter 2022-09-13 11:05:37 -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_users.py test_classes: Create a dedicate helper for query count check. 2022-10-17 11:32:52 -07:00
test_webhooks_common.py django: Use HttpRequest.headers. 2022-05-13 20:42:20 -07: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