Skip to content

Commit

Permalink
fix tests about redirect
Browse files Browse the repository at this point in the history
  • Loading branch information
mozillazg committed Dec 17, 2016
1 parent f766e68 commit 12d0a74
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 24 deletions.
2 changes: 2 additions & 0 deletions redirect.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (

// DefaultRedirectLimit define max redirect counts
var DefaultRedirectLimit = 10
// TODO
// const MaxRedirectLimitError = errors.New("")

func defaultCheckRedirect(req *http.Request, via []*http.Request) error {
if len(via) > DefaultRedirectLimit {
Expand Down
71 changes: 47 additions & 24 deletions redirect_test.go
Original file line number Diff line number Diff line change
@@ -1,46 +1,69 @@
package request

import (
"net/http"
"runtime"
"testing"

"github.com/bmizerany/assert"
"strings"
)

func TestCheckRedirect(t *testing.T) {
c := new(http.Client)
req := NewRequest(c)
url := "http://httpbin.org/get"
func TestCheckRedirectNoRedirect(t *testing.T) {
req := NewRequest(nil)
url := "https://httpbin.org/get"
resp, _ := req.Get(url)
u, _ := resp.URL()
assert.Equal(t, u.String(), url)
}

url = "http://httpbin.org/redirect/3"
resp, _ = req.Get(url)
u, _ = resp.URL()
assert.Equal(t, u.String(), "http://httpbin.org/get")
func TestCheckRedirectNumberLessThanDefault(t *testing.T) {
req := NewRequest(nil)
url := "https://httpbin.org/redirect/3"
resp, _ := req.Get(url)
u, _ := resp.URL()
assert.Equal(t, u.String(), "https://httpbin.org/get")
}

// FIXME: for go 1.7.1
// url = "http://httpbin.org/redirect/15"
// resp, _ = req.Get(url)
// _ = "breakpoint"
// u, _ = resp.URL()
// assert.Equal(t, u.String(), "http://httpbin.org/relative-redirect/4")
func TestCheckRedirectNumberGreatThanDefault(t *testing.T) {
req := NewRequest(nil)
url := "https://httpbin.org/redirect/15"
resp, err := req.Get(url)
if goVersionGT17() {
assert.NotEqual(t, err, nil)
return
}
u, _ := resp.URL()
assert.Equal(t, u.String(), "https://httpbin.org/relative-redirect/4")
}

url = "http://httpbin.org/redirect/2"
func TestCheckRedirectWithHeaders(t *testing.T) {
req := NewRequest(nil)
url := "https://httpbin.org/redirect/2"
req.Headers = map[string]string{
"Referer": "http://example.com",
}
resp, _ = req.Get(url)
u, _ = resp.URL()
resp, _ := req.Get(url)
u, _ := resp.URL()
referer := resp.Request.Header.Get("Referer")
assert.Equal(t, u.String(), "http://httpbin.org/get")
assert.Equal(t, referer, "http://httpbin.org/relative-redirect/1")
assert.Equal(t, u.String(), "https://httpbin.org/get")
assert.Equal(t, referer, "https://httpbin.org/relative-redirect/1")
assert.Equal(t, resp.Request.Header.Get("User-Agent"), DefaultUserAgent)
}

url = "http://httpbin.org/redirect/12"
func TestCheckRedirectChangeDefaultLimit(t *testing.T) {
url := "https://httpbin.org/redirect/12"
req := NewRequest(nil)
DefaultRedirectLimit = 16
resp, _ = req.Get(url)
u, _ = resp.URL()
assert.Equal(t, u.String(), "http://httpbin.org/get")
resp, _ := req.Get(url)
u, _ := resp.URL()
assert.Equal(t, u.String(), "https://httpbin.org/get")
}

// go1.7.x
func goVersionGT17() bool {
version := runtime.Version()
if strings.HasPrefix(version, "go1.7") {
return true
}
return false
}

0 comments on commit 12d0a74

Please sign in to comment.