use crate::{Result, RideWithGpsClient, User};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize)]
pub struct CreateAuthTokenRequest {
pub email: String,
pub password: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct AuthToken {
pub auth_token: String,
pub user_id: Option<u64>,
pub user: Option<User>,
}
impl RideWithGpsClient {
pub fn create_auth_token(&self, email: &str, password: &str) -> Result<AuthToken> {
let request = CreateAuthTokenRequest {
email: email.to_string(),
password: password.to_string(),
};
self.post("/api/v1/auth_tokens", &request)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_auth_token_request_serialization() {
let request = CreateAuthTokenRequest {
email: "test@example.com".to_string(),
password: "password123".to_string(),
};
let json = serde_json::to_string(&request).unwrap();
assert!(json.contains("test@example.com"));
assert!(json.contains("password123"));
}
}