Skip to content

Commit

Permalink
Add integration test for getting and creating user.
Browse files Browse the repository at this point in the history
  • Loading branch information
ivarflakstad committed Mar 25, 2024
1 parent e870efd commit 8c20769
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 9 deletions.
4 changes: 2 additions & 2 deletions server/src/users/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pub use models::*;

mod models;
mod selectors;
mod services;
pub mod selectors;
pub mod services;
8 changes: 2 additions & 6 deletions server/src/users/selectors.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
use axum::extract::State;
use sqlx::types::uuid;
use sqlx::{Acquire, PgPool};
use sqlx::types::uuid;

use crate::users::User;

#[tracing::instrument(level = "debug", ret, err)]
async fn get_user(
State(pool): State<PgPool>,
user_id: uuid::Uuid,
) -> color_eyre::Result<Option<User>> {
pub async fn get_user(pool: PgPool, user_id: uuid::Uuid) -> color_eyre::Result<Option<User>> {
let mut conn = pool.acquire().await?;
let user = sqlx::query_as!(User, "SELECT * FROM users WHERE user_id = $1", user_id)
.fetch_optional(conn.acquire().await?)
Expand Down
5 changes: 4 additions & 1 deletion server/src/users/services.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ use sqlx::{Acquire, PgPool};
use crate::users::{CreateUser, User};

#[tracing::instrument(level = "debug", ret, err)]
async fn create_user(pool: PgPool, create_user: CreateUser) -> color_eyre::Result<Option<User>> {
pub async fn create_user(
pool: PgPool,
create_user: CreateUser,
) -> color_eyre::Result<Option<User>> {
let mut conn = pool.acquire().await?;

if let Some(password_hash) = create_user.password_hash.expose() {
Expand Down
23 changes: 23 additions & 0 deletions server/tests/users.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
use sqlx::PgPool;

use server::users::selectors::get_user;
use server::users::services::create_user;
use server::users::CreateUser;

#[sqlx::test]
async fn get_users_test(pool: PgPool) -> sqlx::Result<()> {
let user = get_user(pool.clone(), uuid::Uuid::nil()).await.unwrap();
assert!(user.is_none());

let new_user = create_user(
pool.clone(),
CreateUser {
email: Default::default(),
username: Default::default(),
password_hash: Some("password".to_string()).into(),
access_token: Default::default(),
},
)
.await
.unwrap()
.unwrap();

let user = get_user(pool.clone(), new_user.user_id).await.unwrap();
assert!(user.is_some());

Ok(())
}

0 comments on commit 8c20769

Please sign in to comment.