From 65e7688a3fc58781081475be6e5c1a3efa7252fc Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Thu, 10 Mar 2022 16:05:51 +0100 Subject: [PATCH] Don't require discovery to be mocked in tests --- crates/matrix-sdk/src/client.rs | 46 +++++++++++++++++++------- crates/matrix-sdk/src/config/client.rs | 11 ++++++ 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/crates/matrix-sdk/src/client.rs b/crates/matrix-sdk/src/client.rs index 1b04d6875..84a07895a 100644 --- a/crates/matrix-sdk/src/client.rs +++ b/crates/matrix-sdk/src/client.rs @@ -191,11 +191,18 @@ impl Client { let http_client = HttpClient::new(client, homeserver.clone(), session, config.request_config); - let server_versions = http_client - .send(get_supported_versions::Request::new(), None, vec![MatrixVersion::V1_0].into()) - .await? - .known_versions() - .collect(); + let server_versions = match config.server_versions { + Some(vs) => vs, + None => http_client + .send( + get_supported_versions::Request::new(), + None, + vec![MatrixVersion::V1_0].into(), + ) + .await? + .known_versions() + .collect(), + }; let inner = Arc::new(ClientInner { homeserver, @@ -2365,6 +2372,7 @@ pub(crate) mod test { uiaa::{self, UiaaResponse}, }, error::{FromHttpResponseError, ServerError}, + MatrixVersion, }, assign, device_id, directory::Filter, @@ -2397,8 +2405,11 @@ pub(crate) mod test { device_id: device_id!("DEVICEID").to_owned(), }; let homeserver = url::Url::parse(&mockito::server_url()).unwrap(); - let config = - ClientConfig::new().await.unwrap().request_config(RequestConfig::new().disable_retry()); + let config = ClientConfig::new() + .await + .unwrap() + .request_config(RequestConfig::new().disable_retry()) + .server_versions([MatrixVersion::V1_0]); let client = Client::new_with_config(homeserver, config).await.unwrap(); client.restore_login(session).await.unwrap(); @@ -2464,7 +2475,8 @@ pub(crate) mod test { async fn login() { let homeserver = Url::from_str(&mockito::server_url()).unwrap(); - let client = Client::new(homeserver.clone()).await.unwrap(); + let config = ClientConfig::new().await.unwrap().server_versions([MatrixVersion::V1_0]); + let client = Client::new_with_config(homeserver.clone(), config).await.unwrap(); let _m_types = mock("GET", "/_matrix/client/r0/login") .with_status(200) @@ -2496,7 +2508,11 @@ pub(crate) mod test { #[async_test] async fn login_with_discovery() { let homeserver = Url::from_str(&mockito::server_url()).unwrap(); - let config = ClientConfig::new().await.unwrap().use_discovery_response(); + let config = ClientConfig::new() + .await + .unwrap() + .use_discovery_response() + .server_versions([MatrixVersion::V1_0]); let client = Client::new_with_config(homeserver, config).await.unwrap(); @@ -2516,7 +2532,11 @@ pub(crate) mod test { #[async_test] async fn login_no_discovery() { let homeserver = Url::from_str(&mockito::server_url()).unwrap(); - let config = ClientConfig::new().await.unwrap().use_discovery_response(); + let config = ClientConfig::new() + .await + .unwrap() + .use_discovery_response() + .server_versions([MatrixVersion::V1_0]); let client = Client::new_with_config(homeserver.clone(), config).await.unwrap(); @@ -2542,7 +2562,8 @@ pub(crate) mod test { .create(); let homeserver = Url::from_str(&mockito::server_url()).unwrap(); - let client = Client::new(homeserver).await.unwrap(); + let config = ClientConfig::new().await.unwrap().server_versions([MatrixVersion::V1_0]); + let client = Client::new_with_config(homeserver, config).await.unwrap(); let idp = crate::client::get_login_types::v3::IdentityProvider::new( "some-id".to_owned(), "idp-name".to_owned(), @@ -2579,7 +2600,8 @@ pub(crate) mod test { async fn login_with_sso_token() { let homeserver = Url::from_str(&mockito::server_url()).unwrap(); - let client = Client::new(homeserver).await.unwrap(); + let config = ClientConfig::new().await.unwrap().server_versions([MatrixVersion::V1_0]); + let client = Client::new_with_config(homeserver, config).await.unwrap(); let _m = mock("GET", "/_matrix/client/r0/login") .with_status(200) diff --git a/crates/matrix-sdk/src/config/client.rs b/crates/matrix-sdk/src/config/client.rs index 8639c7953..8b7e81552 100644 --- a/crates/matrix-sdk/src/config/client.rs +++ b/crates/matrix-sdk/src/config/client.rs @@ -21,6 +21,7 @@ use std::{ use http::header::InvalidHeaderValue; use matrix_sdk_base::{BaseClientConfig, StateStore}; +use ruma::api::MatrixVersion; use crate::{config::RequestConfig, HttpSend, Result}; @@ -77,6 +78,7 @@ pub struct ClientConfig { pub(crate) client: Option>, pub(crate) appservice_mode: bool, pub(crate) use_discovery_response: bool, + pub(crate) server_versions: Option>, } #[cfg(not(tarpaulin_include))] @@ -279,4 +281,13 @@ impl ClientConfig { self.use_discovery_response = true; self } + + #[cfg(test)] + pub(crate) fn server_versions( + mut self, + server_versions: impl IntoIterator, + ) -> Self { + self.server_versions = Some(server_versions.into_iter().collect()); + self + } }