Make register and login return UserObject
This commit is contained in:
parent
478313507f
commit
8b09d16542
|
@ -1,9 +1,9 @@
|
||||||
pub mod register {
|
pub mod register {
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use serde_json::json;
|
use serde_json::{from_str, json};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
api::{limits::LimitType, schemas::RegisterSchema, types::ErrorResponse},
|
api::{limits::LimitType, schemas::RegisterSchema, types::ErrorResponse, Token},
|
||||||
errors::InstanceServerError,
|
errors::InstanceServerError,
|
||||||
instance::Instance,
|
instance::Instance,
|
||||||
};
|
};
|
||||||
|
@ -43,9 +43,12 @@ pub mod register {
|
||||||
|
|
||||||
let response_unwrap = response.unwrap();
|
let response_unwrap = response.unwrap();
|
||||||
let status = response_unwrap.status();
|
let status = response_unwrap.status();
|
||||||
let response_text_string = response_unwrap.text().await.unwrap();
|
let response_unwrap_text = response_unwrap.text().await.unwrap();
|
||||||
|
println!("{}", response_unwrap_text);
|
||||||
|
let token = from_str::<Token>(&response_unwrap_text).unwrap();
|
||||||
|
let token = token.token;
|
||||||
if status.is_client_error() {
|
if status.is_client_error() {
|
||||||
let json: ErrorResponse = serde_json::from_str(&response_text_string).unwrap();
|
let json: ErrorResponse = serde_json::from_str(&token).unwrap();
|
||||||
let error_type = json.errors.errors.iter().next().unwrap().0.to_owned();
|
let error_type = json.errors.errors.iter().next().unwrap().0.to_owned();
|
||||||
let mut error = "".to_string();
|
let mut error = "".to_string();
|
||||||
for (_, value) in json.errors.errors.iter() {
|
for (_, value) in json.errors.errors.iter() {
|
||||||
|
@ -55,12 +58,9 @@ pub mod register {
|
||||||
}
|
}
|
||||||
return Err(InstanceServerError::InvalidFormBodyError { error_type, error });
|
return Err(InstanceServerError::InvalidFormBodyError { error_type, error });
|
||||||
}
|
}
|
||||||
let user_object = self
|
let user_object = self.get_user(token.clone(), None).await.unwrap();
|
||||||
.get_user(response_text_string.clone(), None)
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
let settings = crate::api::types::User::get_settings(
|
let settings = crate::api::types::User::get_settings(
|
||||||
&response_text_string,
|
&token,
|
||||||
&self.urls.get_api().to_string(),
|
&self.urls.get_api().to_string(),
|
||||||
&mut self.limits,
|
&mut self.limits,
|
||||||
)
|
)
|
||||||
|
@ -68,7 +68,7 @@ pub mod register {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let user: crate::api::types::User = crate::api::types::User::new(
|
let user: crate::api::types::User = crate::api::types::User::new(
|
||||||
self,
|
self,
|
||||||
response_text_string.clone(),
|
token.clone(),
|
||||||
cloned_limits,
|
cloned_limits,
|
||||||
settings,
|
settings,
|
||||||
Some(user_object),
|
Some(user_object),
|
||||||
|
@ -81,42 +81,9 @@ pub mod register {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use crate::api::schemas::{AuthEmail, AuthPassword, AuthUsername, RegisterSchema};
|
use crate::api::schemas::{AuthEmail, AuthPassword, AuthUsername, RegisterSchema};
|
||||||
use crate::errors::InstanceServerError;
|
|
||||||
use crate::instance::Instance;
|
use crate::instance::Instance;
|
||||||
use crate::limit::LimitedRequester;
|
use crate::limit::LimitedRequester;
|
||||||
use crate::URLBundle;
|
use crate::URLBundle;
|
||||||
#[tokio::test]
|
|
||||||
async fn test_incomplete_registration() {
|
|
||||||
let urls = URLBundle::new(
|
|
||||||
"http://localhost:3001/api".to_string(),
|
|
||||||
"http://localhost:3001".to_string(),
|
|
||||||
"http://localhost:3001".to_string(),
|
|
||||||
);
|
|
||||||
let limited_requester = LimitedRequester::new().await;
|
|
||||||
let mut test_instance = Instance::new(urls.clone(), limited_requester)
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
let reg = RegisterSchema::new(
|
|
||||||
AuthUsername::new("hiiii".to_string()).unwrap(),
|
|
||||||
None,
|
|
||||||
true,
|
|
||||||
Some(AuthEmail::new("me@mail.xy".to_string()).unwrap()),
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
InstanceServerError::InvalidFormBodyError {
|
|
||||||
error_type: "date_of_birth".to_string(),
|
|
||||||
error: "This field is required (BASE_TYPE_REQUIRED)".to_string()
|
|
||||||
},
|
|
||||||
test_instance.register_account(®).await.err().unwrap()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_registration() {
|
async fn test_registration() {
|
||||||
|
@ -133,7 +100,7 @@ mod test {
|
||||||
AuthUsername::new("Hiiii".to_string()).unwrap(),
|
AuthUsername::new("Hiiii".to_string()).unwrap(),
|
||||||
Some(AuthPassword::new("mysupersecurepass123!".to_string()).unwrap()),
|
Some(AuthPassword::new("mysupersecurepass123!".to_string()).unwrap()),
|
||||||
true,
|
true,
|
||||||
Some(AuthEmail::new("three12@aaaa.xyz".to_string()).unwrap()),
|
Some(AuthEmail::new("four5@aaaa.xyz".to_string()).unwrap()),
|
||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
Some("2000-01-01".to_string()),
|
Some("2000-01-01".to_string()),
|
||||||
|
@ -143,6 +110,5 @@ mod test {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let token = test_instance.register_account(®).await.unwrap().token;
|
let token = test_instance.register_account(®).await.unwrap().token;
|
||||||
println!("{}", token);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,16 +35,20 @@ impl<'a> User<'a> {
|
||||||
}
|
}
|
||||||
let request = reqwest::Client::new().get(url).bearer_auth(token);
|
let request = reqwest::Client::new().get(url).bearer_auth(token);
|
||||||
let mut requester = crate::limit::LimitedRequester::new().await;
|
let mut requester = crate::limit::LimitedRequester::new().await;
|
||||||
|
let mut cloned_limits = instance_limits.clone();
|
||||||
match requester
|
match requester
|
||||||
.send_request(
|
.send_request(
|
||||||
request,
|
request,
|
||||||
crate::api::limits::LimitType::Ip,
|
crate::api::limits::LimitType::Ip,
|
||||||
instance_limits,
|
instance_limits,
|
||||||
&mut Limits::default(),
|
&mut cloned_limits,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => Ok(serde_json::from_str(&result.text().await.unwrap()).unwrap()),
|
Ok(result) => {
|
||||||
|
let result_text = result.text().await.unwrap();
|
||||||
|
Ok(serde_json::from_str::<UserObject>(&result_text).unwrap())
|
||||||
|
}
|
||||||
Err(e) => Err(e),
|
Err(e) => Err(e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,13 +61,14 @@ impl<'a> User<'a> {
|
||||||
let request: reqwest::RequestBuilder = Client::new()
|
let request: reqwest::RequestBuilder = Client::new()
|
||||||
.get(format!("{}/users/@me/settings/", url_api))
|
.get(format!("{}/users/@me/settings/", url_api))
|
||||||
.bearer_auth(token);
|
.bearer_auth(token);
|
||||||
|
let mut cloned_limits = instance_limits.clone();
|
||||||
let mut requester = crate::limit::LimitedRequester::new().await;
|
let mut requester = crate::limit::LimitedRequester::new().await;
|
||||||
match requester
|
match requester
|
||||||
.send_request(
|
.send_request(
|
||||||
request,
|
request,
|
||||||
crate::api::limits::LimitType::Ip,
|
crate::api::limits::LimitType::Ip,
|
||||||
instance_limits,
|
instance_limits,
|
||||||
&mut Limits::default(),
|
&mut cloned_limits,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue