mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-19 06:04:31 -04:00
widget: Add integration tests for sending events
This commit is contained in:
committed by
Jonas Platte
parent
4982f87c59
commit
561db87b64
@@ -35,7 +35,7 @@ use wiremock::{
|
||||
Mock, MockServer, ResponseTemplate,
|
||||
};
|
||||
|
||||
use crate::{logged_in_client, mock_sync};
|
||||
use crate::{logged_in_client, mock_encryption_state, mock_sync};
|
||||
|
||||
/// Create a JSON string from a [`json!`][serde_json::json] "literal".
|
||||
#[macro_export]
|
||||
@@ -67,6 +67,8 @@ async fn run_test_driver(init_on_content_load: bool) -> (MockServer, WidgetDrive
|
||||
let _response = client.sync_once(sync_settings.clone()).await.unwrap();
|
||||
mock_server.reset().await;
|
||||
|
||||
mock_encryption_state(&mock_server, false).await;
|
||||
|
||||
let room = client.get_room(&ROOM_ID).unwrap();
|
||||
|
||||
let (driver, handle) = WidgetDriver::new(
|
||||
@@ -287,6 +289,87 @@ async fn read_room_members() {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_test]
|
||||
async fn send_room_message() {
|
||||
let (mock_server, driver_handle) = run_test_driver(false).await;
|
||||
|
||||
negotiate_capabilities(&driver_handle, json!(["org.matrix.msc2762.send.event:m.room.message"]))
|
||||
.await;
|
||||
|
||||
Mock::given(method("PUT"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/send/m.room.message/.*$"))
|
||||
.respond_with(ResponseTemplate::new(200).set_body_json(json!({ "event_id": "$foobar" })))
|
||||
.expect(1)
|
||||
.mount(&mock_server)
|
||||
.await;
|
||||
|
||||
send_request(
|
||||
&driver_handle,
|
||||
"send-room-message",
|
||||
"send_event",
|
||||
json!({
|
||||
"type": "m.room.message",
|
||||
"content": {
|
||||
"msgtype": "m.text",
|
||||
"body": "Message from a widget!",
|
||||
},
|
||||
}),
|
||||
)
|
||||
.await;
|
||||
|
||||
// Receive the response
|
||||
let msg = recv_message(&driver_handle).await;
|
||||
assert_eq!(msg["api"], "fromWidget");
|
||||
assert_eq!(msg["action"], "send_event");
|
||||
let event_id = msg["response"]["event_id"].as_str().unwrap();
|
||||
assert_eq!(event_id, "$foobar");
|
||||
|
||||
// Make sure the event-sending endpoint was hit exactly once
|
||||
mock_server.verify().await;
|
||||
}
|
||||
|
||||
#[async_test]
|
||||
async fn send_room_name() {
|
||||
let (mock_server, driver_handle) = run_test_driver(false).await;
|
||||
|
||||
negotiate_capabilities(
|
||||
&driver_handle,
|
||||
json!(["org.matrix.msc2762.send.state_event:m.room.name#"]),
|
||||
)
|
||||
.await;
|
||||
|
||||
Mock::given(method("PUT"))
|
||||
.and(path_regex(r"^/_matrix/client/r0/rooms/.*/state/m.room.name/?$"))
|
||||
.respond_with(ResponseTemplate::new(200).set_body_json(json!({ "event_id": "$foobar" })))
|
||||
.expect(1)
|
||||
.mount(&mock_server)
|
||||
.await;
|
||||
|
||||
send_request(
|
||||
&driver_handle,
|
||||
"send-room-name",
|
||||
"send_event",
|
||||
json!({
|
||||
"type": "m.room.name",
|
||||
"state_key": "",
|
||||
"content": {
|
||||
"name": "Room Name set by Widget",
|
||||
},
|
||||
}),
|
||||
)
|
||||
.await;
|
||||
|
||||
// Receive the response
|
||||
let msg = recv_message(&driver_handle).await;
|
||||
assert_eq!(msg["api"], "fromWidget");
|
||||
assert_eq!(msg["action"], "send_event");
|
||||
let event_id = msg["response"]["event_id"].as_str().unwrap();
|
||||
assert_eq!(event_id, "$foobar");
|
||||
|
||||
// Make sure the event-sending endpoint was hit exactly once
|
||||
mock_server.verify().await;
|
||||
}
|
||||
|
||||
async fn negotiate_capabilities(driver_handle: &WidgetDriverHandle, caps: JsonValue) {
|
||||
{
|
||||
// Receive toWidget capabilities request
|
||||
|
||||
Reference in New Issue
Block a user