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 |
||||
|
||||
import ( |
||||
"io/ioutil" |
||||
"os" |
||||
"strings" |
||||
"testing" |
||||
) |
||||
|
||||
func TestGetUrl(t *testing.T) { |
||||
resp, err := Get("http://beego.me/").Debug(true).Response() |
||||
func TestResponse(t *testing.T) { |
||||
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 { |
||||
t.Fatal(err) |
||||
} |
||||
if resp.Body == nil { |
||||
t.Fatal("body is nil") |
||||
t.Log(str) |
||||
|
||||
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) |
||||
defer resp.Body.Close() |
||||
t.Log(str) |
||||
} |
||||
|
||||
func TestSimpleDelete(t *testing.T) { |
||||
str, err := Delete("http://httpbin.org/delete").String() |
||||
if err != nil { |
||||
t.Fatal(err) |
||||
} |
||||
if len(data) == 0 { |
||||
t.Fatal("data is no") |
||||
t.Log(str) |
||||
} |
||||
|
||||
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 { |
||||
t.Fatal(err) |
||||
} |
||||
if len(str) == 0 { |
||||
t.Fatal("has no info") |
||||
t.Log(str) |
||||
|
||||
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