From cdf43f2a69056cc3ed5d2ca945960b4471498e52 Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Fri, 4 Apr 2025 21:14:30 -0500 Subject: [PATCH] server: cleanup extra mut in ldap handler --- server/src/infra/ldap/compare.rs | 10 +++--- server/src/infra/ldap/handler.rs | 11 +++--- server/src/infra/ldap/modify.rs | 14 ++++---- server/src/infra/ldap/search.rs | 58 ++++++++++++++++---------------- 4 files changed, 45 insertions(+), 48 deletions(-) diff --git a/server/src/infra/ldap/compare.rs b/server/src/infra/ldap/compare.rs index 3859cd5..7e93549 100644 --- a/server/src/infra/ldap/compare.rs +++ b/server/src/infra/ldap/compare.rs @@ -80,7 +80,7 @@ mod tests { }]) }); mock.expect_list_groups().returning(|_| Ok(vec![])); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let dn = "uid=bob,ou=people,dc=example,dc=com"; let request = LdapCompareRequest { dn: dn.to_string(), @@ -128,7 +128,7 @@ mod tests { attributes: Vec::new(), }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let dn = "uid=group,ou=groups,dc=example,dc=com"; let request = LdapCompareRequest { dn: dn.to_string(), @@ -155,7 +155,7 @@ mod tests { Ok(vec![]) }); mock.expect_list_groups().returning(|_| Ok(vec![])); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let dn = "uid=bob,ou=people,dc=example,dc=com"; let request = LdapCompareRequest { dn: dn.to_string(), @@ -189,7 +189,7 @@ mod tests { }]) }); mock.expect_list_groups().returning(|_| Ok(vec![])); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let dn = "uid=bob,ou=people,dc=example,dc=com"; let request = LdapCompareRequest { dn: dn.to_string(), @@ -222,7 +222,7 @@ mod tests { attributes: Vec::new(), }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let dn = "uid=group,ou=groups,dc=example,dc=com"; let request = LdapCompareRequest { dn: dn.to_string(), diff --git a/server/src/infra/ldap/handler.rs b/server/src/infra/ldap/handler.rs index 78628a4..bbc659a 100644 --- a/server/src/infra/ldap/handler.rs +++ b/server/src/infra/ldap/handler.rs @@ -139,10 +139,7 @@ impl LdapHandler LdapResult> { + pub async fn do_search_or_dse(&self, request: &LdapSearchRequest) -> LdapResult> { if is_root_dse_request(request) { debug!("rootDSE request"); return Ok(vec![ @@ -192,7 +189,7 @@ impl LdapHandler Vec { + async fn do_extended_request(&self, request: &LdapExtendedRequest) -> Vec { match request.name.as_str() { OID_PASSWORD_MODIFY => match LdapPasswordModifyRequest::try_from(request) { Ok(password_request) => { @@ -237,7 +234,7 @@ impl LdapHandler Vec { + pub async fn do_modify_request(&self, request: &LdapModifyRequest) -> Vec { let credentials = match self.get_credentials() { Credentials::Bound(cred) => cred, Credentials::Unbound(err) => return err, @@ -283,7 +280,7 @@ impl LdapHandler LdapResult> { + pub async fn do_compare(&self, request: LdapCompareRequest) -> LdapResult> { let req = make_search_request::( &self.ldap_info.base_dn_str, LdapFilter::Equality("dn".to_string(), request.dn.to_string()), diff --git a/server/src/infra/ldap/modify.rs b/server/src/infra/ldap/modify.rs index 81ad10c..35b28c0 100644 --- a/server/src/infra/ldap/modify.rs +++ b/server/src/infra/ldap/modify.rs @@ -210,7 +210,7 @@ mod tests { let mut mock = MockTestBackendHandler::new(); setup_target_user_groups(&mut mock, "bob", Vec::new()); expect_password_change(&mut mock, "bob"); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_password_modify_request("bob"); assert_eq!( ldap_handler.do_modify_request(&request).await, @@ -223,7 +223,7 @@ mod tests { let mut mock = MockTestBackendHandler::new(); setup_target_user_groups(&mut mock, "test", Vec::new()); expect_password_change(&mut mock, "test"); - let mut ldap_handler = setup_bound_handler_with_group(mock, "regular").await; + let ldap_handler = setup_bound_handler_with_group(mock, "regular").await; let request = make_password_modify_request("test"); assert_eq!( ldap_handler.do_modify_request(&request).await, @@ -236,7 +236,7 @@ mod tests { let mut mock = MockTestBackendHandler::new(); setup_target_user_groups(&mut mock, "bob", Vec::new()); expect_password_change(&mut mock, "bob"); - let mut ldap_handler = setup_bound_password_manager_handler(mock).await; + let ldap_handler = setup_bound_password_manager_handler(mock).await; let request = make_password_modify_request("bob"); assert_eq!( ldap_handler.do_modify_request(&request).await, @@ -248,7 +248,7 @@ mod tests { async fn test_modify_password_of_admin_as_password_manager() { let mut mock = MockTestBackendHandler::new(); setup_target_user_groups(&mut mock, "bob", vec!["lldap_admin"]); - let mut ldap_handler = setup_bound_password_manager_handler(mock).await; + let ldap_handler = setup_bound_password_manager_handler(mock).await; let request = make_password_modify_request("bob"); assert_eq!( ldap_handler.do_modify_request(&request).await, @@ -261,7 +261,7 @@ mod tests { #[tokio::test] async fn test_modify_password_of_other_regular_as_regular() { - let mut ldap_handler = + let ldap_handler = setup_bound_handler_with_group(MockTestBackendHandler::new(), "regular").await; let request = make_password_modify_request("bob"); assert_eq!( @@ -278,7 +278,7 @@ mod tests { let mut mock = MockTestBackendHandler::new(); setup_target_user_groups(&mut mock, "test", vec!["lldap_admin"]); expect_password_change(&mut mock, "test"); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_password_modify_request("test"); assert_eq!( ldap_handler.do_modify_request(&request).await, @@ -290,7 +290,7 @@ mod tests { async fn test_modify_password_invalid_number_of_values() { let mut mock = MockTestBackendHandler::new(); setup_target_user_groups(&mut mock, "bob", Vec::new()); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = { let target_user = "bob"; LdapModifyRequest { diff --git a/server/src/infra/ldap/search.rs b/server/src/infra/ldap/search.rs index 30203c6..dfec741 100644 --- a/server/src/infra/ldap/search.rs +++ b/server/src/infra/ldap/search.rs @@ -342,7 +342,7 @@ mod tests { #[tokio::test] async fn test_search_root_dse() { - let mut ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; + let ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; let request = LdapSearchRequest { base: "".to_string(), scope: LdapSearchScope::Base, @@ -383,7 +383,7 @@ mod tests { groups: None, }]) }); - let mut ldap_handler = setup_bound_handler_with_group(mock, "regular").await; + let ldap_handler = setup_bound_handler_with_group(mock, "regular").await; let request = make_user_search_request::(LdapFilter::And(vec![]), vec!["1.1".to_string()]); @@ -406,7 +406,7 @@ mod tests { .with(eq(Some(true.into())), eq(false)) .times(1) .return_once(|_, _| Ok(vec![])); - let mut ldap_handler = setup_bound_readonly_handler(mock).await; + let ldap_handler = setup_bound_readonly_handler(mock).await; let request = make_user_search_request::(LdapFilter::And(vec![]), vec!["1.1".to_string()]); @@ -437,7 +437,7 @@ mod tests { }]), }]) }); - let mut ldap_handler = setup_bound_readonly_handler(mock).await; + let ldap_handler = setup_bound_readonly_handler(mock).await; let request = make_user_search_request::( LdapFilter::And(vec![]), @@ -471,7 +471,7 @@ mod tests { ) .times(1) .return_once(|_, _| Ok(vec![])); - let mut ldap_handler = setup_bound_readonly_handler(mock).await; + let ldap_handler = setup_bound_readonly_handler(mock).await; let request = LdapSearchRequest { base: "uid=bob,ou=people,Dc=example,dc=com".to_string(), @@ -544,7 +544,7 @@ mod tests { }, ]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_user_search_request( LdapFilter::And(vec![]), vec![ @@ -684,7 +684,7 @@ mod tests { }, ]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_group_search_request( LdapFilter::And(vec![]), vec![ @@ -773,7 +773,7 @@ mod tests { attributes: Vec::new(), }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_group_search_request( LdapFilter::Equality("groupid".to_string(), "1".to_string()), vec!["dn"], @@ -823,7 +823,7 @@ mod tests { attributes: Vec::new(), }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_group_search_request( LdapFilter::And(vec![ LdapFilter::Equality("cN".to_string(), "Group_1".to_string()), @@ -894,7 +894,7 @@ mod tests { attributes: Vec::new(), }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_group_search_request( LdapFilter::Or(vec![LdapFilter::Not(Box::new(LdapFilter::Equality( "displayname".to_string(), @@ -965,7 +965,7 @@ mod tests { extra_group_object_classes: Vec::new(), }) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_group_search_request( LdapFilter::Equality("Attr".to_string(), "TEST".to_string()), vec!["cn"], @@ -995,7 +995,7 @@ mod tests { ])))) .times(1) .return_once(|_| Ok(vec![])); - let mut ldap_handler = setup_bound_readonly_handler(mock).await; + let ldap_handler = setup_bound_readonly_handler(mock).await; let request = LdapSearchRequest { base: "uid=rockstars,ou=groups,Dc=example,dc=com".to_string(), @@ -1015,7 +1015,7 @@ mod tests { #[tokio::test] async fn test_search_groups_unsupported_substring() { - let mut ldap_handler = setup_bound_readonly_handler(MockTestBackendHandler::new()).await; + let ldap_handler = setup_bound_readonly_handler(MockTestBackendHandler::new()).await; let request = make_group_search_request( LdapFilter::Substring("member".to_owned(), LdapSubstringFilter::default()), vec!["cn"], @@ -1040,7 +1040,7 @@ mod tests { .with(eq(Some(false.into()))) .times(1) .return_once(|_| Ok(vec![])); - let mut ldap_handler = setup_bound_readonly_handler(mock).await; + let ldap_handler = setup_bound_readonly_handler(mock).await; assert_eq!( ldap_handler.do_search_or_dse(&request).await, Ok(vec![make_search_success()]), @@ -1062,7 +1062,7 @@ mod tests { "Error getting groups".to_string(), )) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_group_search_request( LdapFilter::Or(vec![LdapFilter::Not(Box::new(LdapFilter::Equality( "displayname".to_string(), @@ -1081,7 +1081,7 @@ mod tests { #[tokio::test] async fn test_search_groups_filter_error() { - let mut ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; + let ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; let request = make_group_search_request( LdapFilter::And(vec![LdapFilter::Approx( "whatever".to_owned(), @@ -1145,7 +1145,7 @@ mod tests { ) .times(1) .return_once(|_, _| Ok(vec![])); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_user_search_request( LdapFilter::And(vec![LdapFilter::Or(vec![ LdapFilter::Not(Box::new(LdapFilter::Equality( @@ -1194,7 +1194,7 @@ mod tests { #[tokio::test] async fn test_search_unsupported_substring_filter() { - let mut ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; + let ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; let request = make_user_search_request( LdapFilter::Substring( "uuid".to_owned(), @@ -1231,7 +1231,7 @@ mod tests { ) .times(2) .returning(|_, _| Ok(vec![])); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_user_search_request( LdapFilter::Equality( "memberOf".to_string(), @@ -1259,7 +1259,7 @@ mod tests { .with(eq(Some(UserRequestFilter::from(false))), eq(false)) .times(1) .returning(|_, _| Ok(vec![])); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_user_search_request( LdapFilter::Equality( "memberOf".to_string(), @@ -1296,7 +1296,7 @@ mod tests { groups: None, }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_user_search_request( LdapFilter::And(vec![LdapFilter::Or(vec![LdapFilter::Not(Box::new( LdapFilter::Equality("displayname".to_string(), "bob".to_string()), @@ -1339,7 +1339,7 @@ mod tests { groups: None, }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_user_search_request( LdapFilter::Equality("objectClass".to_owned(), "CUSTOMuserCLASS".to_owned()), vec!["objectclass"], @@ -1402,7 +1402,7 @@ mod tests { attributes: Vec::new(), }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_search_request( "dc=example,dc=com", LdapFilter::And(vec![]), @@ -1486,7 +1486,7 @@ mod tests { attributes: Vec::new(), }]) }); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; // Test simple wildcard let request = @@ -1643,7 +1643,7 @@ mod tests { #[tokio::test] async fn test_search_wrong_base() { - let mut ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; + let ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; let request = make_search_request( "ou=users,dc=example,dc=com", LdapFilter::And(vec![]), @@ -1657,7 +1657,7 @@ mod tests { #[tokio::test] async fn test_search_unsupported_filters() { - let mut ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; + let ldap_handler = setup_bound_admin_handler(MockTestBackendHandler::new()).await; let request = make_user_search_request( LdapFilter::Approx("uid".to_owned(), "value".to_owned()), vec!["objectClass"], @@ -1678,7 +1678,7 @@ mod tests { .with(eq(Some(true.into())), eq(false)) .times(1) .return_once(|_, _| Ok(vec![])); - let mut ldap_handler = setup_bound_admin_handler(mock).await; + let ldap_handler = setup_bound_admin_handler(mock).await; let request = make_user_search_request( LdapFilter::Present("displayname".to_owned()), vec!["objectClass"], @@ -1691,7 +1691,7 @@ mod tests { #[tokio::test] async fn test_user_ou_search() { - let mut ldap_handler = setup_bound_readonly_handler(MockTestBackendHandler::new()).await; + let ldap_handler = setup_bound_readonly_handler(MockTestBackendHandler::new()).await; let request = LdapSearchRequest { base: "ou=people,dc=example,dc=com".to_owned(), scope: LdapSearchScope::Base, @@ -1777,7 +1777,7 @@ mod tests { extra_group_object_classes: vec![LdapObjectClass::from("customGroupClass")], }) }); - let mut ldap_handler = setup_bound_readonly_handler(mock).await; + let ldap_handler = setup_bound_readonly_handler(mock).await; let request = make_search_request( "dc=example,dc=com",