diff --git a/twiq/_env b/twiq/_env new file mode 100644 index 00000000..17ab82d0 --- /dev/null +++ b/twiq/_env @@ -0,0 +1 @@ +TWITTER_BEARER_TOKEN= diff --git a/twiq/crates/domain/src/lib.rs b/twiq/crates/domain/src/lib.rs index 4285f218..6a4777c2 100644 --- a/twiq/crates/domain/src/lib.rs +++ b/twiq/crates/domain/src/lib.rs @@ -1,5 +1,7 @@ #[cfg(test)] mod tests { + use reqwest::{Client, Method}; + #[tokio::test] async fn it_works() -> anyhow::Result<()> { #[derive(Debug, serde::Deserialize)] @@ -11,4 +13,33 @@ mod tests { assert_eq!(json.date, "2022-08-07"); Ok(()) } + + #[tokio::test] + async fn get_user() -> anyhow::Result<()> { + #[derive(Debug, serde::Deserialize, serde::Serialize)] + struct UserResponse { + data: UserResponseData, + } + #[derive(Debug, serde::Deserialize, serde::Serialize)] + struct UserResponseData { + id: String, + name: String, + username: String, + } + + let bearer_token = std::env::var("TWITTER_BEARER_TOKEN")?; + let url = format!("https://api.twitter.com/2/users/by/username/{}", "bouzuya"); + let response = Client::builder() + .build()? + .request(Method::GET, url) + .bearer_auth(bearer_token) + .send() + .await?; + let json: UserResponse = response.json().await?; + assert_eq!(json.data.id, "125962981"); + assert_eq!(json.data.name, "bouzuya"); + assert_eq!(json.data.username, "bouzuya"); + assert_ne!(serde_json::to_string(&json)?, ""); + Ok(()) + } }