xmtp_api_d14n/endpoints/v3/mls/
send_welcome_messages.rs1use derive_builder::Builder;
2use prost::Message;
3use prost::bytes::Bytes;
4use std::borrow::Cow;
5use xmtp_proto::api::{BodyError, Endpoint};
6use xmtp_proto::xmtp::mls::api::v1::{SendWelcomeMessagesRequest, WelcomeMessageInput};
7
8#[derive(Debug, Builder, Default)]
9#[builder(setter(strip_option), build_fn(error = "BodyError"))]
10pub struct SendWelcomeMessages {
11 #[builder(setter(into))]
12 messages: Vec<WelcomeMessageInput>,
13}
14
15impl SendWelcomeMessages {
16 pub fn builder() -> SendWelcomeMessagesBuilder {
17 Default::default()
18 }
19}
20
21impl Endpoint for SendWelcomeMessages {
22 type Output = ();
23 fn grpc_endpoint(&self) -> Cow<'static, str> {
24 xmtp_proto::path_and_query::<SendWelcomeMessagesRequest>()
25 }
26
27 fn body(&self) -> Result<Bytes, BodyError> {
28 Ok(SendWelcomeMessagesRequest {
29 messages: self.messages.clone(),
30 }
31 .encode_to_vec()
32 .into())
33 }
34}
35
36#[cfg(test)]
37mod test {
38 use crate::v3::SendWelcomeMessages;
39 use xmtp_api_grpc::test::NodeGoClient;
40 use xmtp_proto::xmtp::mls::api::v1::{
41 SendWelcomeMessagesRequest, WelcomeMessageInput, welcome_message_input,
42 };
43 use xmtp_proto::{api, prelude::*};
44
45 #[xmtp_common::test]
46 fn test_file_descriptor() {
47 let pnq = xmtp_proto::path_and_query::<SendWelcomeMessagesRequest>();
48 println!("{}", pnq);
49 }
50
51 #[xmtp_common::test]
52 fn test_grpc_endpoint_returns_correct_path() {
53 let endpoint = SendWelcomeMessages::default();
54 assert_eq!(
55 endpoint.grpc_endpoint(),
56 "/xmtp.mls.api.v1.MlsApi/SendWelcomeMessages"
57 );
58 }
59
60 #[xmtp_common::test]
61 async fn test_send_welcome_messages() {
62 let welcome_message = WelcomeMessageInput {
63 version: Some(welcome_message_input::Version::V1(Default::default())),
64 };
65 let client = NodeGoClient::create();
66 let client = client.build().unwrap();
67 let endpoint = SendWelcomeMessages::builder()
68 .messages(vec![welcome_message])
69 .build()
70 .unwrap();
71
72 let result = api::ignore(endpoint).query(&client).await;
73 assert!(result.is_err())
74 }
75}