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" )
}
}
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 ( )
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 post" )
}
}
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
}
}