Nock: не перехватывает на BitBucket, но перехватывает localhost - PullRequest
0 голосов
/ 28 января 2020

При тестировании одной из моих конечных точек я нажал 3 внешних apis. Один из этих внешних запросов nock003 не перехватывается, когда я запускаю конвейер на BitBucket. Однако я вообще не мог реплицировать поведение локально.

При добавлении журналов консоли я понял, что каждый Nock добавляет: 443 к хосту, но я не уверен, что это вызывает его неправильный перехват.

Я пробовал следующие вещи: 1) Изменив nock003 на filterPath и вернув '/' (как я это сделал для nock002) 2) Сделав вызов API явно запросом post (оригинал использует rp ( options) вместо rp.post (options)) 3) Очистка всех узлов до и после их использования

Еще одно замечание, хотя в Bitbucket он показывает, что не перехватывает, наша учетная запись администратора никогда не получает билет Zendesk либо ...

 it("Should return 207 & send Zendesk ticket if X could not create", function (done) {
            if (!nock.isActive()) nock.activate();
            let nock001 = nock(`https://zzzzzzz/api/v2/users`)
                .post('')
                .reply(200);
            let nock002 = nock(`https://api.xxxxx.com/`)
                .filteringPath(path => '/')
                .post('/')
                .reply(400);
            let nock003 = nock(`https://yyyy.zendesk.com/api/v2/requests.json`)
                .post('')
                .reply(200);
            expect(nock003.isDone()).to.equal(false);
            expect(nock002.isDone()).to.equal(false);
            expect(nock001.isDone()).to.equal(false);
            if (!nock.isDone()) {
                console.log('Before test, the active nocks are...', nock.activeMocks())
            }
            chai.request(server)
                .post("/user/create")
                .send(testObjects.testStuff)
                .then((res) => {
                    if (!nock.isDone()) {
                        console.log('Nock use incomplete, test will fail...', nock.activeMocks())
                    }
                    expect(nock001.isDone()).to.equal(true);
                    expect(nock002.isDone()).to.equal(true);
                    expect(nock003.isDone()).to.equal(true);

                    res.should.have.status(207);
                    nock.cleanAll();
                    nock.restore();
                    done();
                })
                .catch((error) => {
                    console.log("Error: on 207... ", error)
                    done();
                })
        })

Вот журналы вывода из Bitbucket:

Before test, the active nocks are... [ 'POST https://zzzzzzz/api/v2/users',
  'POST https://api.xxxxx.com/',
  'POST https://yyyy.zendesk.com/api/v2/requests.json' ]
Path: /user/create. Email: test1580162547133@test.com. Date: January 27, 10:02:35 PM:130
Error with xxxxx API 
Error: xxxxx account was not created for the following user: {/*data here */} Error code: 400 - undefined
Creating Zendesk Ticket:  https://yyyy.zendesk.com/api/v2/requests.json
Nock use incomplete, test will fail... [ 'POST https://yyyy.zendesk.com:443/api/v2/requests.json' ]
Error: on 207...  { AssertionError: expected false to equal true
    at chai.request.post.send.then (/opt/atlassian/pipelines/agent/build/tests/user-create.tests.js:234:53)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  message: 'expected false to equal true',
  showDiff: true,
  actual: false,
  expected: true }

Любая помощь или указатели будут оценены. Спасибо!

...