2016-08-16 17 views
2

我使用LDAP創建auth middleware app,我很難讓搜索工作。ldapjs創建模擬用戶並執行搜索

我使用的是摩卡的測試,我創建了一個util.js中創建一個模擬ldapjs服務器:

let dn = 'cn=root,dc=example,dc=com,o=example'; 
let opts = { 
    filter: '(cn=Don Doddson)', 
    scope: 'sub' 
} 

client.search(dn, opts, (error, result) => { ... 

沒有什麼是「破」:

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); 
}); 

我使用搜索,但我得到一個SearchEntry messageID爲2而不是我想要的細節。

謝謝!

回答

1

問題是我沒有設定每個ldapEntities的終點。

0

看起來像在ldapEntities錯字在根目錄的DN定義

DN:CN =根,DC =例如,DC = COM,O =例如',

+0

沒有這個就行不通 –