use ldapico::{ldap3::Scope, ldap3::SearchEntry, Ldap};
use tokio::sync::oneshot::channel;
#[test]
fn ldap_search() {
let ldap = Ldap::new(env!("LDAPICO_TEST_LDAP_SERVER")).unwrap();
let (tx, rx) = channel();
ldap.search(
tx,
"ou=users,dc=example,dc=org",
Scope::OneLevel,
"(objectClass=inetOrgPerson)",
);
let (rs, _) = rx.blocking_recv().unwrap().unwrap().success().unwrap();
assert_eq!(2, rs.len());
let mut entries: Vec<SearchEntry> = vec![];
for entry in rs {
entries.push(SearchEntry::construct(entry));
}
assert_eq!("user1", entries[0].attrs["uid"][0]);
assert_eq!("user2", entries[1].attrs["uid"][0]);
}
#[test]
fn ldap_simple_bind() {
let ldap = Ldap::new(env!("LDAPICO_TEST_LDAP_SERVER")).unwrap();
let (tx, rx) = channel();
ldap.simple_bind(tx, "cn=user1,ou=users,dc=example,dc=org", "pwd1");
let r = rx.blocking_recv().unwrap().unwrap();
assert!(r.success().is_ok());
}