slack_rust/apps/
connections_open.rs1use crate::error::Error;
5use crate::http_client::{get_slack_url, ResponseMetadata, SlackWebAPIClient};
6use serde::{Deserialize, Serialize};
7use serde_with::skip_serializing_none;
8
9#[skip_serializing_none]
10#[derive(Deserialize, Serialize, Debug, Default, PartialEq)]
11pub struct ConnectionsOpenResponse {
12 pub ok: bool,
13 pub error: Option<String>,
14 pub response_metadata: Option<ResponseMetadata>,
15 pub url: Option<String>,
16}
17
18pub async fn connections_open<T>(
21 client: &T,
22 app_token: &str,
23) -> Result<ConnectionsOpenResponse, Error>
24where
25 T: SlackWebAPIClient,
26{
27 let url = get_slack_url("apps.connections.open");
28
29 client.post(&url, app_token).await.and_then(|result| {
30 serde_json::from_str::<ConnectionsOpenResponse>(&result).map_err(Error::SerdeJsonError)
31 })
32}
33
34#[cfg(test)]
35mod test {
36 use super::*;
37 use crate::http_client::MockSlackWebAPIClient;
38
39 #[test]
40 fn convert_response() {
41 let response = ConnectionsOpenResponse {
42 ok: true,
43 url: Some("wss://wss-somethiing.slack.com/link/?ticket=12348&app_id=5678".to_string()),
44 ..Default::default()
45 };
46 let json = r##"{
47 "ok": true,
48 "url": "wss://wss-somethiing.slack.com/link/?ticket=12348&app_id=5678"
49}"##;
50
51 let j = serde_json::to_string_pretty(&response).unwrap();
52 assert_eq!(json, j);
53
54 let s = serde_json::from_str::<ConnectionsOpenResponse>(json).unwrap();
55 assert_eq!(response, s);
56 }
57
58 #[async_std::test]
59 async fn test_connections_open() {
60 let mut mock = MockSlackWebAPIClient::new();
61 mock.expect_post().returning(|_, _| {
62 Ok(r##"{
63 "ok": true,
64 "url": "wss://wss-somethiing.slack.com/link/?ticket=12348&app_id=5678"
65 }"##
66 .to_string())
67 });
68
69 let response = connections_open(&mock, &"test_token".to_string())
70 .await
71 .unwrap();
72 let expect = ConnectionsOpenResponse {
73 ok: true,
74 url: Some("wss://wss-somethiing.slack.com/link/?ticket=12348&app_id=5678".to_string()),
75 ..Default::default()
76 };
77
78 assert_eq!(expect, response);
79 }
80}