Skip to content

Commit

Permalink
Merge pull request #1860 from simov/referer-test
Browse files Browse the repository at this point in the history
Improve referer header tests and docs
  • Loading branch information
simov committed Oct 26, 2015
2 parents 47b81ea + f975647 commit 6d51ddd
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -762,7 +762,7 @@ The first argument can be either a `url` or an `options` object. The only requir
- `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`). This property can also be implemented as function which gets `response` object as a single argument and should return `true` if redirects should continue or `false` otherwise.
- `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`)
- `maxRedirects` - the maximum number of redirects to follow (default: `10`)
- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`).
- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`). **Note:** if true, referer header set in the initial request is preserved during redirect chain.

---

Expand Down
24 changes: 20 additions & 4 deletions tests/test-redirect.js
Expand Up @@ -332,7 +332,7 @@ tape('http to https redirect', function(t) {
})
})

tape('should have the referer when following redirect by default', function(t) {
tape('should have referer header by default when following redirect', function(t) {
request.post({
uri: s.url + '/temp',
jar: jar,
Expand All @@ -344,12 +344,11 @@ tape('should have the referer when following redirect by default', function(t) {
t.end()
})
.on('redirect', function() {
t.notEqual(this.headers.referer, undefined)
t.equal(this.headers.referer.substring(this.headers.referer.lastIndexOf('/')), '/temp')
t.equal(this.headers.referer, s.url + '/temp')
})
})

tape('should not have a referer when removeRefererHeader is true', function(t) {
tape('should not have referer header when removeRefererHeader is true', function(t) {
request.post({
uri: s.url + '/temp',
jar: jar,
Expand All @@ -366,6 +365,23 @@ tape('should not have a referer when removeRefererHeader is true', function(t) {
})
})

tape('should preserve referer header set in the initial request when removeRefererHeader is true', function(t) {
request.post({
uri: s.url + '/temp',
jar: jar,
followAllRedirects: true,
removeRefererHeader: true,
headers: { cookie: 'foo=bar', referer: 'http://awesome.com' }
}, function(err, res, body) {
t.equal(err, null)
t.equal(res.statusCode, 200)
t.end()
})
.on('redirect', function() {
t.equal(this.headers.referer, 'http://awesome.com')
})
})

tape('should use same agent class on redirect', function(t) {
var agent
var calls = 0
Expand Down

0 comments on commit 6d51ddd

Please sign in to comment.