mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-06 23:15:08 -04:00
task(tests): have the test clients use Matrix v1.12
This commit is contained in:
@@ -144,7 +144,7 @@ impl MatrixMockServer {
|
||||
/// Mocks a sync endpoint.
|
||||
pub fn mock_sync(&self) -> MockEndpoint<'_, SyncEndpoint> {
|
||||
let mock = Mock::given(method("GET"))
|
||||
.and(path("/_matrix/client/r0/sync"))
|
||||
.and(path("/_matrix/client/v3/sync"))
|
||||
.and(header("authorization", "Bearer 1234"));
|
||||
MockEndpoint {
|
||||
mock,
|
||||
@@ -158,7 +158,7 @@ impl MatrixMockServer {
|
||||
/// Note: works with *any* room.
|
||||
pub fn mock_room_send(&self) -> MockEndpoint<'_, RoomSendEndpoint> {
|
||||
let mock = Mock::given(method("PUT"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/send/.*"))
|
||||
.and(path_regex(r"^/_matrix/client/v3/rooms/.*/send/.*"))
|
||||
.and(header("authorization", "Bearer 1234"));
|
||||
MockEndpoint { mock, server: &self.server, endpoint: RoomSendEndpoint }
|
||||
}
|
||||
@@ -169,7 +169,7 @@ impl MatrixMockServer {
|
||||
pub fn mock_room_state_encryption(&self) -> MockEndpoint<'_, EncryptionStateEndpoint> {
|
||||
let mock = Mock::given(method("GET"))
|
||||
.and(header("authorization", "Bearer 1234"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/state/m.*room.*encryption.?"));
|
||||
.and(path_regex(r"^/_matrix/client/v3/rooms/.*/state/m.*room.*encryption.?"));
|
||||
MockEndpoint { mock, server: &self.server, endpoint: EncryptionStateEndpoint }
|
||||
}
|
||||
|
||||
@@ -179,14 +179,14 @@ impl MatrixMockServer {
|
||||
pub fn mock_set_room_state_encryption(&self) -> MockEndpoint<'_, SetEncryptionStateEndpoint> {
|
||||
let mock = Mock::given(method("PUT"))
|
||||
.and(header("authorization", "Bearer 1234"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/state/m.*room.*encryption.?"));
|
||||
.and(path_regex(r"^/_matrix/client/v3/rooms/.*/state/m.*room.*encryption.?"));
|
||||
MockEndpoint { mock, server: &self.server, endpoint: SetEncryptionStateEndpoint }
|
||||
}
|
||||
|
||||
/// Creates a prebuilt mock for the room redact endpoint.
|
||||
pub fn mock_room_redact(&self) -> MockEndpoint<'_, RoomRedactEndpoint> {
|
||||
let mock = Mock::given(method("PUT"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/redact/.*?/.*?"))
|
||||
.and(path_regex(r"^/_matrix/client/v3/rooms/.*/redact/.*?/.*?"))
|
||||
.and(header("authorization", "Bearer 1234"));
|
||||
MockEndpoint { mock, server: &self.server, endpoint: RoomRedactEndpoint }
|
||||
}
|
||||
@@ -204,7 +204,7 @@ impl MatrixMockServer {
|
||||
/// Create a prebuilt mock for uploading media.
|
||||
pub fn mock_upload(&self) -> MockEndpoint<'_, UploadEndpoint> {
|
||||
let mock = Mock::given(method("POST"))
|
||||
.and(path("/_matrix/media/r0/upload"))
|
||||
.and(path("/_matrix/media/v3/upload"))
|
||||
.and(header("authorization", "Bearer 1234"));
|
||||
MockEndpoint { mock, server: &self.server, endpoint: UploadEndpoint }
|
||||
}
|
||||
@@ -212,14 +212,14 @@ impl MatrixMockServer {
|
||||
/// Create a prebuilt mock for resolving room aliases.
|
||||
pub fn mock_room_directory_resolve_alias(&self) -> MockEndpoint<'_, ResolveRoomAliasEndpoint> {
|
||||
let mock =
|
||||
Mock::given(method("GET")).and(path_regex(r"/_matrix/client/r0/directory/room/.*"));
|
||||
Mock::given(method("GET")).and(path_regex(r"/_matrix/client/v3/directory/room/.*"));
|
||||
MockEndpoint { mock, server: &self.server, endpoint: ResolveRoomAliasEndpoint }
|
||||
}
|
||||
|
||||
/// Create a prebuilt mock for creating room aliases.
|
||||
pub fn mock_create_room_alias(&self) -> MockEndpoint<'_, CreateRoomAliasEndpoint> {
|
||||
let mock =
|
||||
Mock::given(method("PUT")).and(path_regex(r"/_matrix/client/r0/directory/room/.*"));
|
||||
Mock::given(method("PUT")).and(path_regex(r"/_matrix/client/v3/directory/room/.*"));
|
||||
MockEndpoint { mock, server: &self.server, endpoint: CreateRoomAliasEndpoint }
|
||||
}
|
||||
}
|
||||
@@ -495,7 +495,7 @@ impl<'a> MockEndpoint<'a, RoomEventEndpoint> {
|
||||
|
||||
let mock = self
|
||||
.mock
|
||||
.and(path_regex(format!("^/_matrix/client/r0/rooms/{room_path}/event/{event_path}")))
|
||||
.and(path_regex(format!("^/_matrix/client/v3/rooms/{room_path}/event/{event_path}")))
|
||||
.respond_with(ResponseTemplate::new(200).set_body_json(event.into_raw().json()));
|
||||
MatrixMock { server: self.server, mock }
|
||||
}
|
||||
@@ -564,7 +564,7 @@ impl MockClientBuilder {
|
||||
fn new(homeserver: String) -> Self {
|
||||
let default_builder = Client::builder()
|
||||
.homeserver_url(homeserver)
|
||||
.server_versions([MatrixVersion::V1_0])
|
||||
.server_versions([MatrixVersion::V1_12])
|
||||
.request_config(RequestConfig::new().disable_retry());
|
||||
|
||||
Self { builder: default_builder, logged_in: true }
|
||||
|
||||
@@ -18,7 +18,6 @@ use assert_matches::assert_matches;
|
||||
use async_trait::async_trait;
|
||||
use futures_util::FutureExt;
|
||||
use matrix_sdk::{
|
||||
config::SyncSettings,
|
||||
test_utils::mocks::MatrixMockServer,
|
||||
widget::{
|
||||
Capabilities, CapabilitiesProvider, WidgetDriver, WidgetDriverHandle, WidgetSettings,
|
||||
@@ -26,9 +25,7 @@ use matrix_sdk::{
|
||||
Client,
|
||||
};
|
||||
use matrix_sdk_common::{executor::spawn, timeout::timeout};
|
||||
use matrix_sdk_test::{
|
||||
async_test, EventBuilder, JoinedRoomBuilder, SyncResponseBuilder, ALICE, BOB,
|
||||
};
|
||||
use matrix_sdk_test::{async_test, EventBuilder, JoinedRoomBuilder, ALICE, BOB};
|
||||
use once_cell::sync::Lazy;
|
||||
use ruma::{
|
||||
event_id,
|
||||
@@ -50,8 +47,6 @@ use wiremock::{
|
||||
Mock, ResponseTemplate,
|
||||
};
|
||||
|
||||
use crate::mock_sync;
|
||||
|
||||
/// Create a JSON string from a [`json!`][serde_json::json] "literal".
|
||||
#[macro_export]
|
||||
macro_rules! json_string {
|
||||
@@ -246,7 +241,7 @@ async fn test_read_messages() {
|
||||
"start": "t392-516_47314_0_7_1_1_1_11444_1"
|
||||
});
|
||||
Mock::given(method("GET"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/messages$"))
|
||||
.and(path_regex(r"^/_matrix/client/v3/rooms/.*/messages$"))
|
||||
.and(header("authorization", "Bearer 1234"))
|
||||
.and(query_param("limit", "2"))
|
||||
.respond_with(ResponseTemplate::new(200).set_body_json(response_json))
|
||||
@@ -341,7 +336,7 @@ async fn test_read_messages_with_msgtype_capabilities() {
|
||||
"start": "t392-516_47314_0_7_1_1_1_11444_1"
|
||||
});
|
||||
Mock::given(method("GET"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/messages$"))
|
||||
.and(path_regex(r"^/_matrix/client/v3/rooms/.*/messages$"))
|
||||
.and(header("authorization", "Bearer 1234"))
|
||||
.and(query_param("limit", "3"))
|
||||
.respond_with(ResponseTemplate::new(200).set_body_json(response_json))
|
||||
@@ -429,58 +424,54 @@ async fn test_receive_live_events() {
|
||||
// No messages from the driver yet
|
||||
assert_matches!(recv_message(&driver_handle).now_or_never(), None);
|
||||
|
||||
let mut sync_builder = SyncResponseBuilder::new();
|
||||
// bump the internal batch counter, otherwise the response will be seen as
|
||||
// identical to the one done in `run_test_driver`
|
||||
sync_builder.build_json_sync_response();
|
||||
|
||||
let event_builder = EventBuilder::new();
|
||||
sync_builder.add_joined_room(
|
||||
JoinedRoomBuilder::new(&ROOM_ID)
|
||||
// text message from alice - matches filter #2
|
||||
.add_timeline_event(event_builder.make_sync_message_event(
|
||||
&ALICE,
|
||||
RoomMessageEventContent::text_plain("simple text message"),
|
||||
))
|
||||
// emote from alice - doesn't match
|
||||
.add_timeline_event(event_builder.make_sync_message_event(
|
||||
&ALICE,
|
||||
RoomMessageEventContent::emote_plain("emote message"),
|
||||
))
|
||||
// pointless member event - matches filter #4
|
||||
.add_timeline_event(event_builder.make_sync_state_event(
|
||||
user_id!("@example:localhost"),
|
||||
"@example:localhost",
|
||||
RoomMemberEventContent::new(MembershipState::Join),
|
||||
Some(RoomMemberEventContent::new(MembershipState::Join)),
|
||||
))
|
||||
// kick alice - doesn't match because the `#@example:localhost` bit
|
||||
// is about the state_key, not the sender
|
||||
.add_timeline_event(event_builder.make_sync_state_event(
|
||||
user_id!("@example:localhost"),
|
||||
ALICE.as_str(),
|
||||
RoomMemberEventContent::new(MembershipState::Ban),
|
||||
Some(RoomMemberEventContent::new(MembershipState::Join)),
|
||||
))
|
||||
// set room tpoic - doesn't match
|
||||
.add_timeline_event(event_builder.make_sync_state_event(
|
||||
&BOB,
|
||||
"",
|
||||
RoomTopicEventContent::new("new room topic".to_owned()),
|
||||
None,
|
||||
))
|
||||
// set room name - matches filter #3
|
||||
.add_timeline_event(event_builder.make_sync_state_event(
|
||||
&BOB,
|
||||
"",
|
||||
RoomNameEventContent::new("New Room Name".to_owned()),
|
||||
None,
|
||||
)),
|
||||
);
|
||||
|
||||
mock_sync(mock_server.server(), sync_builder.build_json_sync_response(), None).await;
|
||||
let _response =
|
||||
client.sync_once(SyncSettings::new().timeout(Duration::from_millis(3000))).await.unwrap();
|
||||
mock_server
|
||||
.mock_sync()
|
||||
.ok_and_run(&client, |sync_builder| {
|
||||
let event_builder = EventBuilder::new();
|
||||
sync_builder.add_joined_room(
|
||||
JoinedRoomBuilder::new(&ROOM_ID)
|
||||
// text message from alice - matches filter #2
|
||||
.add_timeline_event(event_builder.make_sync_message_event(
|
||||
&ALICE,
|
||||
RoomMessageEventContent::text_plain("simple text message"),
|
||||
))
|
||||
// emote from alice - doesn't match
|
||||
.add_timeline_event(event_builder.make_sync_message_event(
|
||||
&ALICE,
|
||||
RoomMessageEventContent::emote_plain("emote message"),
|
||||
))
|
||||
// pointless member event - matches filter #4
|
||||
.add_timeline_event(event_builder.make_sync_state_event(
|
||||
user_id!("@example:localhost"),
|
||||
"@example:localhost",
|
||||
RoomMemberEventContent::new(MembershipState::Join),
|
||||
Some(RoomMemberEventContent::new(MembershipState::Join)),
|
||||
))
|
||||
// kick alice - doesn't match because the `#@example:localhost` bit
|
||||
// is about the state_key, not the sender
|
||||
.add_timeline_event(event_builder.make_sync_state_event(
|
||||
user_id!("@example:localhost"),
|
||||
ALICE.as_str(),
|
||||
RoomMemberEventContent::new(MembershipState::Ban),
|
||||
Some(RoomMemberEventContent::new(MembershipState::Join)),
|
||||
))
|
||||
// set room tpoic - doesn't match
|
||||
.add_timeline_event(event_builder.make_sync_state_event(
|
||||
&BOB,
|
||||
"",
|
||||
RoomTopicEventContent::new("new room topic".to_owned()),
|
||||
None,
|
||||
))
|
||||
// set room name - matches filter #3
|
||||
.add_timeline_event(event_builder.make_sync_state_event(
|
||||
&BOB,
|
||||
"",
|
||||
RoomNameEventContent::new("New Room Name".to_owned()),
|
||||
None,
|
||||
)),
|
||||
);
|
||||
})
|
||||
.await;
|
||||
|
||||
let msg = recv_message(&driver_handle).await;
|
||||
assert_eq!(msg["api"], "toWidget");
|
||||
@@ -518,7 +509,7 @@ async fn test_send_room_message() {
|
||||
.await;
|
||||
|
||||
Mock::given(method("PUT"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/send/m.room.message/.*$"))
|
||||
.and(path_regex(r"^/_matrix/client/v3/rooms/.*/send/m.room.message/.*$"))
|
||||
.respond_with(ResponseTemplate::new(200).set_body_json(json!({ "event_id": "$foobar" })))
|
||||
.expect(1)
|
||||
.mount(mock_server.server())
|
||||
@@ -559,7 +550,7 @@ async fn test_send_room_name() {
|
||||
.await;
|
||||
|
||||
Mock::given(method("PUT"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/state/m.room.name/?$"))
|
||||
.and(path_regex(r"^/_matrix/client/v3/rooms/.*/state/m.room.name/?$"))
|
||||
.respond_with(ResponseTemplate::new(200).set_body_json(json!({ "event_id": "$foobar" })))
|
||||
.expect(1)
|
||||
.mount(mock_server.server())
|
||||
|
||||
Reference in New Issue
Block a user