tests for dn filter in users and groups

This commit is contained in:
Luca 2023-01-12 11:37:29 +01:00 committed by nitnelave
parent aaa6b065cc
commit 398b0d79ef
2 changed files with 91 additions and 1 deletions

View File

@ -135,7 +135,7 @@ fn convert_group_filter(
) {
Ok(value) => GroupRequestFilter::DisplayName(value),
Err(_) => {
warn!("Invalid dn filter on user: {}", value);
warn!("Invalid dn filter on group: {}", value);
GroupRequestFilter::Not(Box::new(GroupRequestFilter::And(vec![])))
}
},
@ -233,3 +233,48 @@ pub async fn get_groups_list<Backend: BackendHandler>(
})
.collect::<Vec<_>>())
}
#[cfg(test)]
mod tests {
use ldap3_proto::LdapFilter;
use crate::domain::ldap::group::GroupRequestFilter;
use crate::domain::ldap::utils::{parse_distinguished_name, LdapInfo};
use super::convert_group_filter;
static BASE_DN_STR: &str = "dc=example,dc=com";
#[test]
fn test_convert_group_filter() {
let ldap_info = LdapInfo {
base_dn: parse_distinguished_name(BASE_DN_STR).unwrap(),
base_dn_str: BASE_DN_STR.to_string(),
ignored_user_attributes: vec![],
ignored_group_attributes: vec![],
};
// TODO: test all other match cases
let res = convert_group_filter(
&ldap_info,
&LdapFilter::Equality(
"dn".to_string(),
"uid=test,ou=groups,dc=example,dc=com".to_string(),
),
);
assert_eq!(
res,
Ok(GroupRequestFilter::DisplayName("test".to_string().into()))
);
let res = convert_group_filter(
&ldap_info,
&LdapFilter::Equality(
"dn".to_string(),
"cn=test,ou=groups,dc=example,dc=com".to_string(),
),
);
assert_eq!(
res,
Ok(GroupRequestFilter::DisplayName("test".to_string().into()))
);
}
}

View File

@ -247,3 +247,48 @@ pub async fn get_user_list<Backend: BackendHandler>(
})
.collect::<Vec<_>>())
}
#[cfg(test)]
mod tests {
use ldap3_proto::LdapFilter;
use crate::domain::ldap::user::UserRequestFilter;
use crate::domain::ldap::utils::{parse_distinguished_name, LdapInfo};
use super::convert_user_filter;
static BASE_DN_STR: &str = "dc=example,dc=com";
#[test]
fn test_convert_user_filter() {
let ldap_info = LdapInfo {
base_dn: parse_distinguished_name(BASE_DN_STR).unwrap(),
base_dn_str: BASE_DN_STR.to_string(),
ignored_user_attributes: vec![],
ignored_group_attributes: vec![],
};
// TODO: test all other match cases
let res = convert_user_filter(
&ldap_info,
&LdapFilter::Equality(
"dn".to_string(),
"uid=test,ou=people,dc=example,dc=com".to_string(),
),
);
assert_eq!(
res,
Ok(UserRequestFilter::UserId("test".to_string().into()))
);
let res = convert_user_filter(
&ldap_info,
&LdapFilter::Equality(
"dn".to_string(),
"cn=test,ou=people,dc=example,dc=com".to_string(),
),
);
assert_eq!(
res,
Ok(UserRequestFilter::UserId("test".to_string().into()))
);
}
}