event_schema: Extract check_stream_create.

This commit is contained in:
Steve Howell 2020-07-08 10:53:52 +00:00 committed by Tim Abbott
parent a6796e9e86
commit 14aa87a168
2 changed files with 34 additions and 22 deletions

View File

@ -12,12 +12,30 @@ from zerver.lib.validator import (
check_bool, check_bool,
check_dict_only, check_dict_only,
check_int, check_int,
check_list,
check_none_or,
check_string, check_string,
check_union, check_union,
equals, equals,
) )
from zerver.models import Realm from zerver.models import Realm
# These fields are used for "stream" events, and are included in the
# larger "subscription" events that also contain personal settings.
basic_stream_fields = [
("description", check_string),
("first_message_id", check_none_or(check_int)),
("history_public_to_subscribers", check_bool),
("invite_only", check_bool),
("is_announcement_only", check_bool),
("is_web_public", check_bool),
("message_retention_days", equals(None)),
("name", check_string),
("rendered_description", check_string),
("stream_id", check_int),
("stream_post_policy", check_int),
]
def check_events_dict( def check_events_dict(
required_keys: Sequence[Tuple[str, Validator[object]]], required_keys: Sequence[Tuple[str, Validator[object]]],
@ -96,3 +114,12 @@ def check_realm_update(var_name: str, event: Dict[str, Any],) -> None:
assert isinstance(value, str) assert isinstance(value, str)
else: else:
raise AssertionError(f"Unexpected property type {property_type}") raise AssertionError(f"Unexpected property type {property_type}")
check_stream_create = check_events_dict(
required_keys=[
("type", equals("stream")),
("op", equals("create")),
("streams", check_list(check_dict_only(basic_stream_fields))),
]
)

View File

@ -89,7 +89,12 @@ from zerver.lib.actions import (
remove_members_from_user_group, remove_members_from_user_group,
try_update_realm_custom_profile_field, try_update_realm_custom_profile_field,
) )
from zerver.lib.event_schema import check_events_dict, check_realm_update from zerver.lib.event_schema import (
basic_stream_fields,
check_events_dict,
check_realm_update,
check_stream_create,
)
from zerver.lib.events import apply_events, fetch_initial_state_data, post_process_state from zerver.lib.events import apply_events, fetch_initial_state_data, post_process_state
from zerver.lib.markdown import MentionData from zerver.lib.markdown import MentionData
from zerver.lib.message import render_markdown from zerver.lib.message import render_markdown
@ -140,21 +145,6 @@ from zerver.tornado.event_queue import (
clear_client_event_queues_for_testing, clear_client_event_queues_for_testing,
) )
# These fields are used for "stream" events, and are included in the
# larger "subscription" events that also contain personal settings.
basic_stream_fields = [
('description', check_string),
('first_message_id', check_none_or(check_int)),
('history_public_to_subscribers', check_bool),
('invite_only', check_bool),
('is_announcement_only', check_bool),
('is_web_public', check_bool),
('message_retention_days', equals(None)),
('name', check_string),
('rendered_description', check_string),
('stream_id', check_int),
('stream_post_policy', check_int),
]
class BaseAction(ZulipTestCase): class BaseAction(ZulipTestCase):
def setUp(self) -> None: def setUp(self) -> None:
@ -2605,11 +2595,6 @@ class SubscribeActionTest(BaseAction):
subscription_schema_checker = check_list( subscription_schema_checker = check_list(
check_dict_only(subscription_fields), check_dict_only(subscription_fields),
) )
stream_create_schema_checker = check_events_dict([
('type', equals('stream')),
('op', equals('create')),
('streams', check_list(check_dict_only(basic_stream_fields))),
])
add_schema_checker = check_events_dict([ add_schema_checker = check_events_dict([
('type', equals('subscription')), ('type', equals('subscription')),
('op', equals('add')), ('op', equals('add')),
@ -2754,5 +2739,5 @@ class SubscribeActionTest(BaseAction):
action, action,
include_subscribers=include_subscribers, include_subscribers=include_subscribers,
num_events=2) num_events=2)
stream_create_schema_checker('events[0]', events[0]) check_stream_create('events[0]', events[0])
add_schema_checker('events[1]', events[1]) add_schema_checker('events[1]', events[1])