LdapJS exop Запрос времени ожидания - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть сервер LdapJS, который реализует стандартную операцию и расширенную операцию для проверки работоспособности:

const server = ldap.createServer();
server.exop('healthcheck', (req, res, next) => {
    res.end();
    console.log('ended');
    return next();
});
...

Затем я написал простой клиентский скрипт для службы ping healthcheck:

const { createClient } = require('ldapjs');

const client = createClient({
    url: 'ldap://localhost:1389',
    timeout: 2000,
    connectTimeout: 2000
});

client.exop('healthcheck', (err, value, res) => {
    if (err) {
        console.log(`ERROR: ${err.message}`); 
        process.exit(1);
    }
    else {
        console.log(`STATUS: ${res.status}`);
        process.exit(0);
    }
});

Проблема в том, что exop правильно получен сервером (я вижу журнал внутри его обратного вызова), но клиент всегда регистрирует: ERROR: request timeout (client interrupt).

Почему запрос не завершен правильно?

РЕДАКТИРОВАТЬ

Я написал тест мокко для exop, и он работает.Похоже, что проблема связана с автономным вызовом в скрипте Healthcheck.

describe('#healthcheck()', function () {
    before(function () {
        server = createServer();
        server.listen(config.get('port'), config.get('host'), () => {});
    });

    after(function () {
        server.close();
    });

    it('should return status 0', function (done) {
        const { createClient } = require('ldapjs');
        const client = createClient({
            url: 'ldap://localhost:1389',
            timeout: 2000,
            connectTimeout: 2000
        });

        client.exop('healthcheck', (err, value, res) => {
            should.not.exist(err);
            res.status.should.be.equal(0);
            client.destroy();
            return done();
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...