Fix #362, update code with upstream
parent
b765229a6d
commit
97a373f5e7
@ -1,32 +1,196 @@ |
|||||||
|
// Copyright 2013 The Beego Authors. All rights reserved.
|
||||||
|
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
package httplib |
package httplib |
||||||
|
|
||||||
import ( |
import ( |
||||||
"io/ioutil" |
"io/ioutil" |
||||||
|
"os" |
||||||
|
"strings" |
||||||
"testing" |
"testing" |
||||||
) |
) |
||||||
|
|
||||||
func TestGetUrl(t *testing.T) { |
func TestResponse(t *testing.T) { |
||||||
resp, err := Get("http://beego.me/").Debug(true).Response() |
req := Get("http://httpbin.org/get") |
||||||
|
resp, err := req.Response() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(resp) |
||||||
|
} |
||||||
|
|
||||||
|
func TestGet(t *testing.T) { |
||||||
|
req := Get("http://httpbin.org/get") |
||||||
|
b, err := req.Bytes() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(b) |
||||||
|
|
||||||
|
s, err := req.String() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(s) |
||||||
|
|
||||||
|
if string(b) != s { |
||||||
|
t.Fatal("request data not match") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestSimplePost(t *testing.T) { |
||||||
|
v := "smallfish" |
||||||
|
req := Post("http://httpbin.org/post") |
||||||
|
req.Param("username", v) |
||||||
|
|
||||||
|
str, err := req.String() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(str) |
||||||
|
|
||||||
|
n := strings.Index(str, v) |
||||||
|
if n == -1 { |
||||||
|
t.Fatal(v + " not found in post") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestPostFile(t *testing.T) { |
||||||
|
v := "smallfish" |
||||||
|
req := Post("http://httpbin.org/post") |
||||||
|
req.Param("username", v) |
||||||
|
req.PostFile("uploadfile", "httplib_test.go") |
||||||
|
|
||||||
|
str, err := req.String() |
||||||
if err != nil { |
if err != nil { |
||||||
t.Fatal(err) |
t.Fatal(err) |
||||||
} |
} |
||||||
if resp.Body == nil { |
t.Log(str) |
||||||
t.Fatal("body is nil") |
|
||||||
|
n := strings.Index(str, v) |
||||||
|
if n == -1 { |
||||||
|
t.Fatal(v + " not found in post") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestSimplePut(t *testing.T) { |
||||||
|
str, err := Put("http://httpbin.org/put").String() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
} |
} |
||||||
data, err := ioutil.ReadAll(resp.Body) |
t.Log(str) |
||||||
defer resp.Body.Close() |
} |
||||||
|
|
||||||
|
func TestSimpleDelete(t *testing.T) { |
||||||
|
str, err := Delete("http://httpbin.org/delete").String() |
||||||
if err != nil { |
if err != nil { |
||||||
t.Fatal(err) |
t.Fatal(err) |
||||||
} |
} |
||||||
if len(data) == 0 { |
t.Log(str) |
||||||
t.Fatal("data is no") |
} |
||||||
|
|
||||||
|
func TestWithCookie(t *testing.T) { |
||||||
|
v := "smallfish" |
||||||
|
str, err := Get("http://httpbin.org/cookies/set?k1=" + v).SetEnableCookie(true).String() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
} |
} |
||||||
|
t.Log(str) |
||||||
|
|
||||||
str, err := Get("http://beego.me/").String() |
str, err = Get("http://httpbin.org/cookies").SetEnableCookie(true).String() |
||||||
if err != nil { |
if err != nil { |
||||||
t.Fatal(err) |
t.Fatal(err) |
||||||
} |
} |
||||||
if len(str) == 0 { |
t.Log(str) |
||||||
t.Fatal("has no info") |
|
||||||
|
n := strings.Index(str, v) |
||||||
|
if n == -1 { |
||||||
|
t.Fatal(v + " not found in cookie") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestWithBasicAuth(t *testing.T) { |
||||||
|
str, err := Get("http://httpbin.org/basic-auth/user/passwd").SetBasicAuth("user", "passwd").String() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(str) |
||||||
|
n := strings.Index(str, "authenticated") |
||||||
|
if n == -1 { |
||||||
|
t.Fatal("authenticated not found in response") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestWithUserAgent(t *testing.T) { |
||||||
|
v := "beego" |
||||||
|
str, err := Get("http://httpbin.org/headers").SetUserAgent(v).String() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(str) |
||||||
|
|
||||||
|
n := strings.Index(str, v) |
||||||
|
if n == -1 { |
||||||
|
t.Fatal(v + " not found in user-agent") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestWithSetting(t *testing.T) { |
||||||
|
v := "beego" |
||||||
|
var setting BeegoHttpSettings |
||||||
|
setting.EnableCookie = true |
||||||
|
setting.UserAgent = v |
||||||
|
setting.Transport = nil |
||||||
|
SetDefaultSetting(setting) |
||||||
|
|
||||||
|
str, err := Get("http://httpbin.org/get").String() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(str) |
||||||
|
|
||||||
|
n := strings.Index(str, v) |
||||||
|
if n == -1 { |
||||||
|
t.Fatal(v + " not found in user-agent") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestToJson(t *testing.T) { |
||||||
|
req := Get("http://httpbin.org/ip") |
||||||
|
resp, err := req.Response() |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(resp) |
||||||
|
|
||||||
|
// httpbin will return http remote addr
|
||||||
|
type Ip struct { |
||||||
|
Origin string `json:"origin"` |
||||||
|
} |
||||||
|
var ip Ip |
||||||
|
err = req.ToJson(&ip) |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
t.Log(ip.Origin) |
||||||
|
|
||||||
|
if n := strings.Count(ip.Origin, "."); n != 3 { |
||||||
|
t.Fatal("response is not valid ip") |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func TestToFile(t *testing.T) { |
||||||
|
f := "beego_testfile" |
||||||
|
req := Get("http://httpbin.org/ip") |
||||||
|
err := req.ToFile(f) |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
defer os.Remove(f) |
||||||
|
b, err := ioutil.ReadFile(f) |
||||||
|
if n := strings.Index(string(b), "origin"); n == -1 { |
||||||
|
t.Fatal(err) |
||||||
} |
} |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue