Browse Source

fix test following ldap udpate

Reviewed-on: #828
Reviewed-by: Mina Galić <me+git@igalic.co>
gh-pr-818
trinity-1686a 1 month ago
parent
commit
0cd26dfbf4
2 changed files with 34 additions and 29 deletions
  1. +22
    -20
      plume-models/src/config.rs
  2. +12
    -9
      plume-models/src/users.rs

+ 22
- 20
plume-models/src/config.rs View File

@@ -252,26 +252,28 @@ pub struct LdapConfig {
fn get_ldap_config() -> Option<LdapConfig> {
let addr = var("LDAP_ADDR").ok();
let base_dn = var("LDAP_BASE_DN").ok();
if addr.is_some() && base_dn.is_some() {
let tls = var("LDAP_TLS").unwrap_or_else(|_| "false".to_owned());
let tls = match tls.as_ref() {
"1" | "true" | "TRUE" => true,
"0" | "false" | "FALSE" => false,
_ => panic!("Invalid LDAP configuration : tls"),
};
let user_name_attr = var("LDAP_USER_NAME_ATTR").unwrap_or_else(|_| "cn".to_owned());
let mail_attr = var("LDAP_USER_MAIL_ATTR").unwrap_or_else(|_| "mail".to_owned());
Some(LdapConfig {
addr: addr.unwrap(),
base_dn: base_dn.unwrap(),
tls,
user_name_attr,
mail_attr,
})
} else if addr.is_some() || base_dn.is_some() {
panic!("Invalid LDAP configuration : both LDAP_ADDR and LDAP_BASE_DN must be set")
} else {
None
match (addr, base_dn) {
(Some(addr), Some(base_dn)) => {
let tls = var("LDAP_TLS").unwrap_or_else(|_| "false".to_owned());
let tls = match tls.as_ref() {
"1" | "true" | "TRUE" => true,
"0" | "false" | "FALSE" => false,
_ => panic!("Invalid LDAP configuration : tls"),
};
let user_name_attr = var("LDAP_USER_NAME_ATTR").unwrap_or_else(|_| "cn".to_owned());
let mail_attr = var("LDAP_USER_MAIL_ATTR").unwrap_or_else(|_| "mail".to_owned());
Some(LdapConfig {
addr,
base_dn,
tls,
user_name_attr,
mail_attr,
})
}
(None, None) => None,
(_, _) => {
panic!("Invalid LDAP configuration : both LDAP_ADDR and LDAP_BASE_DN must be set")
}
}
}



+ 12
- 9
plume-models/src/users.rs View File

@@ -322,7 +322,7 @@ impl User {
for entry in search.0 {
let entry = SearchEntry::construct(entry);
let email = entry.attrs.get("mail").and_then(|vec| vec.first());
if email.is_some() {
if let Some(email) = email {
let _ = ldap_conn.unbind();
return NewUser::new_local(
conn,
@@ -330,7 +330,7 @@ impl User {
name.to_owned(),
Role::Normal,
"",
email.unwrap().to_owned(),
email.to_owned(),
None,
);
}
@@ -1149,7 +1149,7 @@ pub(crate) mod tests {
Role::Admin,
"Hello there, I'm the admin",
"admin@example.com".to_owned(),
"invalid_admin_password".to_owned(),
Some("invalid_admin_password".to_owned()),
)
.unwrap();
let user = NewUser::new_local(
@@ -1159,7 +1159,7 @@ pub(crate) mod tests {
Role::Normal,
"Hello there, I'm no one",
"user@example.com".to_owned(),
"invalid_user_password".to_owned(),
Some("invalid_user_password".to_owned()),
)
.unwrap();
let other = NewUser::new_local(
@@ -1169,7 +1169,7 @@ pub(crate) mod tests {
Role::Normal,
"Hello there, I'm someone else",
"other@example.com".to_owned(),
"invalid_other_password".to_owned(),
Some("invalid_other_password".to_owned()),
)
.unwrap();
vec![admin, user, other]
@@ -1188,7 +1188,7 @@ pub(crate) mod tests {
Role::Normal,
"Hello I'm a test",
"test@example.com".to_owned(),
User::hash_pass("test_password").unwrap(),
Some(User::hash_pass("test_password").unwrap()),
)
.unwrap();
assert_eq!(
@@ -1271,12 +1271,15 @@ pub(crate) mod tests {
Role::Normal,
"Hello I'm a test",
"test@example.com".to_owned(),
User::hash_pass("test_password").unwrap(),
Some(User::hash_pass("test_password").unwrap()),
)
.unwrap();

assert!(test_user.auth("test_password"));
assert!(!test_user.auth("other_password"));
assert_eq!(
User::login(conn, "test", "test_password").unwrap().id,
test_user.id
);
assert!(User::login(conn, "test", "other_password").is_err());
Ok(())
});
}


Loading…
Cancel
Save