def check_realm_update_dict( # handle union types var_name: str, event: Dict[str, object], ) -> None: _check_realm_update_dict(var_name, event) if event["property"] == "default": assert isinstance(event["data"], dict) if "allow_message_editing" in event["data"]: sub_type = message_edit_data elif "authentication_methods" in event["data"]: sub_type = authentication_data else: raise AssertionError("unhandled fields in data") elif event["property"] == "icon": sub_type = icon_data elif event["property"] == "logo": sub_type = logo_data elif event["property"] == "night_logo": sub_type = night_logo_data else: raise AssertionError("unhandled property: {event['property']}") check_data(sub_type, f"{var_name}['data']", event["data"])
def check_realm_user_update( # person_flavor tells us which extra fields we need var_name: str, event: Dict[str, object], person_flavor: str, ) -> None: _check_realm_user_update(var_name, event) check_data( realm_user_person_types[person_flavor], f"{var_name}['person']", event["person"], )
def check_realm_bot_add( var_name: str, event: Dict[str, object], ) -> None: _check_realm_bot_add(var_name, event) assert isinstance(event["bot"], dict) bot_type = event["bot"]["bot_type"] services_field = f"{var_name}['bot']['services']" services = event["bot"]["services"] if bot_type == UserProfile.DEFAULT_BOT: check_data(Equals([]), services_field, services) elif bot_type == UserProfile.OUTGOING_WEBHOOK_BOT: check_data(ListType(bot_services_outgoing_type, length=1), services_field, services) elif bot_type == UserProfile.EMBEDDED_BOT: check_data(ListType(bot_services_embedded_type, length=1), services_field, services) else: raise AssertionError(f"Unknown bot_type: {bot_type}")