@@ -93,11 +93,45 @@ where
93
93
94
94
#[ cfg( test) ]
95
95
mod tests {
96
+ use prost:: Message ;
96
97
use xmtp_cryptography:: utils:: generate_local_wallet;
98
+ use xmtp_proto:: xmtp:: mls:: api:: v1:: GroupMessage ;
97
99
98
100
use crate :: { builder:: ClientBuilder , storage:: group_message:: GroupMessageKind } ;
99
101
use futures:: StreamExt ;
100
102
103
+ #[ tokio:: test( flavor = "multi_thread" , worker_threads = 1 ) ]
104
+ async fn test_decode_group_message_bytes ( ) {
105
+ let amal = ClientBuilder :: new_test_client ( & generate_local_wallet ( ) ) . await ;
106
+ let bola = ClientBuilder :: new_test_client ( & generate_local_wallet ( ) ) . await ;
107
+
108
+ let amal_group = amal. create_group ( None ) . unwrap ( ) ;
109
+ // Add bola
110
+ amal_group
111
+ . add_members_by_installation_id ( vec ! [ bola. installation_public_key( ) ] )
112
+ . await
113
+ . unwrap ( ) ;
114
+
115
+ amal_group. send_message ( "hello" . as_bytes ( ) ) . await . unwrap ( ) ;
116
+ let messages = amal
117
+ . api_client
118
+ . query_group_messages ( amal_group. clone ( ) . group_id , None )
119
+ . await
120
+ . expect ( "read topic" ) ;
121
+ let message = messages. first ( ) . unwrap ( ) ;
122
+ let mut message_bytes: Vec < u8 > = Vec :: new ( ) ;
123
+ message. encode ( & mut message_bytes) . unwrap ( ) ;
124
+ let message_again = amal_group
125
+ . process_streamed_group_message ( message_bytes)
126
+ . await ;
127
+
128
+ if let Ok ( message) = message_again {
129
+ assert_eq ! ( message. group_id, amal_group. clone( ) . group_id)
130
+ } else {
131
+ assert ! ( false )
132
+ }
133
+ }
134
+
101
135
#[ tokio:: test( flavor = "multi_thread" , worker_threads = 10 ) ]
102
136
async fn test_subscribe_messages ( ) {
103
137
let amal = ClientBuilder :: new_test_client ( & generate_local_wallet ( ) ) . await ;
0 commit comments