Validate user sign up
This commit is contained in:
parent
5db858bb19
commit
ada528b059
|
@ -360,6 +360,7 @@ dependencies = [
|
|||
"bcrypt",
|
||||
"diesel",
|
||||
"r2d2",
|
||||
"regex",
|
||||
"rocket",
|
||||
"rocket_contrib",
|
||||
"serde",
|
||||
|
|
|
@ -15,6 +15,7 @@ publish = true
|
|||
[dependencies]
|
||||
bcrypt = "0.8.2"
|
||||
r2d2 = "0.8.9"
|
||||
regex = "1.4.1"
|
||||
rocket = "0.4.5"
|
||||
serde = "1.0"
|
||||
serde_derive = "1.0"
|
||||
|
|
11
src/forms.rs
11
src/forms.rs
|
@ -1,3 +1,6 @@
|
|||
const PASSWORD_MIN_LENGTH: usize = 8;
|
||||
const PASSWORD_MAX_LENGTH: usize = 128;
|
||||
|
||||
#[derive(FromForm)]
|
||||
pub struct UserSignUp {
|
||||
pub username: String,
|
||||
|
@ -6,6 +9,12 @@ pub struct UserSignUp {
|
|||
|
||||
impl UserSignUp {
|
||||
pub fn is_valid(&self) -> bool {
|
||||
true
|
||||
let username_re = regex::Regex::new(r"^[a-z][a-z0-9]{3,}$").unwrap();
|
||||
let not_password_re = regex::Regex::new(r"^\s*$").unwrap();
|
||||
|
||||
username_re.is_match(self.username.as_str()) &&
|
||||
!not_password_re.is_match(self.password.as_str()) &&
|
||||
self.password.len() >= PASSWORD_MIN_LENGTH &&
|
||||
self.password.len() <= PASSWORD_MAX_LENGTH
|
||||
}
|
||||
}
|
||||
|
|
77
src/tests.rs
77
src/tests.rs
|
@ -1,5 +1,5 @@
|
|||
#[cfg(test)]
|
||||
mod test {
|
||||
mod requests {
|
||||
use crate::config;
|
||||
use crate::web;
|
||||
|
||||
|
@ -20,3 +20,78 @@ mod test {
|
|||
assert_eq!(response.status(), Status::Ok);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod forms {
|
||||
use crate::forms;
|
||||
|
||||
#[test]
|
||||
fn user_sign_up() {
|
||||
let form = forms::UserSignUp {
|
||||
username: "kotovalexarian".to_string(),
|
||||
password: "q1w2e3r4t5y6".to_string(),
|
||||
};
|
||||
|
||||
assert_eq!(form.is_valid(), true);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn user_sign_up_with_empty_username() {
|
||||
let form = forms::UserSignUp {
|
||||
username: "".to_string(),
|
||||
password: "q1w2e3r4t5y6".to_string(),
|
||||
};
|
||||
|
||||
assert_eq!(form.is_valid(), false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn user_sign_up_with_blank_username() {
|
||||
let form = forms::UserSignUp {
|
||||
username: " ".to_string(),
|
||||
password: "q1w2e3r4t5y6".to_string(),
|
||||
};
|
||||
|
||||
assert_eq!(form.is_valid(), false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn user_sign_up_with_too_short_username() {
|
||||
let form = forms::UserSignUp {
|
||||
username: "foo".to_string(),
|
||||
password: "q1w2e3r4t5y6".to_string(),
|
||||
};
|
||||
|
||||
assert_eq!(form.is_valid(), false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn user_sign_up_with_empty_password() {
|
||||
let form = forms::UserSignUp {
|
||||
username: "kotovalexarian".to_string(),
|
||||
password: "".to_string(),
|
||||
};
|
||||
|
||||
assert_eq!(form.is_valid(), false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn user_sign_up_with_blank_password() {
|
||||
let form = forms::UserSignUp {
|
||||
username: "kotovalexarian".to_string(),
|
||||
password: " ".to_string(),
|
||||
};
|
||||
|
||||
assert_eq!(form.is_valid(), false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn user_sign_up_with_too_short_password() {
|
||||
let form = forms::UserSignUp {
|
||||
username: "kotovalexarian".to_string(),
|
||||
password: "1234567".to_string(),
|
||||
};
|
||||
|
||||
assert_eq!(form.is_valid(), false);
|
||||
}
|
||||
}
|
||||
|
|
Reference in New Issue