Validate user sign up
This commit is contained in:
parent
5db858bb19
commit
ada528b059
|
@ -360,6 +360,7 @@ dependencies = [
|
||||||
"bcrypt",
|
"bcrypt",
|
||||||
"diesel",
|
"diesel",
|
||||||
"r2d2",
|
"r2d2",
|
||||||
|
"regex",
|
||||||
"rocket",
|
"rocket",
|
||||||
"rocket_contrib",
|
"rocket_contrib",
|
||||||
"serde",
|
"serde",
|
||||||
|
|
|
@ -15,6 +15,7 @@ publish = true
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bcrypt = "0.8.2"
|
bcrypt = "0.8.2"
|
||||||
r2d2 = "0.8.9"
|
r2d2 = "0.8.9"
|
||||||
|
regex = "1.4.1"
|
||||||
rocket = "0.4.5"
|
rocket = "0.4.5"
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
serde_derive = "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)]
|
#[derive(FromForm)]
|
||||||
pub struct UserSignUp {
|
pub struct UserSignUp {
|
||||||
pub username: String,
|
pub username: String,
|
||||||
|
@ -6,6 +9,12 @@ pub struct UserSignUp {
|
||||||
|
|
||||||
impl UserSignUp {
|
impl UserSignUp {
|
||||||
pub fn is_valid(&self) -> bool {
|
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)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod requests {
|
||||||
use crate::config;
|
use crate::config;
|
||||||
use crate::web;
|
use crate::web;
|
||||||
|
|
||||||
|
@ -20,3 +20,78 @@ mod test {
|
||||||
assert_eq!(response.status(), Status::Ok);
|
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