fix bug related to request wrapping, where counter adopts follow value incorrectly

This commit is contained in:
David Frank 2016-09-11 22:02:39 +08:00
parent e574b497d5
commit 6bac50f1da
2 changed files with 16 additions and 3 deletions

View File

@ -47,7 +47,7 @@ function Request(input, init) {
this.compress = init.compress !== undefined ?
init.compress : input.compress !== undefined ?
input.compress : true;
this.counter = init.counter || input.counter || input.follow || 0;
this.counter = init.counter || input.counter || 0;
this.agent = init.agent || input.agent;
Body.call(this, init.body || this._clone(input), {

View File

@ -279,7 +279,7 @@ describe('node-fetch', function() {
});
});
it('should obey maximum redirect', function() {
it('should obey maximum redirect, reject case', function() {
url = base + '/redirect/chain';
opts = {
follow: 1
@ -289,6 +289,17 @@ describe('node-fetch', function() {
.and.have.property('type', 'max-redirect');
});
it('should obey redirect chain, resolve case', function() {
url = base + '/redirect/chain';
opts = {
follow: 2
}
return fetch(url, opts).then(function(res) {
expect(res.url).to.equal(base + '/inspect');
expect(res.status).to.equal(200);
});
});
it('should allow not following redirect', function() {
url = base + '/redirect/301';
opts = {
@ -1216,6 +1227,8 @@ describe('node-fetch', function() {
expect(r2.body).to.equal(form);
expect(r1.follow).to.equal(1);
expect(r2.follow).to.equal(2);
expect(r1.counter).to.equal(0);
expect(r2.counter).to.equal(0);
});
it('should support overwrite Request instance', function() {
@ -1399,7 +1412,7 @@ describe('node-fetch', function() {
expect(cl.follow).to.equal(3);
expect(cl.compress).to.equal(false);
expect(cl.method).to.equal('POST');
expect(cl.counter).to.equal(3);
expect(cl.counter).to.equal(0);
expect(cl.agent).to.equal(agent);
// clone body shouldn't be the same body
expect(cl.body).to.not.equal(body);