remo 0.1.2

Nature Remo API client
Documentation
use super::error::APIError;
use super::Client;
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct User {
  pub id: String,
  pub nickname: String,
}

impl Client {
  pub fn get_user(&self) -> Result<User, APIError> {
    self.get::<User>("/1/users/me")
  }
}

#[cfg(test)]
mod tests {
  use super::APIError;
  use super::Client;
  use crate::tests::get_test_token;

  #[test]
  fn it_get_authorized_user() {
    let token = get_test_token();
    let client = Client::new(Some(token));
    let res = client.get_user().unwrap();
    assert_eq!(res.nickname, "uetchy");
  }

  #[test]
  fn it_fail_to_get_authorized_user() {
    let client = Client::new(None);
    let res = client.get_user();
    match res {
      Ok(_) => panic!("should not be ok"),
      Err(e) => match e {
        APIError::AuthError => assert!(true),
        _ => panic!("unintended error"),
      },
    }
  }
}