finga
7b0e4b4a31
On the `reset` page an email address can be submitted. If an account associated with the submitted email address an email is sent containing an URL. This URL can be used to set a new password. - Add GPLv3 for licensing - Add dependencies - `rocket_contrib` to be able to use handlebar templates - `anyhow` to handle errors - `log` for logging - `ldap3` to communicate with a LDAP server - `lettre` and `lettre_email` to handle the generation of emails and to send them - `rand` to generate random keys - Add `README.org` which is also used to generate `README.md` - Add configuration parameters - domain - LDAP - server - base - filter - bind - password - Change default development address to 0.0.0.0 - Add structs to handle data - Add functions to handle password reset actions - `reset_prepare()` to generate a new key, send it to the requestor and keep it in the memory - `set_password()` to check for the key and set the password - Add routes - Add tests - Add templates - `reset.html.hbs` to submit an email address - `reset_key.html.hbs` to set the new password
26 lines
870 B
Rust
26 lines
870 B
Rust
use rocket::{self, local::Client, routes};
|
|
|
|
#[test]
|
|
fn index() {
|
|
let rocket = rocket::ignite().mount("/", routes![super::index, super::reset]);
|
|
let client = Client::new(rocket).unwrap();
|
|
let mut response = client.get("/").dispatch();
|
|
assert_eq!(response.status().code, 303);
|
|
assert!(response.body().is_none());
|
|
for h in response.headers().iter() {
|
|
match h.name.as_str() {
|
|
"Location" => assert_eq!(h.value, "/reset"),
|
|
"Content-Length" => assert_eq!(h.value.parse::<i32>().unwrap(), 0),
|
|
_ => { /* let these through */ }
|
|
}
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn reset() {
|
|
let rocket = rocket::ignite().mount("/", routes![super::reset]);
|
|
let client = Client::new(rocket).unwrap();
|
|
let mut response = client.get("/reset").dispatch();
|
|
assert_eq!(response.body_string(), Some("Reset ldap0r!".into()));
|
|
}
|