From 0f7f826f720751c716065c149fd556f517ab7856 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 12 Jan 2023 11:37:29 +0100 Subject: [PATCH] tests for dn filter in users and groups --- server/src/domain/ldap/group.rs | 45 +++++++++++++++++++++++++++++++++ server/src/domain/ldap/user.rs | 45 +++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/server/src/domain/ldap/group.rs b/server/src/domain/ldap/group.rs index 4555e67..d88c280 100644 --- a/server/src/domain/ldap/group.rs +++ b/server/src/domain/ldap/group.rs @@ -221,3 +221,48 @@ pub async fn get_groups_list( }) .collect::>()) } + +#[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())) + ); + } +} diff --git a/server/src/domain/ldap/user.rs b/server/src/domain/ldap/user.rs index caddb6d..3a67848 100644 --- a/server/src/domain/ldap/user.rs +++ b/server/src/domain/ldap/user.rs @@ -232,3 +232,48 @@ pub async fn get_user_list( }) .collect::>()) } + +#[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())) + ); + } +}