Add test for duplicate username.
This commit is contained in:
parent
8d040ad368
commit
9292454dd3
1 changed files with 43 additions and 16 deletions
|
@ -233,6 +233,8 @@ pub(crate) async fn create_user(
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use axum::http::StatusCode;
|
||||
|
||||
use crate::{
|
||||
db::get_pool,
|
||||
templates::{CreateUser, CreateUserSuccess},
|
||||
|
@ -248,13 +250,15 @@ mod test {
|
|||
let server = server_with_pool(&pool).await;
|
||||
let body = massage(GOOD_FORM);
|
||||
|
||||
let _resp = server
|
||||
let resp = server
|
||||
.post("/signup")
|
||||
.expect_failure() // 303 is "failure"
|
||||
.bytes(body)
|
||||
.content_type(FORM_CONTENT_TYPE)
|
||||
.await;
|
||||
|
||||
assert_eq!(StatusCode::SEE_OTHER, resp.status_code());
|
||||
|
||||
// get the new user from the db
|
||||
let user = User::try_get("test_user", &pool).await;
|
||||
assert!(user.is_ok());
|
||||
|
@ -292,10 +296,8 @@ mod test {
|
|||
// honestly this is basically the whole suite here
|
||||
//-************************************************************************
|
||||
mod failure {
|
||||
use axum::http::StatusCode;
|
||||
|
||||
use super::*;
|
||||
use crate::signup::CreateUserError;
|
||||
use crate::signup::{CreateUserError, CreateUserErrorKind};
|
||||
|
||||
// various ways to fuck up signup
|
||||
const PASSWORD_MISMATCH_FORM: &str =
|
||||
|
@ -328,8 +330,7 @@ mod test {
|
|||
assert!(user.is_err());
|
||||
|
||||
let body = std::str::from_utf8(resp.bytes()).unwrap();
|
||||
let expected =
|
||||
CreateUserError(crate::signup::CreateUserErrorKind::PasswordMismatch).to_string();
|
||||
let expected = CreateUserError(CreateUserErrorKind::PasswordMismatch).to_string();
|
||||
assert_eq!(&expected, body);
|
||||
}
|
||||
|
||||
|
@ -352,8 +353,7 @@ mod test {
|
|||
assert!(user.is_err());
|
||||
|
||||
let body = std::str::from_utf8(resp.bytes()).unwrap();
|
||||
let expected =
|
||||
CreateUserError(crate::signup::CreateUserErrorKind::BadPassword).to_string();
|
||||
let expected = CreateUserError(CreateUserErrorKind::BadPassword).to_string();
|
||||
assert_eq!(&expected, body);
|
||||
}
|
||||
|
||||
|
@ -376,8 +376,7 @@ mod test {
|
|||
assert!(user.is_err());
|
||||
|
||||
let body = std::str::from_utf8(resp.bytes()).unwrap();
|
||||
let expected =
|
||||
CreateUserError(crate::signup::CreateUserErrorKind::BadPassword).to_string();
|
||||
let expected = CreateUserError(CreateUserErrorKind::BadPassword).to_string();
|
||||
assert_eq!(&expected, body);
|
||||
}
|
||||
|
||||
|
@ -400,8 +399,7 @@ mod test {
|
|||
assert!(user.is_err());
|
||||
|
||||
let body = std::str::from_utf8(resp.bytes()).unwrap();
|
||||
let expected =
|
||||
CreateUserError(crate::signup::CreateUserErrorKind::BadUsername).to_string();
|
||||
let expected = CreateUserError(CreateUserErrorKind::BadUsername).to_string();
|
||||
assert_eq!(&expected, body);
|
||||
}
|
||||
|
||||
|
@ -424,8 +422,38 @@ mod test {
|
|||
assert!(user.is_err());
|
||||
|
||||
let body = std::str::from_utf8(resp.bytes()).unwrap();
|
||||
let expected =
|
||||
CreateUserError(crate::signup::CreateUserErrorKind::BadUsername).to_string();
|
||||
let expected = CreateUserError(CreateUserErrorKind::BadUsername).to_string();
|
||||
assert_eq!(&expected, body);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn username_duplicate() {
|
||||
let pool = get_pool().await;
|
||||
let server = server_with_pool(&pool).await;
|
||||
let body = massage(GOOD_FORM);
|
||||
|
||||
let _resp = server
|
||||
.post("/signup")
|
||||
.expect_failure() // 303 is "failure"
|
||||
.bytes(body.clone())
|
||||
.content_type(FORM_CONTENT_TYPE)
|
||||
.await;
|
||||
|
||||
// get the new user from the db
|
||||
let user = User::try_get("test_user", &pool).await;
|
||||
assert!(user.is_ok());
|
||||
|
||||
// now try again
|
||||
let resp = server
|
||||
.post("/signup")
|
||||
.expect_success()
|
||||
.bytes(body)
|
||||
.content_type(FORM_CONTENT_TYPE)
|
||||
.await;
|
||||
|
||||
assert_eq!(resp.status_code(), StatusCode::OK);
|
||||
let expected = CreateUserError(CreateUserErrorKind::AlreadyExists).to_string();
|
||||
let body = std::str::from_utf8(resp.bytes()).unwrap();
|
||||
assert_eq!(&expected, body);
|
||||
}
|
||||
|
||||
|
@ -448,8 +476,7 @@ mod test {
|
|||
assert!(user.is_err());
|
||||
|
||||
let body = std::str::from_utf8(resp.bytes()).unwrap();
|
||||
let expected =
|
||||
CreateUserError(crate::signup::CreateUserErrorKind::BadDisplayname).to_string();
|
||||
let expected = CreateUserError(CreateUserErrorKind::BadDisplayname).to_string();
|
||||
assert_eq!(&expected, body);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue