2014-08-23 17:13:55 +04:00
// 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.
2014-05-06 19:50:31 +04:00
package httplib
import (
"io/ioutil"
2014-08-23 17:13:55 +04:00
"os"
"strings"
2014-05-06 19:50:31 +04:00
"testing"
)
2014-08-23 17:13:55 +04:00
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" )
}
}
2014-11-18 23:13:08 +03:00
// 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)
// }
// t.Log(str)
// n := strings.Index(str, v)
// if n == -1 {
// t.Fatal(v + " not found in post")
// }
// }
2014-08-23 17:13:55 +04:00
func TestSimplePut ( t * testing . T ) {
str , err := Put ( "http://httpbin.org/put" ) . String ( )
if err != nil {
t . Fatal ( err )
2014-05-06 19:50:31 +04:00
}
2014-08-23 17:13:55 +04:00
t . Log ( str )
}
func TestSimpleDelete ( t * testing . T ) {
str , err := Delete ( "http://httpbin.org/delete" ) . String ( )
2014-05-06 19:50:31 +04:00
if err != nil {
t . Fatal ( err )
}
2014-08-23 17:13:55 +04:00
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 )
2014-05-06 19:50:31 +04:00
}
2014-08-23 17:13:55 +04:00
t . Log ( str )
2014-05-06 19:50:31 +04:00
2014-08-23 17:13:55 +04:00
str , err = Get ( "http://httpbin.org/cookies" ) . SetEnableCookie ( true ) . String ( )
2014-05-06 19:50:31 +04:00
if err != nil {
t . Fatal ( err )
}
2014-08-23 17:13:55 +04:00
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 )
2014-05-06 19:50:31 +04:00
}
}
2014-11-18 23:13:08 +03:00
func TestHeader ( t * testing . T ) {
req := Get ( "http://httpbin.org/headers" )
req . Header ( "User-Agent" , "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36" )
str , err := req . String ( )
if err != nil {
t . Fatal ( err )
}
t . Log ( str )
}