Skip to main content

openmls/test_utils/single_group_test_framework/
assertions.rs

1use super::*;
2
3impl<Provider: OpenMlsProvider> MemberState<'_, Provider> {
4    #[openmls_traits::maybe_async]
5    pub async fn assert_group_storage_state_matches(&self, to_compare: GroupStorageState) {
6        let state_now = self.group_storage_state().await;
7        assert!(to_compare == state_now);
8    }
9    #[openmls_traits::maybe_async]
10    pub async fn assert_non_proposal_group_storage_state_matches(
11        &self,
12        to_compare: GroupStorageState,
13    ) {
14        let state_now = self.group_storage_state().await;
15        assert!(to_compare.non_proposal_state() == state_now.non_proposal_state());
16    }
17}
18impl<Provider: OpenMlsProvider> GroupState<'_, Provider> {
19    pub fn assert_membership(&self) {
20        let mut names = self
21            .members
22            .keys()
23            .map(|s| s.to_string())
24            .collect::<Vec<_>>();
25        names.sort();
26
27        for state in self.members.values() {
28            let mut names_in_group = state
29                .group
30                .members()
31                .map(|member| {
32                    let credential: BasicCredential = member.credential.try_into().unwrap();
33
34                    String::from_utf8(credential.identity().to_owned()).unwrap()
35                })
36                .collect::<Vec<_>>();
37
38            names_in_group.sort();
39
40            assert_eq!(names, names_in_group);
41        }
42    }
43}