#890,unit test

This commit is contained in:
qpan 2023-06-28 16:47:29 +08:00
parent 90879ecb4f
commit bc1794cb67
3 changed files with 163 additions and 2 deletions

91
issue-890.test.js Normal file
View File

@ -0,0 +1,91 @@
'use strict'
const tap = require('tap')
const { SearchResultEntry, SearchRequest } = require('@ldapjs/messages')
const ldapjs = require('../lib')
const process = require('process');
const server = ldapjs.createServer()
const SUFFIX = ''
const directory = {
'dc=example,dc=com': {
objectclass: 'example',
dc: 'example',
cn: 'example'
}
}
// process.prependListener('uncaughtException', handleException);
// function handleException(err){
// console.error(err);
// }
process.on('SIGINT', () => {
console.log('SKIP');
});
server.bind(SUFFIX, (req, res, done) => {
res.end()
return done()
})
server.search(SUFFIX, (req, res, done) => {
// const dn = req.dn.toString().toLowerCase()
// if (Object.hasOwn(directory, dn) === false) {
// return done(Error('not in directory'))
// }
// switch (req.scope) {
// case SearchRequest.SCOPE_BASE:
// case SearchRequest.SCOPE_SUBTREE: {
// res.send(new SearchResultEntry({ objectName: `dc=${req.scopeName}` }))
// break
// }
// }
// res.end()
// done()
})
tap.beforeEach(t => {
return new Promise((resolve, reject) => {
server.listen(0, '127.0.0.1', (err) => {
if (err) return reject(err)
t.context.url = server.url
// t.context.client = ldapjs.createClient({ url: [server.url],timeout:5 })
// t.context.searchOpts = {
// filter: '(&(objectClass=*))',
// scope: 'subtree',
// attributes: ['dn', 'cn']
// }
resolve()
})
})
})
tap.afterEach(t => {
// return new Promise((resolve, reject) => {
// t.context.client.destroy()
// server.close((err) => {
// if (err) return reject(err)
// resolve()
// })
// })
})
tap.test('tracker.fetch ', t => {
const { client, searchOpts } = t.context
// client.bind('test', 'test', (err) => {
// t.equal(err.lde_message, 'request timeout (client interrupt)');
// client.unbind();
// });
})

69
test/issue-890.test.js Normal file
View File

@ -0,0 +1,69 @@
'use strict'
const tap = require('tap')
const ldapjs = require('../')
const { SearchResultEntry, SearchRequest } = require('@ldapjs/messages')
const server = ldapjs.createServer()
const BIND_DN = 'cn=root'
const BIND_PW = 'secret'
const SUFFIX = ''
server.bind(SUFFIX, (res, done) => {
res.end()
return done()
})
server.search(SUFFIX, (req, res, done) => {
const dn = req.dn.toString().toLowerCase()
if (Object.hasOwn(directory, dn) === false) {
return done(Error('not in directory'))
}
switch (req.scope) {
case SearchRequest.SCOPE_BASE:
case SearchRequest.SCOPE_SUBTREE: {
res.send(new SearchResultEntry({ objectName: `dc=${req.scopeName}` }))
break
}
}
res.end()
done()
})
tap.beforeEach(t => {
return new Promise((resolve, reject) => {
server.listen(0, '127.0.0.1', (err) => {
if (err) return reject(err)
t.context.url = server.url
t.context.client = ldapjs.createClient({ url: [server.url], timeout: 0, connectTimeout: 0, idleTimeout: 0 })
t.context.searchOpts = {
filter: '(&(objectClass=*))',
scope: 'sub',
attributes: ['dn', 'cn']
}
resolve()
})
})
})
tap.afterEach(t => {
return new Promise((resolve, reject) => {
t.context.client.destroy()
server.close((err) => {
if (err) return reject(err)
resolve()
})
})
})
tap.test('tracker.fetch', t => {
const { client } = t.context
client.bind(BIND_DN, BIND_PW, function (err, res) {
t.error(err)
t.ok(res)
t.equal(res.status, 0)
t.end()
})
})

View File

@ -126,10 +126,11 @@ tap.test('#fetch', t => {
function handler () {}
})
t.test('returns null when message does not exist', async t => {
t.test('returns {message: null, callback: null} when message does not exist', async t => {
const tracker = messageTrackerFactory({ id: 'foo', parser: {} })
const fetched = tracker.fetch(1)
const { callback: fetched,message } = tracker.fetch(1)
t.equal(fetched, null)
t.equal(message, null)
})
t.end()