From e756999828ba6021882872d52d8fb9edc88e0dec Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Wed, 22 Nov 2023 16:34:43 +0100 Subject: [PATCH] Add tests for GatewayMessage to increase coverage --- tests/gateway.rs | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/tests/gateway.rs b/tests/gateway.rs index b564cde..68a203a 100644 --- a/tests/gateway.rs +++ b/tests/gateway.rs @@ -2,6 +2,7 @@ mod common; use std::sync::{Arc, RwLock}; +use chorus::errors::GatewayError; use chorus::gateway::*; use chorus::types::{self, ChannelModifySchema, RoleCreateModifySchema, RoleObject}; // PRETTYFYME: Move common wasm setup to common.rs @@ -125,3 +126,92 @@ async fn test_recursive_self_updating_structs() { assert_eq!(guild_role_inner.name, "yippieee".to_string()); common::teardown(bundle).await; } + +#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] +#[cfg_attr(not(target_arch = "wasm32"), test)] +fn test_error() { + let error = GatewayMessage("4000".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::Unknown); + let error = GatewayMessage("4001".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::UnknownOpcode); + let error = GatewayMessage("4002".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::Decode); + let error = GatewayMessage("4003".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::NotAuthenticated); + let error = GatewayMessage("4004".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::AuthenticationFailed); + let error = GatewayMessage("4005".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::AlreadyAuthenticated); + let error = GatewayMessage("4007".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::InvalidSequenceNumber); + let error = GatewayMessage("4008".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::RateLimited); + let error = GatewayMessage("4009".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::SessionTimedOut); + let error = GatewayMessage("4010".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::InvalidShard); + let error = GatewayMessage("4011".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::ShardingRequired); + let error = GatewayMessage("4012".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::InvalidAPIVersion); + let error = GatewayMessage("4013".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::InvalidIntents); + let error = GatewayMessage("4014".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::DisallowedIntents); +} + +#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] +#[cfg_attr(not(target_arch = "wasm32"), test)] +fn test_error_message() { + let error = GatewayMessage("Unknown Error".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::Unknown); + let error = GatewayMessage("Unknown Opcode".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::UnknownOpcode); + let error = GatewayMessage("Decode Error".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::Decode); + let error = GatewayMessage("Not Authenticated".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::NotAuthenticated); + let error = GatewayMessage("Authentication Failed".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::AuthenticationFailed); + let error = GatewayMessage("Already Authenticated".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::AlreadyAuthenticated); + let error = GatewayMessage("Invalid Seq".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::InvalidSequenceNumber); + let error = GatewayMessage("Rate Limited".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::RateLimited); + let error = GatewayMessage("Session Timed Out".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::SessionTimedOut); + let error = GatewayMessage("Invalid Shard".to_string()).error().unwrap(); + assert_eq!(error, GatewayError::InvalidShard); + let error = GatewayMessage("Sharding Required".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::ShardingRequired); + let error = GatewayMessage("Invalid API Version".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::InvalidAPIVersion); + let error = GatewayMessage("Invalid Intent(s)".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::InvalidIntents); + let error = GatewayMessage("Disallowed Intent(s)".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::DisallowedIntents); + // Also test the dot thing + let error = GatewayMessage("Invalid Intent(s).".to_string()) + .error() + .unwrap(); + assert_eq!(error, GatewayError::InvalidIntents); +}