use voip_ms::ApiStatus;
const KNOWN_CODES: &[&str] = &[
"Invalid_threshold",
"Unable_to_purchase",
"account_with_dids",
"api_limit_exceeded",
"api_not_enabled",
"can_have_only_one_profile_without_pin",
"cancel_failed",
"conference_member_relation_not_found",
"did_in_use",
"did_limit_reached",
"duplicated_name",
"duplicated_pin",
"e911_disabled",
"e911_pending",
"error_deleting_msg",
"error_moving_msg",
"exceeds_file_size",
"existing_did",
"forwards_exceeded",
"invalid_account",
"invalid_address",
"invalid_admin",
"invalid_agent_ring_timeout",
"invalid_allowedcodecs",
"invalid_announce_join_leave",
"invalid_announce_only_user",
"invalid_announce_position_frequency",
"invalid_announce_round_seconds",
"invalid_announce_user_count",
"invalid_area_code",
"invalid_attach_file",
"invalid_attachid",
"invalid_attachmessage",
"invalid_authtype",
"invalid_authtype_h323",
"invalid_authtype_iax2",
"invalid_balancemanagement",
"invalid_base_recording",
"invalid_billingtype",
"invalid_call_type",
"invalid_callback",
"invalid_callback_enable",
"invalid_callback_retry",
"invalid_callerid",
"invalid_callerid_override",
"invalid_calleridprefix",
"invalid_callhunting",
"invalid_callparking",
"invalid_callrecording",
"invalid_canada_routing",
"invalid_carrier",
"invalid_charge",
"invalid_city",
"invalid_client",
"invalid_cnam",
"invalid_codec",
"invalid_conference",
"invalid_contact",
"invalid_country",
"invalid_countryid",
"invalid_credentials",
"invalid_date",
"invalid_date_from",
"invalid_daterange",
"invalid_datetime",
"invalid_dayrange",
"invalid_delay_before",
"invalid_deletemessage",
"invalid_description",
"invalid_destination",
"invalid_destination_folder",
"invalid_devicetype",
"invalid_dialtime",
"invalid_did",
"invalid_digit_timeout",
"invalid_digits",
"invalid_disa",
"invalid_diversion_header",
"invalid_drop_silence",
"invalid_dst",
"invalid_dtmf_digits",
"invalid_dtmfmode",
"invalid_email",
"invalid_email_attachment_format",
"invalid_email_enable",
"invalid_enable_ip_restriction",
"invalid_enable_pop_restriction",
"invalid_endhour",
"invalid_endminute",
"invalid_extension",
"invalid_extension_length",
"invalid_extension_prefix",
"invalid_extensions",
"invalid_failover_header",
"invalid_fax_id",
"invalid_file",
"invalid_filter",
"invalid_firstname",
"invalid_foc_enddate",
"invalid_foc_startdate",
"invalid_folder",
"invalid_folder_id",
"invalid_forward_enable",
"invalid_forwarding",
"invalid_forwarding_did",
"invalid_frequency_announcement",
"invalid_from_number",
"invalid_fullname",
"invalid_id",
"invalid_internaldialtime",
"invalid_internalvoicemail",
"invalid_internationalroute",
"invalid_invoice_type",
"invalid_ip",
"invalid_ip_auth",
"invalid_ip_iax2",
"invalid_ivr",
"invalid_jitter_buffer",
"invalid_join_announcement",
"invalid_join_empty_type",
"invalid_language",
"invalid_lastname",
"invalid_listened",
"invalid_location",
"invalid_lockinternational",
"invalid_mailbox",
"invalid_max_expiry",
"invalid_maximum_callers",
"invalid_maximum_wait_time",
"invalid_member",
"invalid_member_delay",
"invalid_message_num",
"invalid_method",
"invalid_minute",
"invalid_mixed_numbers",
"invalid_monthly",
"invalid_musiconhold",
"invalid_name",
"invalid_nat",
"invalid_note",
"invalid_number",
"invalid_number_canadian",
"invalid_number_exist",
"invalid_number_fax",
"invalid_number_porttype",
"invalid_number_us",
"invalid_numbermembers",
"invalid_order",
"invalid_package",
"invalid_password",
"invalid_password_auth",
"invalid_password_ilegal_characters",
"invalid_password_missing_lowercase",
"invalid_password_missing_number",
"invalid_password_missing_uppercase",
"invalid_pause",
"invalid_payment",
"invalid_phonebook",
"invalid_phonenumber",
"invalid_pin",
"invalid_pin_number",
"invalid_playinstructions",
"invalid_pop_restriction",
"invalid_port_status",
"invalid_portingid",
"invalid_porttype",
"invalid_priority",
"invalid_priority_weight",
"invalid_protocol",
"invalid_provider_account",
"invalid_provider_name",
"invalid_province",
"invalid_quantity",
"invalid_query",
"invalid_queue",
"invalid_quiet",
"invalid_record_calls",
"invalid_recording",
"invalid_recording_sound_error_menu",
"invalid_recording_sound_get_pin",
"invalid_recording_sound_has_joined",
"invalid_recording_sound_has_left",
"invalid_recording_sound_invalid_pin",
"invalid_recording_sound_join",
"invalid_recording_sound_kicked",
"invalid_recording_sound_leave",
"invalid_recording_sound_locked",
"invalid_recording_sound_locked_now",
"invalid_recording_sound_muted",
"invalid_recording_sound_only_one",
"invalid_recording_sound_only_person",
"invalid_recording_sound_there_are",
"invalid_recording_sound_unlocked_now",
"invalid_recording_sound_unmuted",
"invalid_report_hold_time_agent",
"invalid_resellerclient",
"invalid_resellernextbilling",
"invalid_resellerpackage",
"invalid_response_timeout",
"invalid_retry_timer",
"invalid_ring_inuse",
"invalid_ringgroup",
"invalid_route",
"invalid_routing_header",
"invalid_rtp_hold_timeout",
"invalid_rtp_timeout",
"invalid_saycallerid",
"invalid_saytime",
"invalid_security_code",
"invalid_serverpop",
"invalid_setup",
"invalid_silence_threshold",
"invalid_sip_traffic",
"invalid_sipuri",
"invalid_skippassword",
"invalid_smpp_password",
"invalid_smpp_url",
"invalid_smpp_username",
"invalid_sms",
"invalid_sms_forward",
"invalid_snn",
"invalid_speed_dial",
"invalid_start_muted",
"invalid_starthour",
"invalid_startminute",
"invalid_state",
"invalid_statement_name",
"invalid_strategy",
"invalid_street_name",
"invalid_street_number",
"invalid_talk_detection",
"invalid_talking_threshold",
"invalid_tfnumber_porttype",
"invalid_thankyou_for_your_patience",
"invalid_timecondition",
"invalid_timeout",
"invalid_timerange",
"invalid_timezone",
"invalid_to_number",
"invalid_transcription_email",
"invalid_transcription_format",
"invalid_transcription_locale",
"invalid_transcription_redaction",
"invalid_transcription_sentiment",
"invalid_transcription_summary",
"invalid_type",
"invalid_urgent",
"invalid_username",
"invalid_voice_announcement",
"invalid_voicemailsetup",
"invalid_weekdayend",
"invalid_weekdaystart",
"invalid_wrapup_time",
"invalid_zip",
"ip_not_enabled",
"limit_reached",
"location_already_exists",
"location_linked_to_subaccount",
"location_not_found",
"max_phonebook",
"member_already_included",
"members_exceeded",
"message_empty",
"message_not_found",
"method_maintenance",
"mismatch_email_confirm",
"mismatch_password_confirm",
"missing_account",
"missing_address",
"missing_agent_ring_timeout",
"missing_allowedcodecs",
"missing_attachmessage",
"missing_authtype",
"missing_balancemanagement",
"missing_billingtype",
"missing_callback",
"missing_callerid",
"missing_callhunting",
"missing_callparking",
"missing_callrecording",
"missing_carrier",
"missing_charge",
"missing_choices",
"missing_city",
"missing_client",
"missing_cnam",
"missing_codec",
"missing_conference",
"missing_country",
"missing_countryid",
"missing_credentials",
"missing_datetime",
"missing_delay_before",
"missing_deletemessage",
"missing_description",
"missing_devicetype",
"missing_dialtime",
"missing_did",
"missing_digit_timeout",
"missing_digits",
"missing_disa",
"missing_dtmfmode",
"missing_email",
"missing_email_confirm",
"missing_enable",
"missing_endhour",
"missing_endminute",
"missing_failover_busy",
"missing_failover_noanswer",
"missing_failover_unreachable",
"missing_file",
"missing_filter",
"missing_firstname",
"missing_folder",
"missing_forwarding",
"missing_from_date",
"missing_fullname",
"missing_id",
"missing_internationalroute",
"missing_ip",
"missing_ip_h323",
"missing_ip_restriction",
"missing_ivr",
"missing_join_when_empty",
"missing_language",
"missing_lastname",
"missing_leave_when_empty",
"missing_length",
"missing_listened",
"missing_location",
"missing_location_name",
"missing_lockinternational",
"missing_mailbox",
"missing_member",
"missing_members",
"missing_message_num",
"missing_method",
"missing_minute",
"missing_monthly",
"missing_musiconhold",
"missing_name",
"missing_nat",
"missing_number",
"missing_numbers",
"missing_package",
"missing_params",
"missing_password",
"missing_password_confirm",
"missing_payment",
"missing_phonebook",
"missing_phonenumber",
"missing_pin",
"missing_playinstructions",
"missing_pop_restriction",
"missing_priority",
"missing_priority_weight",
"missing_protocol",
"missing_province",
"missing_query",
"missing_recording",
"missing_report_hold_time_agent",
"missing_resellerclient",
"missing_resellerpackage",
"missing_response_timeout",
"missing_ring_inuse",
"missing_ring_strategy",
"missing_ringgroup",
"missing_route",
"missing_routing",
"missing_saycallerid",
"missing_saytime",
"missing_serverpop",
"missing_setup",
"missing_sipuri",
"missing_skippassword",
"missing_sms",
"missing_speed_dial",
"missing_start",
"missing_starthour",
"missing_startminute",
"missing_state",
"missing_street_name",
"missing_street_number",
"missing_thankyou_for_your_patience",
"missing_timecondition",
"missing_timeout",
"missing_timezone",
"missing_to_date",
"missing_transcription_email",
"missing_transcription_locale",
"missing_type",
"missing_urgent",
"missing_uri",
"missing_username",
"missing_voicemailsetup",
"missing_weekdayend",
"missing_weekdaystart",
"missing_zip",
"moving_fail",
"name_toolong",
"no_account",
"no_attachments",
"no_base64file",
"no_callback",
"no_callhunting",
"no_callparking",
"no_callstatus",
"no_cdr",
"no_change_billingtype",
"no_client",
"no_conference",
"no_did",
"no_disa",
"no_emailtofax",
"no_filter",
"no_folder",
"no_forwarding",
"no_ivr",
"no_mailbox",
"no_member",
"no_message",
"no_messages",
"no_numbers",
"no_package",
"no_phonebook",
"no_phonebook_group",
"no_provision",
"no_provision_update",
"no_queue",
"no_rate",
"no_recording",
"no_ringgroup",
"no_sequences",
"no_sipuri",
"no_sms",
"no_timecondition",
"no_transactions",
"no_vpri",
"non_sufficient_funds",
"note_toolong",
"order_failed",
"problem_sending_mail",
"provider_outofservice",
"recording_in_use_caller_id_filtering",
"recording_in_use_caller_timecondition",
"recording_in_use_did",
"recording_in_use_ivr",
"recording_in_use_queue",
"repeated_ip",
"reserved_ip",
"same_did_billingtype",
"sent_fail",
"sipuri_in_phonebook",
"sms_apply_regulations",
"sms_failed",
"sms_toolong",
"sms_wait_message",
"tls_error",
"unavailable_info",
"unsifficient_stock",
"used_description",
"used_email",
"used_extension",
"used_extension_in_location",
"used_filter",
"used_ip",
"used_name",
"used_number",
"used_password",
"used_speed_dial",
"used_username",
"weak_password",
];
#[test]
fn every_known_code_round_trips_and_is_documented() {
for &code in KNOWN_CODES {
let status = ApiStatus::from_wire(code);
assert_eq!(status.as_str(), code, "as_str disagrees for {code}");
assert!(status.is_documented(), "{code} classified as unknown");
}
}
#[test]
fn unknown_code_is_preserved_and_flagged() {
let s = ApiStatus::from_wire("totally_made_up_code");
assert_eq!(s.as_str(), "totally_made_up_code");
assert!(!s.is_documented());
assert!(s.description().is_none());
}
#[test]
fn known_codes_have_descriptions() {
for &code in KNOWN_CODES {
let status = ApiStatus::from_wire(code);
assert!(status.description().is_some(), "no description for {code}");
}
}