Files
matrix-rust-sdk/testing/matrix-sdk-integration-testing/src/tests/invitations.rs
T

46 lines
1.5 KiB
Rust

use std::time::Duration;
use anyhow::{bail, Result};
use assign::assign;
use matrix_sdk::{
room::Room, ruma::api::client::room::create_room::v3::Request as CreateRoomRequest,
};
use super::{get_client_for_user, Store};
#[tokio::test(flavor = "multi_thread", worker_threads = 4)]
async fn test_invitation_details() -> Result<()> {
let tamatoa = get_client_for_user(Store::Sled, "tamatoa".to_owned()).await?;
let sebastian = get_client_for_user(Store::Sled, "sebastian".to_owned()).await?;
let invites = [sebastian.user_id().expect("sebastian has a userid!").to_owned()];
// create a room and invite sebastian;
let request = assign!(CreateRoomRequest::new(), {
invite: &invites,
is_direct: true,
});
let tamatoa_clone = tamatoa.clone();
tokio::spawn(async move {
tokio::time::sleep(Duration::from_secs(1)).await;
tamatoa_clone.sync_once(Default::default()).await
});
let created_room = tamatoa.create_room(request).await?;
// the actual test
sebastian.sync_once(Default::default()).await?;
let room =
sebastian.get_room(created_room.room_id()).expect("Sebstian doesn't know about the room");
if let Room::Invited(iv) = room {
let details = iv.invite_details().await?;
let sender = details.inviter.expect("invite details doesn't have inviter");
assert_eq!(sender.user_id(), tamatoa.user_id().expect("tamatoa has a user_id"));
} else {
bail!("The room tamatoa invited sebastian in isn't an invite: {:?}", room);
}
Ok(())
}