diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e1ae4b8a..5cb14721 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -244,6 +244,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build_docker: + needs: + - build + - cross_build + - cross_build_tools name: Build Docker image for ${{ matrix.platform }} runs-on: ubuntu-latest if: '!cancelled()' diff --git a/crates/directory/src/ldap/lookup.rs b/crates/directory/src/ldap/lookup.rs index 5e0d2d70..e32b7a6b 100644 --- a/crates/directory/src/ldap/lookup.rs +++ b/crates/directory/src/ldap/lookup.rs @@ -240,10 +240,11 @@ impl Directory for LdapDirectory { async fn query(&self, query: &str, params: &[&str]) -> crate::Result { let mut conn = self.pool.get().await?; + tracing::trace!(context = "directory", event = "query", query = query, params = ?params); Ok(if !params.is_empty() { let mut expanded_query = String::with_capacity(query.len() + params.len() * 2); - for (pos, item) in query.split('$').enumerate() { + for (pos, item) in query.split('?').enumerate() { if pos > 0 { if let Some(param) = params.get(pos - 1) { expanded_query.push_str(param); diff --git a/crates/directory/src/sql/lookup.rs b/crates/directory/src/sql/lookup.rs index 76a0c185..9019e136 100644 --- a/crates/directory/src/sql/lookup.rs +++ b/crates/directory/src/sql/lookup.rs @@ -140,6 +140,7 @@ impl Directory for SqlDirectory { } async fn query(&self, query: &str, params: &[&str]) -> crate::Result { + tracing::trace!(context = "directory", event = "query", query = query, params = ?params); let mut q = sqlx::query(query); for param in params { q = q.bind(param); diff --git a/tests/src/directory/ldap.rs b/tests/src/directory/ldap.rs index 5de83610..2ed81cb4 100644 --- a/tests/src/directory/ldap.rs +++ b/tests/src/directory/ldap.rs @@ -39,7 +39,17 @@ async fn ldap_directory() { .unwrap();*/ // Obtain directory handle - let handle = parse_config().directories.remove("ldap").unwrap(); + let mut config = parse_config(); + let lookups = config.lookups; + let handle = config.directories.remove("ldap").unwrap(); + + // Text lookup + assert!(lookups + .get("ldap/domains") + .unwrap() + .contains("example.org") + .await + .unwrap()); // Test authentication assert_eq!( diff --git a/tests/src/directory/mod.rs b/tests/src/directory/mod.rs index 2fbd197b..8e222b1c 100644 --- a/tests/src/directory/mod.rs +++ b/tests/src/directory/mod.rs @@ -62,9 +62,6 @@ email = "address" quota = "quota" type = "type" -[directory."sql".lookup] -domains = "SELECT name FROM domains WHERE name = ?" - [directory."ldap"] type = "ldap" address = "ldap://localhost:3893" diff --git a/tests/src/directory/sql.rs b/tests/src/directory/sql.rs index e84ac897..18c27722 100644 --- a/tests/src/directory/sql.rs +++ b/tests/src/directory/sql.rs @@ -31,13 +31,15 @@ async fn sql_directory() { // Enable logging /*tracing::subscriber::set_global_default( tracing_subscriber::FmtSubscriber::builder() - .with_max_level(tracing::Level::DEBUG) + .with_max_level(tracing::Level::TRACE) .finish(), ) .unwrap();*/ // Obtain directory handle - let handle = parse_config().directories.remove("sql").unwrap(); + let mut config = parse_config(); + let lookups = config.lookups; + let handle = config.directories.remove("sql").unwrap(); // Create tables create_test_directory(handle.as_ref()).await; @@ -80,6 +82,14 @@ async fn sql_directory() { link_test_address(handle.as_ref(), "robert", "robert@catchall.org", "primary").await; link_test_address(handle.as_ref(), "robert", "@catchall.org", "alias").await; + // Text lookup + assert!(lookups + .get("sql/domains") + .unwrap() + .contains("example.org") + .await + .unwrap()); + // Test authentication assert_eq!( handle