Get User profile endpoint (#18)
Rust Build / Rustfmt (push) Successful in 38s
Rust Build / Test Suite (push) Failing after 1m43s
Rust Build / Check (push) Successful in 1m52s
Rust Build / Clippy (push) Successful in 1m10s
Rust Build / build (push) Successful in 2m4s
Rust Build / Rustfmt (pull_request) Successful in 1m9s
Rust Build / Clippy (pull_request) Successful in 1m17s
Rust Build / Check (pull_request) Successful in 1m36s

Reviewed-on: phoenix/textsender_auth#18
This commit was merged in pull request #18.
This commit is contained in:
2026-07-01 22:37:25 -04:00
parent 438b19e170
commit 9dba08f179
6 changed files with 183 additions and 248 deletions
+104
View File
@@ -225,6 +225,29 @@ pub mod requests {
Err(err) => Err(err),
}
}
/// Function to call get user profile endpoint
pub async fn get_user_profile(
app: &axum::Router,
user_id: &uuid::Uuid,
) -> Result<axum::response::Response, axum::http::Error> {
let url = super::util::format_url_with_value(
textsender_auth::callers::endpoints::GET_USER_PROFILE,
user_id,
);
match axum::http::Request::builder()
.method(axum::http::Method::GET)
.uri(url)
.header(axum::http::header::CONTENT_TYPE, "application/json")
.body(axum::body::Body::empty())
{
Ok(req) => match app.clone().oneshot(req).await {
Ok(resp) => Ok(resp),
Err(err) => Err(axum::http::Error::from(err)),
},
Err(err) => Err(err),
}
}
}
/// Test user firstname
@@ -272,6 +295,11 @@ mod util {
Err(err) => Err(std::io::Error::other(err.to_string())),
}
}
pub fn format_url_with_value(endpoint: &str, value: &uuid::Uuid) -> String {
let last = endpoint.len() - 5;
format!("{}/{value}", &endpoint[0..last])
}
}
mod flow {
@@ -989,3 +1017,79 @@ async fn test_update_name_of_password() {
}
}
}
#[tokio::test]
async fn test_get_user_profile() {
let tm_pool = db_mgr::get_pool().await.unwrap();
let db_name = db_mgr::generate_db_name().await;
match db_mgr::create_database(&tm_pool, &db_name).await {
Ok(_) => {
println!("Success");
}
Err(e) => {
assert!(false, "Error: {:?}", e.to_string());
}
}
let pool = db_mgr::connect_to_db(&db_name).await.unwrap();
db::init::migrations(&pool).await;
let app = init::routes().await.layer(axum::Extension(pool));
let user_id = match flow::register_user(&app).await {
Ok(user) => match flow::login_user(&app, &user.username, TEST_PASSWORD).await {
Ok(login_result) => {
assert_eq!(
false,
login_result.access_token.is_empty(),
"Access token is empty when it should not be"
);
login_result.user_id
}
Err(err) => {
assert!(false, "Error: {err:?}");
uuid::Uuid::nil()
}
},
Err(err) => {
assert!(false, "Error: {err:?}");
uuid::Uuid::nil()
}
};
assert_eq!(false, user_id.is_nil(), "User Id should not be empty");
match requests::get_user_profile(&app, &user_id).await {
Ok(response) => {
match util::convert_response::<
textsender_auth::callers::login::response::GetUserProfileResponse,
>(response)
.await
{
Ok(response) => {
assert_eq!(false, response.data.is_empty(), "No User Profile found");
let user_profile = &response.data[0];
assert_eq!(
TEST_USERNAME, user_profile.username,
"Username does not match"
);
}
Err(err) => {
assert!(false, "Error: {err:?}");
}
}
}
Err(err) => {
assert!(false, "Error: {err:?}");
}
}
match db_mgr::drop_database(&tm_pool, &db_name).await {
Ok(()) => {}
Err(err) => {
assert!(false, "Error: {err:?}");
}
}
}