diff --git a/crates/matrix-sdk/tests/integration/client.rs b/crates/matrix-sdk/tests/integration/client.rs index 23e6cee7a..8f1ee0a11 100644 --- a/crates/matrix-sdk/tests/integration/client.rs +++ b/crates/matrix-sdk/tests/integration/client.rs @@ -1527,6 +1527,46 @@ async fn test_server_vendor_info() { assert_eq!(server_info.version, "1.70.0"); } +#[async_test] +async fn test_server_version_without_auth() { + let server = MatrixMockServer::new().await; + let client = server.client_builder().build().await; + + // If we provide an access token, we encounter a failure, likely because the + // token has expired. + Mock::given(method("GET")) + .and(path_regex(r"^/_matrix/client/versions")) + .and(header("authorization", "Bearer 1234")) + .respond_with(ResponseTemplate::new(401)) + .mount(server.server()) + .await; + + // If we do not provide an access token, all is fine as the endpoint does not + // require one. + Mock::given(method("GET")) + .and(path_regex(r"^/_matrix/client/versions")) + .respond_with(ResponseTemplate::new(200).set_body_json(json!({ + "versions": [ + "r0.0.1", + "v1.1" + ] + }))) + .mount(server.server()) + .await; + + let request_config = RequestConfig::new().disable_retry(); + client + .fetch_server_versions(Some(request_config)) + .await + .expect_err("We should fail here since we provided an auth token."); + + let request_config = RequestConfig::new().disable_retry().skip_auth(); + client + .fetch_server_versions(Some(request_config)) + .await + .expect("We should not fail here since we did not provide an auth token."); +} + #[async_test] async fn test_server_vendor_info_with_missing_fields() { let server = MatrixMockServer::new().await;