Ложный сервис LDAP для тестирования интеграции с супертестом и жасмином

Мне нужно провести интеграционный тест для маршрута, который использует службу LDAP для получения данных. Но вместо того, чтобы вызывать реальный сервис LDAP, я хочу MOCK сервис. Я старался nock но дает ошибку nock Cannot read property 'replace' of null,

Ниже мой текущий код:

Route.js

router.get('/admin/user', authController.validateToken, userRolePermission.validate('USRPERM'), controller.searchUsersByOrganization);

Controller.js

function searchUsersByOrganization(req, res) {
    adminService.searchUsersByOrganization({
        organization: req.query.organization
    })
        .then(data => {
            res.send(data);
        })
        .catch(err => {
            res.status(500).send(undefined);
        });
}

Service.js

function searchUsersByOrganization(filter) {
    const search_options = {
        base: 'ou=test portal,ou=People,dc=myfamily,dc=com',
        scope: LDAP.SUBTREE,
        filter: '(o=' + filter.organization  + ')',
        attrs: '*'
    };

    return adminSearchUserService.searchUsers(search_options).then(data => transformService.transform(data));
}

AdminSearchUserService

function searchUsers(search_options) {
    return new Promise((resolve, reject) => {

        const ldap = new LDAP({
            uri:             'ldap://your_server:123',   // string 
            validatecert:    false,             // Verify server certificate 
            connecttimeout:  -1,                // seconds, default is -1 (infinite timeout), connect timeout 
            base:            'dc=com',          // default base for all future searches 
            attrs:           '*',               // default attribute list for future searches 
            filter:          '(objectClass=*)', // default filter for all future searches 
            scope:           LDAP.SUBTREE       // default scope for all future searches        
        }, ((err) => {
                if(err) {
                    //logger.error('LDAP Error : ' + err.message);
                    //reject('Error retrieving users from LDAP');
                }
                ldap.starttls((err) => {
                    if(err) {
                        logger.error('LDAP Error Starting TLS connection : ' + err.message);
                        reject('Error retrieving users from LDAP');
                    }

                    ldap.installtls();
                    if(ldap.tlsactive() !== 1) {
                        logger.error('LDAP Error : TLS not active');
                        reject('Error retrieving users from LDAP');
                    }

                    ldap.bind({
                        binddn: 'cn=secretkey' + ',ou=Applications,dc=myfamily,dc=com',
                        password: config.ldap.bind_secret
                    }, (err) => {
                        if(err) { 
                            logger.error('LDAP error while binding  : ' + err.message);
                            reject('Error retrieving users from LDAP');
                        }


                        ldap.search(search_options, (err, data) => {
                            resolve(data);
                        });
                    });
                });
            }));
    });

}

Интеграционное тестирование для маршрута '/api/admin/user' Ниже контрольного примера я хочу смоделировать службу LDAP. Я не получаю способ высмеять это.

it('GET: should response 200 and get users list as per organization', done => {

            function searchUsersByOrganizationAssert() {
                request.get('/api/admin/user')
                    .set({
                        authorization: 'Bearer ' + globalUserToken
                    })
                    .query({organization: 'Test Organization'})
                    .expect(expectedUsersListMockData)
                    .expect(statusCodes.SUCCESS_OK)
                    .end(onEndTestcase(done));
            }

            getUserTokenService(searchUsersByOrganizationAssert);
        });  

0 ответов

Другие вопросы по тегам