it('Error executing the request', function () { var callback = sinon.spy(); var errorMessage = 'Fail executing request'; var promise; var callbackErrors; sinon.stub(requestManager, 'buildRequest').returns(buildRequestValidResponse); sinon.stub(requestLib, 'Request', function (params) { return params.callback.apply(null, [new Error(errorMessage), null, null]); }); promise = requestManager.exec({}, callback); callbackErrors = callback.args[0][0]; assert.equal(callbackErrors.message, errorMessage); requestManager.buildRequest.restore(); requestLib.Request.restore(); assert.isRejected(promise, errorMessage); });
it('Valid response with correct HTTP Post', function () { var callback = sinon.spy(); var promise; var callbackErrors; sinon.stub(requestManager, 'buildRequest').returns(buildRequestValidResponse); sinon.stub(requestLib, 'Request', function (params) { return params.callback.apply(null, [null, { statusCode: 500 }, {}]); }); promise = requestManager.exec({}, callback); callbackErrors = callback.args[0][0]; assert.equal(callbackErrors.message, 'Unknown Error'); requestManager.buildRequest.restore(); requestLib.Request.restore(); assert.isRejected(promise, 'Unknown Error'); });
requestLib.Request.restore();
requestLib.Request.restore(); });
it('Invalid HTTP Status Code on response from MercadoPago API', function () { var callback = sinon.spy(); var errorMessage = 'Error on MercadoPago API'; var promise; var callbackErrors; sinon.stub(requestManager, 'buildRequest').returns(buildRequestValidResponse); sinon.stub(requestLib, 'Request', function (params) { return params.callback.apply(null, [null, { statusCode: 500 }, { message: errorMessage }]); }); promise = requestManager.exec({}, callback); callbackErrors = callback.args[0][0]; assert.instanceOf(callbackErrors, MercadopagoError); assert.equal(callbackErrors.message, errorMessage); assert.equal(callbackErrors.idempotency, buildRequestValidResponse.headers['x-idempotency-key']); requestManager.buildRequest.restore(); requestLib.Request.restore(); assert.isRejected(promise, errorMessage); });