git-subtree-dir: crates/ruma-state-res git-subtree-mainline: 719433eb5c41fb5b8099481ce7bb0a37931b260f git-subtree-split: 56bf45c0235701ac6df56993c327d2f97a499ef9
80 lines
1.8 KiB
Rust
80 lines
1.8 KiB
Rust
use std::sync::Arc;
|
|
|
|
use state_res::{event_auth::valid_membership_change, StateMap};
|
|
// use state_res::event_auth:::{
|
|
// auth_check, auth_types_for_event, can_federate, check_power_levels, check_redaction,
|
|
// };
|
|
|
|
mod utils;
|
|
use utils::{alice, charlie, event_id, member_content_ban, to_pdu_event, INITIAL_EVENTS};
|
|
|
|
#[test]
|
|
fn test_ban_pass() {
|
|
let events = INITIAL_EVENTS();
|
|
|
|
let prev = events
|
|
.values()
|
|
.find(|ev| ev.event_id().as_str().contains("IMC"))
|
|
.map(Arc::clone);
|
|
|
|
let auth_events = events
|
|
.values()
|
|
.map(|ev| ((ev.kind(), ev.state_key()), Arc::clone(ev)))
|
|
.collect::<StateMap<_>>();
|
|
|
|
let requester = to_pdu_event(
|
|
"HELLO",
|
|
alice(),
|
|
ruma::events::EventType::RoomMember,
|
|
Some(charlie().as_str()),
|
|
member_content_ban(),
|
|
&[],
|
|
&[event_id("IMC")],
|
|
);
|
|
|
|
assert!(valid_membership_change(
|
|
&requester.state_key(),
|
|
requester.sender(),
|
|
requester.content(),
|
|
prev,
|
|
None,
|
|
&auth_events
|
|
)
|
|
.unwrap())
|
|
}
|
|
|
|
#[test]
|
|
fn test_ban_fail() {
|
|
let events = INITIAL_EVENTS();
|
|
|
|
let prev = events
|
|
.values()
|
|
.find(|ev| ev.event_id().as_str().contains("IMC"))
|
|
.map(Arc::clone);
|
|
|
|
let auth_events = events
|
|
.values()
|
|
.map(|ev| ((ev.kind(), ev.state_key()), Arc::clone(ev)))
|
|
.collect::<StateMap<_>>();
|
|
|
|
let requester = to_pdu_event(
|
|
"HELLO",
|
|
charlie(),
|
|
ruma::events::EventType::RoomMember,
|
|
Some(alice().as_str()),
|
|
member_content_ban(),
|
|
&[],
|
|
&[event_id("IMC")],
|
|
);
|
|
|
|
assert!(!valid_membership_change(
|
|
&requester.state_key(),
|
|
requester.sender(),
|
|
requester.content(),
|
|
prev,
|
|
None,
|
|
&auth_events
|
|
)
|
|
.unwrap())
|
|
}
|