Авторизуйтесь перед выполнением поста в модульном тестировании, используя Chai и Mocha - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь проверить свою функцию записи, когда она позволяет получать данные только от пользователя, у которого есть определенные разрешения.Я сделал функцию входа (проверено отдельно, она работает).Я хочу сделать тест, который будет выполнять вход в систему, а затем сделать сообщение с данными, чтобы он сделал это как авторизованный пользователь.Как и сейчас, тестовый код работает, но он не видит пользователя для входа в систему и делает это как обычный пользователь.

Мой текущий не рабочий код:

describe('/POST _json post data as a admin', () => {
        before((done) => {
            let loginInfo = {};
            loginInfo.usr = 'testuser';
            loginInfo.psw = 'mochatesting197';
            chai.request.agent(app)
                .post('/login')
                .send(loginInfo)
                .then((res) => {
                    done();
                });
        });
        it('POST data as a admin', () => {
            let json = {};
            json.module_name = "TEST ENTRY";
            json.module_url = "/TEST_ENTRY";
            json.module_privilege = "testentry;testentry2;testentry3";
            chai.request(app)
                .post('/_json')
                .send(json)
                .then((res) => {
                    res.should.have.status(200);
                    res.body.should.be.a('object');
                    res.body['success'].should.have.property('message');
                }).catch((err) => {
                    throw err;
                });

        });
    });

1 Ответ

0 голосов
/ 14 мая 2018

ОК, так что после более глубокого исследования, проб и ошибок я нашел решение. Я до сих пор не понимаю, как это работает полностью, но похоже, что сессия должна быть возвращена и обработана, как только будет выполнен вход в систему.

Это рабочая версия:

it('/POST /_json => POST data as a admin', (done) => {
    let json = {};
    json._id = "TEST_ENTRY";
    json.module_name = "TEST_ENTRY";
    json.module_url = "/TEST_ENTRY";
    json.module_privilege = ['testentry', 'testentry2', 'testentry3'];

    let loginInfo = {};
    loginInfo.usr = 'testuser';
    loginInfo.psw = 'mochatesting197';

    let agent = chai.request.agent(app);

    agent.post('/login')
        .send(loginInfo)
        .then((res) => {
            return agent.post('/_json')
                .send(json)
                .then((res) => {
                    res.should.have.status(200);
                    res.body.should.be.a('object');
                    res.body['success'].should.have.property('message').eql('ENTRY HAS BEEN UPDATED');
                    done();
                }).catch(function(err) {
                    throw err;
                });
        });
});
...