Путь запроса содержит неэкранированные символы при тестировании Mocha / chai - PullRequest
0 голосов
/ 17 июня 2020

Приведен мой код для проверки почтового запроса с заголовком авторизации, установленным для токена jwt, и параметром пути, переданным в путь сообщения, т.е. id: 5ee9b12ab08b6c3c58375a6d

Есть ли лучший способ сделать это?

const expect = require("expect");
const request = require("request");
const chai = require("chai");
let chaiHttp = require("chai-http");
let server = require("../app");
let should = chai.should();
chai.use(chaiHttp);

describe("Admin Priveleges", () => {
  describe("/Update Status", () => {
    it("Update membership and registration status", (done) => {
      chai
        .request(server)
        .post("/api​/v2​/user​/update-status​/5ee9b12ab08b6c3c58375a6d")
        .set('Authorization', "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZWU5YjEzN2IwOGI2YzNjNTgzNzVhNmUiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE1OTI0NjEyMjIyMDgsIm5hbWUiOiJVdGthcnNoIFNocml2YXN0YXZhIiwiaWF0IjoxNTkyMzc0ODIyfQ.M53gRzIppbhhLSCf9bD6xcdXfITiD1jUOzTlDqHK3is")
        .send({
          membership_status: "active",
          registration_status: "pending_approval",
          status_comment: "Good going"
        })
        .end((err, res) => {
          if (err) throw err;
          if (should) console.log("****Status Updated Successfully****");
          res.should.have.status(200);
          done();
        });
    }).timeout(30000);
  });
});

Итак, это мой тестовый код, и каждый раз, когда я запускаю его для тестирования, я получите следующую ошибку:

enter image description here

Как я могу решить эту ошибку?

1 Ответ

0 голосов
/ 25 июня 2020

Когда я скопировал ваш url-адрес в веб-консоль, он показал строку actual с «невидимой» в противном случае .

screenshot

Test:

context('Should not show "Request path contains unescaped characters, in Mocha/chai testing"', function() {
  it('POST /api/v2/user/update-status/5ee9b12ab08b6c3c58375a6d', function(done) {
    chai
      .request(server)
      .post('/api/v2/user/update-status/5ee9b12ab08b6c3c58375a6d')
      // .post('/api​/v2​/user​/update-status​/5ee9b12ab08b6c3c58375a6d') // with the 'hidden dots'
      .set('Authorization', "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZWU5YjEzN2IwOGI2YzNjNTgzNzVhNmUiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE1OTI0NjEyMjIyMDgsIm5hbWUiOiJVdGthcnNoIFNocml2YXN0YXZhIiwiaWF0IjoxNTkyMzc0ODIyfQ.M53gRzIppbhhLSCf9bD6xcdXfITiD1jUOzTlDqHK3is")
      .send({
        membership_status: "active",
        registration_status: "pending_approval",
        status_comment: "Good going"
      })
      .end((err, res) => {
        // if (err) throw err;
        // if (should) console.log("****Status Updated Successfully****");
        // res.should.have.status(200);
        expect(res).to.have.status(404);
        
        done();
      });
  });
})

скриншот2

...