ldapjs 创建模拟用户并执行搜索
ldapjs create mock users and perform search
我正在使用 LDAP 创建一个 auth middleware app,但我很难进行搜索。
我正在使用 Mocha 进行测试,我创建了一个 util.js 来创建一个模拟 ldapjs 服务器:
let server = require('../mocks/ldapServer');
const ldap = require('ldapjs');
let ldapEntities = {
'cn=root,dc=example,dc=com,o=example': {
dn: 'cn=root,dc=example,dc=com',
objectclass: 'organizationalRole',
cn: 'Manager'
},
'cn=ABC,dc=example,dc=com,o=example': {
dn: 'cn=ABC,dc=example,dc=com,o=example',
objectclass: 'organizationalUnit',
cn: 'ABC'
},
'cn=Bob Johnson,ou=ABC,dc=example,dc=com,o=example': {
cn: 'Bob Johnson',
dn: 'cn=Bob Johnson,ou=ABC,dc=example,dc=com,o=example',
sn: 'Johnson',
objectClass: 'inetOrgPerson'
},
'cn=Don Doddson,dc=example,dc=com,o=example': {
cn: 'Don Doddson',
dn: 'cn=Don Doddson,dc=example,dc=com,o=example',
sn: 'Doddson',
objectClass: 'inetOrgPerson',
userPassword: 'rubbishpassword'
}
};
before(done => {
server.start(1389, () => {
let ldapClient = ldap.createClient({
url: process.env.DIRECTORY_SYSTEM_AGENT
});
ldapClient.bind(process.env.LDAP_ADMIN, process.env.LDAP_SECRET, error => {
if (error) {
return console.log('Error binding to LDAP: ' + error.message);
}
//Bound to server, creating test accounts
for (let i in ldapEntities) {
ldapClient.add(i, ldapEntities[i], error => {
if (error) {
console.error(error);
}
});
}
});
done();
});
});
after(done => {
server.stop(done);
});
我正在搜索:
let dn = 'cn=root,dc=example,dc=com,o=example';
let opts = {
filter: '(cn=Don Doddson)',
scope: 'sub'
}
client.search(dn, opts, (error, result) => { ...
什么都不是 'breaking',但我收到的 SearchEntry messageID 为 2 而不是我想要的详细信息。
谢谢!
在 ldapEntities 定义
中,root 的 dn 看起来像是印刷错误
dn: 'cn=root,dc=example,dc=com,o=example',
问题是我没有为每个 ldapEntities 设置终点。
我正在使用 LDAP 创建一个 auth middleware app,但我很难进行搜索。
我正在使用 Mocha 进行测试,我创建了一个 util.js 来创建一个模拟 ldapjs 服务器:
let server = require('../mocks/ldapServer');
const ldap = require('ldapjs');
let ldapEntities = {
'cn=root,dc=example,dc=com,o=example': {
dn: 'cn=root,dc=example,dc=com',
objectclass: 'organizationalRole',
cn: 'Manager'
},
'cn=ABC,dc=example,dc=com,o=example': {
dn: 'cn=ABC,dc=example,dc=com,o=example',
objectclass: 'organizationalUnit',
cn: 'ABC'
},
'cn=Bob Johnson,ou=ABC,dc=example,dc=com,o=example': {
cn: 'Bob Johnson',
dn: 'cn=Bob Johnson,ou=ABC,dc=example,dc=com,o=example',
sn: 'Johnson',
objectClass: 'inetOrgPerson'
},
'cn=Don Doddson,dc=example,dc=com,o=example': {
cn: 'Don Doddson',
dn: 'cn=Don Doddson,dc=example,dc=com,o=example',
sn: 'Doddson',
objectClass: 'inetOrgPerson',
userPassword: 'rubbishpassword'
}
};
before(done => {
server.start(1389, () => {
let ldapClient = ldap.createClient({
url: process.env.DIRECTORY_SYSTEM_AGENT
});
ldapClient.bind(process.env.LDAP_ADMIN, process.env.LDAP_SECRET, error => {
if (error) {
return console.log('Error binding to LDAP: ' + error.message);
}
//Bound to server, creating test accounts
for (let i in ldapEntities) {
ldapClient.add(i, ldapEntities[i], error => {
if (error) {
console.error(error);
}
});
}
});
done();
});
});
after(done => {
server.stop(done);
});
我正在搜索:
let dn = 'cn=root,dc=example,dc=com,o=example';
let opts = {
filter: '(cn=Don Doddson)',
scope: 'sub'
}
client.search(dn, opts, (error, result) => { ...
什么都不是 'breaking',但我收到的 SearchEntry messageID 为 2 而不是我想要的详细信息。
谢谢!
在 ldapEntities 定义
中,root 的 dn 看起来像是印刷错误dn: 'cn=root,dc=example,dc=com,o=example',
问题是我没有为每个 ldapEntities 设置终点。