github.com/codingeasygo/util@v0.0.0-20231206062002-1ce2f004b7d9/xhttp/xhttp_test.go (about)

     1  package xhttp
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"io"
     7  	"io/ioutil"
     8  	"net/http"
     9  	"net/http/httptest"
    10  	"os"
    11  	"strings"
    12  	"testing"
    13  
    14  	"github.com/codingeasygo/util/converter"
    15  	"github.com/codingeasygo/util/xjson"
    16  	"github.com/codingeasygo/util/xmap"
    17  )
    18  
    19  func init() {
    20  	EnableInsecureVerify()
    21  	DisableInsecureVerify()
    22  	DisableCookie()
    23  	ClearCookie()
    24  	EnableCookie()
    25  	ClearCookie()
    26  	NewRawClient(nil)
    27  	NewClient(&http.Client{})
    28  }
    29  
    30  func TestGet(t *testing.T) {
    31  	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    32  		var format = r.URL.Query().Get("format")
    33  		switch format {
    34  		case "json":
    35  			xjson.WriteJSON(w, map[string]interface{}{
    36  				"abc": 1,
    37  			})
    38  		case "text":
    39  			fmt.Fprintf(w, "1")
    40  		case "header":
    41  			fmt.Fprintf(w, "%v", r.Header.Get("abc"))
    42  		default:
    43  			w.WriteHeader(500)
    44  			fmt.Fprintf(w, "error")
    45  		}
    46  	}))
    47  	//
    48  	bval, err := GetBytes("%v/?format=text", ts.URL)
    49  	if err != nil || string(bval) != "1" {
    50  		t.Error(err)
    51  		return
    52  	}
    53  	bval, _, err = GetHeaderBytes(nil, "%v/?format=text", ts.URL)
    54  	if err != nil || string(bval) != "1" {
    55  		t.Error(err)
    56  		return
    57  	}
    58  	//
    59  	sval, err := GetText("%v/?format=text", ts.URL)
    60  	if err != nil || sval != "1" {
    61  		t.Error(err)
    62  		return
    63  	}
    64  	sval, _, err = GetHeaderText(xmap.M{"abc": 1}, "%v/?format=text", ts.URL)
    65  	if err != nil || sval != "1" {
    66  		t.Error(err)
    67  		return
    68  	}
    69  	//
    70  	mval, err := GetMap("%v/?format=json", ts.URL)
    71  	if err != nil {
    72  		t.Errorf("%v,%v", mval, err)
    73  		return
    74  	}
    75  	mval, _, err = GetHeaderMap(nil, "%v/?format=json", ts.URL)
    76  	if err != nil {
    77  		t.Error(err)
    78  		return
    79  	}
    80  	var ival int
    81  	err = mval.ValidFormat(`abc,r|i,r:0;`, &ival)
    82  	if err != nil || ival != 1 {
    83  		t.Error(err)
    84  		return
    85  	}
    86  	{ //get json
    87  		var jval xmap.M
    88  		jval = xmap.New()
    89  		err := GetJSON(&jval, "%v/?format=json", ts.URL)
    90  		if err != nil || len(jval) < 1 {
    91  			t.Errorf("%v,%v", mval, err)
    92  			return
    93  		}
    94  		jval = xmap.New()
    95  		_, err = GetHeaderJSON(&jval, nil, "%v/?format=json", ts.URL)
    96  		if err != nil || len(jval) < 1 {
    97  			t.Error(err)
    98  			return
    99  		}
   100  
   101  	}
   102  	//
   103  	//test error
   104  	_, err = GetText("%v/?format=error", ts.URL)
   105  	if err == nil {
   106  		t.Error(err)
   107  		return
   108  	}
   109  	_, err = GetText("%v/\x06?format=text", ts.URL)
   110  	if err == nil {
   111  		t.Error(err)
   112  		return
   113  	}
   114  	_, err = GetText("%v/?format=text", "http://127.0.0.1:32")
   115  	if err == nil {
   116  		t.Error(err)
   117  		return
   118  	}
   119  }
   120  
   121  func TestPost(t *testing.T) {
   122  	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   123  		var format = r.URL.Query().Get("format")
   124  		switch format {
   125  		case "json":
   126  			xjson.WriteJSON(w, map[string]interface{}{
   127  				"abc": 1,
   128  			})
   129  		case "text":
   130  			fmt.Fprintf(w, "1")
   131  		case "header":
   132  			fmt.Fprintf(w, "%v", r.Header.Get("abc"))
   133  		case "form":
   134  			r.ParseForm()
   135  			xjson.WriteJSON(w, map[string]interface{}{
   136  				"abc": r.PostForm.Get("abc"),
   137  			})
   138  		case "part":
   139  			r.ParseMultipartForm(1024)
   140  			xjson.WriteJSON(w, map[string]interface{}{
   141  				"abc": r.MultipartForm.Value["abc"][0],
   142  			})
   143  		case "body":
   144  			io.Copy(w, r.Body)
   145  		default:
   146  			w.WriteHeader(500)
   147  			fmt.Fprintf(w, "error")
   148  		}
   149  	}))
   150  	//
   151  	bval, err := PostBytes(nil, "%v/?format=text", ts.URL)
   152  	if err != nil || string(bval) != "1" {
   153  		t.Error(err)
   154  		return
   155  	}
   156  	bval, _, err = MethodBytes("POST", nil, nil, "%v/?format=text", ts.URL)
   157  	if err != nil || string(bval) != "1" {
   158  		t.Error(err)
   159  		return
   160  	}
   161  	bval, err = PostTypeBytes(ContentTypeForm, nil, "%v/?format=text", ts.URL)
   162  	if err != nil || string(bval) != "1" {
   163  		t.Error(err)
   164  		return
   165  	}
   166  	bval, _, err = PostHeaderBytes(xmap.M{"Content-Type": ContentTypeForm}, nil, "%v/?format=text", ts.URL)
   167  	if err != nil || string(bval) != "1" {
   168  		t.Error(err)
   169  		return
   170  	}
   171  	//
   172  	sval, err := PostText(nil, "%v/?format=text", ts.URL)
   173  	if err != nil || sval != "1" {
   174  		t.Error(err)
   175  		return
   176  	}
   177  	sval, _, err = MethodText("POST", nil, nil, "%v/?format=text", ts.URL)
   178  	if err != nil || sval != "1" {
   179  		t.Error(err)
   180  		return
   181  	}
   182  	sval, err = PostTypeText(ContentTypeForm, nil, "%v/?format=text", ts.URL)
   183  	if err != nil || sval != "1" {
   184  		t.Error(err)
   185  		return
   186  	}
   187  	sval, _, err = PostHeaderText(xmap.M{"Content-Type": ContentTypeForm}, nil, "%v/?format=text", ts.URL)
   188  	if err != nil || sval != "1" {
   189  		t.Error(err)
   190  		return
   191  	}
   192  	//
   193  	var ival int
   194  	mval, err := PostMap(nil, "%v?format=json", ts.URL)
   195  	if err != nil {
   196  		t.Error(err)
   197  		return
   198  	}
   199  	err = mval.ValidFormat(`abc,r|i,r:0;`, &ival)
   200  	if err != nil || ival != 1 {
   201  		t.Error(err)
   202  		return
   203  	}
   204  	mval, _, err = MethodMap("POST", nil, nil, "%v?format=json", ts.URL)
   205  	if err != nil {
   206  		t.Error(err)
   207  		return
   208  	}
   209  	err = mval.ValidFormat(`abc,r|i,r:0;`, &ival)
   210  	if err != nil || ival != 1 {
   211  		t.Error(err)
   212  		return
   213  	}
   214  	mval, _, err = PostHeaderMap(xmap.M{"Content-Type": ContentTypeForm}, nil, "%v?format=json", ts.URL)
   215  	if err != nil {
   216  		t.Error(err)
   217  		return
   218  	}
   219  	err = mval.ValidFormat(`abc,r|i,r:0;`, &ival)
   220  	if err != nil || ival != 1 {
   221  		t.Error(err)
   222  		return
   223  	}
   224  	mval, err = PostTypeMap(ContentTypeForm, nil, "%v?format=json", ts.URL)
   225  	if err != nil {
   226  		t.Error(err)
   227  		return
   228  	}
   229  	err = mval.ValidFormat(`abc,r|i,r:0;`, &ival)
   230  	if err != nil || ival != 1 {
   231  		t.Error(err)
   232  		return
   233  	}
   234  	mval, err = PostJSONMap(map[string]interface{}{"abc": "1"}, "%v?format=body", ts.URL)
   235  	if err != nil {
   236  		t.Error(err)
   237  		return
   238  	}
   239  	_, err = PostJSONMap(t.Fail, "%v?format=body", ts.URL)
   240  	if err == nil {
   241  		t.Error(err)
   242  		return
   243  	}
   244  	err = mval.ValidFormat(`abc,r|i,r:0;`, &ival)
   245  	if err != nil || ival != 1 {
   246  		t.Error(err)
   247  		return
   248  	}
   249  	sval, err = PostFormText(map[string]interface{}{"abc": "1"}, "%v?format=json", ts.URL)
   250  	if err != nil || len(sval) < 1 {
   251  		t.Error(err)
   252  		return
   253  	}
   254  	mval, err = PostFormMap(map[string]interface{}{"abc": "1"}, "%v?format=json", ts.URL)
   255  	if err != nil {
   256  		t.Error(err)
   257  		return
   258  	}
   259  	err = mval.ValidFormat(`abc,r|i,r:0;`, &ival)
   260  	if err != nil || ival != 1 {
   261  		t.Error(err)
   262  		return
   263  	}
   264  	sval, err = PostXMLText(t, "%v?format=body", ts.URL)
   265  	if err != nil {
   266  		t.Errorf("%v,%v", sval, err)
   267  		return
   268  	}
   269  	_, err = PostXMLText(t.Fail, "%v?format=body", ts.URL)
   270  	if err == nil {
   271  		t.Errorf("%v,%v", sval, err)
   272  		return
   273  	}
   274  	bval, _, err = PostMultipartBytes(nil, xmap.M{"abc": "123"}, "%v?format=part", ts.URL)
   275  	if err != nil || !strings.Contains(string(bval), "123") {
   276  		t.Errorf("err:%v,text:%v", err, bval)
   277  		return
   278  	}
   279  	sval, err = PostMultipartText(nil, xmap.M{"abc": "123"}, "%v?format=part", ts.URL)
   280  	if err != nil || !strings.Contains(sval, "123") {
   281  		t.Errorf("err:%v,text:%v", err, sval)
   282  		return
   283  	}
   284  	mval, err = PostMultipartMap(xmap.M{"abc": "123"}, xmap.M{"abc": "123"}, "%v?format=part", ts.URL)
   285  	if err != nil || mval.Str("abc") != "123" {
   286  		t.Errorf("err:%v,text:%v", err, sval)
   287  		return
   288  	}
   289  	{ //json result
   290  		var jval xmap.M
   291  		jval = xmap.New()
   292  		err = PostJSON(&jval, bytes.NewBufferString("{}"), "%v?format=json", ts.URL)
   293  		if err != nil || len(jval) < 1 {
   294  			t.Error(err)
   295  			return
   296  		}
   297  		jval = xmap.New()
   298  		err = PostTypeJSON(&jval, ContentTypeJSON, bytes.NewBufferString("{}"), "%v?format=json", ts.URL)
   299  		if err != nil || len(jval) < 1 {
   300  			t.Error(err)
   301  			return
   302  		}
   303  		jval = xmap.New()
   304  		_, err = PostHeaderJSON(&jval, nil, bytes.NewBufferString("{}"), "%v?format=json", ts.URL)
   305  		if err != nil || len(jval) < 1 {
   306  			t.Error(err)
   307  			return
   308  		}
   309  		jval = xmap.New()
   310  		err = PostJSONJSON(&jval, xmap.New(), "%v?format=json", ts.URL)
   311  		if err != nil || len(jval) < 1 {
   312  			t.Error(err)
   313  			return
   314  		}
   315  		err = PostJSONJSON(&jval, t.Error, "%v?format=json", ts.URL)
   316  		if err == nil {
   317  			t.Error(err)
   318  			return
   319  		}
   320  	}
   321  	//
   322  	//test error
   323  	_, err = PostText(nil, "%v/?format=error", ts.URL)
   324  	if err == nil {
   325  		t.Error(err)
   326  		return
   327  	}
   328  	_, err = PostText(nil, "%v/\x06?format=text", ts.URL)
   329  	if err == nil {
   330  		t.Error(err)
   331  		return
   332  	}
   333  	_, err = PostText(nil, "%v/?format=text", "http://127.0.0.1:32")
   334  	if err == nil {
   335  		t.Error(err)
   336  		return
   337  	}
   338  	_, _, err = MethodText("POST", nil, nil, "%v/?format=error", ts.URL)
   339  	if err != nil {
   340  		t.Error(err)
   341  		return
   342  	}
   343  	_, _, err = MethodText("POST", nil, nil, "%v/?format=error", "http://127.0.0.1:32")
   344  	if err == nil {
   345  		t.Error(err)
   346  		return
   347  	}
   348  	//
   349  	_, err = PostMultipartText(nil, xmap.M{"abc": "123"}, "%v?format=error", ts.URL)
   350  	if err == nil {
   351  		t.Errorf("err:%v,text:%v", err, sval)
   352  		return
   353  	}
   354  	_, err = PostMultipartText(nil, xmap.M{"abc": "123"}, "%v?\x06format=text", ts.URL)
   355  	if err == nil {
   356  		t.Errorf("err:%v,text:%v", err, sval)
   357  		return
   358  	}
   359  	_, err = PostMultipartText(nil, xmap.M{"abc": "123"}, "%v?format=text", "http://127.0.0.1:32")
   360  	if err == nil {
   361  		t.Errorf("err:%v,text:%v", err, sval)
   362  		return
   363  	}
   364  }
   365  
   366  func TestUpload(t *testing.T) {
   367  	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   368  		var format = r.URL.Query().Get("format")
   369  		switch format {
   370  		case "json":
   371  			r.ParseMultipartForm(1024)
   372  			f, _ := r.MultipartForm.File["abc"][0].Open()
   373  			data, _ := ioutil.ReadAll(f)
   374  			f.Close()
   375  			xjson.WriteJSON(w, map[string]interface{}{
   376  				"abc": string(data),
   377  			})
   378  		case "text":
   379  			r.ParseMultipartForm(1024)
   380  			f, _ := r.MultipartForm.File["abc"][0].Open()
   381  			io.Copy(w, f)
   382  			f.Close()
   383  		default:
   384  			w.WriteHeader(500)
   385  			fmt.Fprintf(w, "error")
   386  		}
   387  	}))
   388  	var ival int
   389  	os.Remove("/tmp/xhttp_test.txt")
   390  	ioutil.WriteFile("/tmp/xhttp_test.txt", []byte("1"), os.ModePerm)
   391  	//
   392  	sval, err := UploadText(nil, "abc", "/tmp/xhttp_test.txt", "%v?format=text", ts.URL)
   393  	if err != nil || sval != "1" {
   394  		t.Error(err)
   395  		return
   396  	}
   397  	sval, _, err = UploadHeaderText(xmap.M{"h1": 1}, xmap.M{"f1": 1}, "abc", "/tmp/xhttp_test.txt", "%v?format=text", ts.URL)
   398  	if err != nil || sval != "1" {
   399  		t.Error(err)
   400  		return
   401  	}
   402  	//
   403  	mval, err := UploadMap(nil, "abc", "/tmp/xhttp_test.txt", "%v?format=json", ts.URL)
   404  	if err != nil {
   405  		t.Error(err)
   406  		return
   407  	}
   408  	err = mval.ValidFormat(`abc,r|i,r:0;`, &ival)
   409  	if err != nil || ival != 1 {
   410  		t.Error(err)
   411  		return
   412  	}
   413  	//
   414  	//test error
   415  	_, err = UploadText(nil, "abc", "/tmp/xhttp_test.txt", "%v/\x01?format=json", ts.URL)
   416  	if err == nil {
   417  		t.Error(err)
   418  		return
   419  	}
   420  	_, err = UploadText(nil, "abc", "/tmp/xhttp_test.txt", "%v?format=error", ts.URL)
   421  	if err == nil {
   422  		t.Error(err)
   423  		return
   424  	}
   425  	_, err = UploadText(nil, "abc", "/tmp/xxxxx", "%v?format=text", ts.URL)
   426  	if err == nil {
   427  		t.Error(err)
   428  		return
   429  	}
   430  }
   431  
   432  func TestDownload(t *testing.T) {
   433  	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   434  		var format = r.URL.Query().Get("format")
   435  		switch format {
   436  		case "filename":
   437  			w.Header().Set("Content-Disposition", "binary;filename=\"xhttp_downt.txt\"")
   438  			fmt.Fprintf(w, "1")
   439  		case "text":
   440  			fmt.Fprintf(w, "1")
   441  		default:
   442  			w.WriteHeader(500)
   443  			fmt.Fprintf(w, "error")
   444  		}
   445  	}))
   446  	//
   447  	os.Remove("/tmp/xhttp_downt.txt")
   448  	_, err := Download("/tmp/", "%v?format=filename", ts.URL)
   449  	if err != nil {
   450  		t.Error(err)
   451  		return
   452  	}
   453  	bval, err := ioutil.ReadFile("/tmp/xhttp_downt.txt")
   454  	if err != nil || string(bval) != "1" {
   455  		t.Error(err)
   456  		return
   457  	}
   458  	//
   459  	os.Remove("/tmp/xhttp_downt2.txt")
   460  	_, err = Download("/tmp/", "%v/xhttp_downt2.txt?format=text", ts.URL)
   461  	if err != nil {
   462  		t.Error(err)
   463  		return
   464  	}
   465  	bval, err = ioutil.ReadFile("/tmp/xhttp_downt2.txt")
   466  	if err != nil || string(bval) != "1" {
   467  		t.Error(err)
   468  		return
   469  	}
   470  	//
   471  	os.Remove("/tmp/index.html")
   472  	_, err = DownloadHeader("/tmp/", xmap.M{"x": 1}, "%v/?format=text", ts.URL)
   473  	if err != nil {
   474  		t.Error(err)
   475  		return
   476  	}
   477  	bval, err = ioutil.ReadFile("/tmp/index.html")
   478  	if err != nil || string(bval) != "1" {
   479  		t.Error(err)
   480  		return
   481  	}
   482  	//
   483  	//test error
   484  	_, err = Download("/tmp/", "%v\x01/?format=text", ts.URL)
   485  	if err == nil {
   486  		t.Error(err)
   487  		return
   488  	}
   489  	_, err = Download("/tmp/", "%v/?format=error", ts.URL)
   490  	if err == nil {
   491  		t.Error(err)
   492  		return
   493  	}
   494  	_, err = Download("/tmp/", "http://127.0.0.1:32")
   495  	if err == nil {
   496  		t.Error(err)
   497  		return
   498  	}
   499  }
   500  
   501  func TestCreateMultipartBody(t *testing.T) {
   502  	CreateMultipartBody(map[string]interface{}{"A": 1})
   503  }
   504  
   505  // func TestReadAllStr(t *testing.T) {
   506  // 	res, _ := readAllStr(nil)
   507  // 	if len(res) > 0 {
   508  // 		t.Error("not empty")
   509  // 		return
   510  // 	}
   511  // 	r, _ := os.Open("name")
   512  // 	res, _ = readAllStr(r)
   513  // 	if len(res) > 0 {
   514  // 		t.Error("not empty")
   515  // 		return
   516  // 	}
   517  // }
   518  
   519  // func TestHTTP2(t *testing.T) {
   520  // 	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   521  // 		w.Write([]byte("{\"code\":1}"))
   522  // 	}))
   523  // 	ts2 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   524  // 		w.Write([]byte("{\"code:1}"))
   525  // 	}))
   526  // 	ts3 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   527  // 	}))
   528  // 	res := HTTPGet2(ts.URL)
   529  // 	fmt.Println(res)
   530  // 	res = HTTPGet2(ts2.URL)
   531  // 	fmt.Println(res)
   532  // 	res = HTTPGet2(ts3.URL)
   533  // 	fmt.Println(res)
   534  // 	_, err := HPostF(ts.URL, map[string]string{"ma": "123"}, "abc", "")
   535  // 	if err == nil {
   536  // 		t.Error("not error")
   537  // 		return
   538  // 	}
   539  // 	_, err = HPostF("hhh", map[string]string{"ma": "123"}, "abc", "test.txt")
   540  // 	if err == nil {
   541  // 		t.Error("not error")
   542  // 		return
   543  // 	}
   544  // 	_, err = HPostF(ts.URL, map[string]string{"ma": "123"}, "abc", "test.txt")
   545  // 	if err != nil {
   546  // 		t.Error(err.Error())
   547  // 		return
   548  // 	}
   549  // 	_, _, err = HTTPClient.HPostF_H(ts.URL, map[string]string{"ma": "123"}, map[string]string{"ma": "123"}, "abc", "test.txt")
   550  // 	if err != nil {
   551  // 		t.Error(err.Error())
   552  // 		return
   553  // 	}
   554  // 	_, err = HPostF(ts.URL, map[string]string{"ma": "123"}, "abc", "/tmp")
   555  // 	if err == nil {
   556  // 		t.Error("not error")
   557  // 		return
   558  // 	}
   559  // 	_, err = HPostF2(ts.URL, map[string]string{"ma": "123"}, "abc", "test.txt")
   560  // 	if err != nil {
   561  // 		t.Error(err.Error())
   562  // 		return
   563  // 	}
   564  // 	_, _, err = HTTPClient.HGet_H(map[string]string{"ma": "123"}, "%s?abc=%s", ts.URL, "1111")
   565  // 	if err != nil {
   566  // 		t.Error(err.Error())
   567  // 		return
   568  // 	}
   569  // 	HPostF2("kkk", map[string]string{"ma": "123"}, "abc", "test.txt")
   570  // 	HPostF2("123%34%56://s", map[string]string{"ma": "123"}, "abc", "test.txt")
   571  // 	HTTPPost(ts.URL, map[string]string{"ma": "123"})
   572  // 	HTTPPost2(ts.URL, map[string]string{"ma": "123"})
   573  // 	HTTPPost2("jhj", map[string]string{"ma": "123"})
   574  // 	//
   575  // 	HTTPClient.DLoad("/tmp/aa.log", map[string]string{"ma": "123"}, "%s", ts.URL)
   576  // 	fmt.Println(HTTPClient.DLoad("/sg/aa.log", map[string]string{"ma": "123"}, "%s", ts.URL))
   577  // }
   578  // func TestHTTPErr(t *testing.T) {
   579  // 	fmt.Println(HPostF2("123%45%6", map[string]string{"ma": "123"}, "abc", "test.txt"))
   580  // 	fmt.Println(HGet("123%45%6"))
   581  // 	fmt.Println(HPostN("123%45%6", "ABcc", nil))
   582  // 	fmt.Println(DLoad("spath", "123%45%6"))
   583  // }
   584  // func TestHpp(t *testing.T) {
   585  // 	HGet("123%45%67://s")
   586  // 	HGet("kk")
   587  // 	HGet2("kk")
   588  // 	HPost("jjjj", nil)
   589  // 	HPost2("kkk", nil)
   590  // 	HGet2("kkk")
   591  // }
   592  
   593  // //
   594  // type osize struct {
   595  // }
   596  
   597  // func (o *osize) Size() int64 {
   598  // 	return 100
   599  // }
   600  
   601  // type ostat struct {
   602  // 	F *os.File
   603  // }
   604  
   605  // func (o *ostat) Stat() (os.FileInfo, error) {
   606  // 	return o.F.Stat()
   607  // }
   608  // func TestFormFSzie(t *testing.T) {
   609  // 	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   610  // 		w.Write([]byte("{\"code\":1}"))
   611  // 		src, _, err := r.FormFile("abc")
   612  // 		if err != nil {
   613  // 			t.Error(err.Error())
   614  // 			return
   615  // 		}
   616  // 		fsize := FormFSzie(src)
   617  // 		if fsize < 1 {
   618  // 			t.Error("not size")
   619  // 		}
   620  // 	}))
   621  // 	_, err := HPostF(ts.URL, map[string]string{"ma": "123"}, "abc", "test.txt")
   622  // 	if err != nil {
   623  // 		t.Error(err.Error())
   624  // 	}
   625  // 	f, _ := os.Open("test.txt")
   626  // 	defer f.Close()
   627  // 	fsize := FormFSzie(f)
   628  // 	if fsize < 1 {
   629  // 		t.Error("not right")
   630  // 	}
   631  // 	fsize = FormFSzie(&osize{})
   632  // 	if fsize < 1 {
   633  // 		t.Error("not right")
   634  // 	}
   635  // }
   636  
   637  // func TestMap2Query(t *testing.T) {
   638  // 	mv := map[string]interface{}{}
   639  // 	mv["abc"] = "123"
   640  // 	mv["dd"] = "ee"
   641  // 	fmt.Println(Map2Query(mv))
   642  // }
   643  
   644  // func TestAHttpPost(t *testing.T) {
   645  // 	ts := httptest.NewServer(http.HandlerFunc(
   646  // 		func(w http.ResponseWriter, r *http.Request) {
   647  // 			r.ParseMultipartForm(10000000)
   648  // 			// r.PostFormValue(key)
   649  // 			fmt.Println(r.FormValue("ab"))
   650  // 			fmt.Println(r.PostFormValue("ab"))
   651  // 		}))
   652  // 	HPostF2s(ts.URL, map[string]string{
   653  // 		"ab": "233",
   654  // 	}, "", "")
   655  // }
   656  
   657  // func HPostF2s(url string, fields map[string]string, fkey string, fp string) (string, error) {
   658  // 	ctype, bodyBuf, err := CreateFormBody2(fields, fkey, fp)
   659  // 	if err != nil {
   660  // 		return "", err
   661  // 	}
   662  // 	res, err := http.Post(url, ctype, bodyBuf)
   663  // 	if err != nil {
   664  // 		return "", err
   665  // 	}
   666  // 	return readAllStr(res.Body)
   667  // }
   668  
   669  // func CreateFormBody2(fields map[string]string, fkey string, fp string) (string, *bytes.Buffer, error) {
   670  // 	bodyBuf := &bytes.Buffer{}
   671  // 	bodyWriter := multipart.NewWriter(bodyBuf)
   672  // 	for k, v := range fields {
   673  // 		bodyWriter.WriteField(k, v)
   674  // 	}
   675  // 	w, _ := bodyWriter.CreateFormField("kkk")
   676  // 	w.Write([]byte("kkkkkkk"))
   677  // 	if len(fkey) > 0 {
   678  // 		fileWriter, err := bodyWriter.CreateFormFile(fkey, fp)
   679  // 		if err != nil {
   680  // 			return "", nil, err
   681  // 		}
   682  // 		fh, err := os.Open(fp)
   683  // 		if err != nil {
   684  // 			return "", nil, err
   685  // 		}
   686  // 		defer fh.Close()
   687  // 		_, err = io.Copy(fileWriter, fh)
   688  // 		if err != nil {
   689  // 			return "", nil, err
   690  // 		}
   691  // 	}
   692  // 	ctype := bodyWriter.FormDataContentType()
   693  // 	bodyWriter.Close()
   694  // 	return ctype, bodyBuf, nil
   695  // }
   696  
   697  // type ErrWriter struct {
   698  // }
   699  
   700  // func (e *ErrWriter) Write(p []byte) (n int, err error) {
   701  // 	return 0, errors.New("test erro")
   702  // }
   703  
   704  // func TestCreateFileForm(t *testing.T) {
   705  // 	bodyWriter := multipart.NewWriter(&ErrWriter{})
   706  // 	err := CreateFileForm(bodyWriter, "sss", "sss")
   707  // 	if err == nil {
   708  // 		t.Error("not error")
   709  // 	}
   710  // 	fmt.Println(err.Error())
   711  // }
   712  
   713  // func TestJson2Ary(t *testing.T) {
   714  // 	ary, err := Json2Ary(`
   715  // 		[1,2,"ss"]
   716  // 		`)
   717  // 	if err != nil {
   718  // 		t.Error(err.Error())
   719  // 		return
   720  // 	}
   721  // 	fmt.Println(ary)
   722  // 	_, err = Json2Ary(`
   723  // 		[1,2,ss"]
   724  // 		`)
   725  // 	if err == nil {
   726  // 		t.Error("not error")
   727  // 		return
   728  // 	}
   729  // }
   730  
   731  // type ErrReader struct {
   732  // }
   733  
   734  // func (e *ErrReader) Read(p []byte) (n int, err error) {
   735  // 	return 0, errors.New("error")
   736  // }
   737  // func TestPostN(t *testing.T) {
   738  // 	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   739  // 		w.Write([]byte("Ok"))
   740  // 	}))
   741  // 	_, data, err := HPostN(ts.URL, "text/plain", bytes.NewBuffer([]byte("WWW")))
   742  // 	if err != nil {
   743  // 		t.Error(err.Error())
   744  // 		return
   745  // 	}
   746  // 	fmt.Println(data)
   747  // 	fmt.Println(HPostN("kkk://sssss", "text/plain", bytes.NewBuffer([]byte("WWW"))))
   748  // 	fmt.Println(HPostN("http:///kkkfjdfsfsd", "text/plain", bytes.NewBuffer([]byte("WWW"))))
   749  // 	// fmt.Println(HPostN("http://www.baidu.com", "text/plain", &ErrReader{}))
   750  // }
   751  // func TestPostN2(t *testing.T) {
   752  // 	_, err := http.NewRequest("POT", "123%45%6://www.ss.com?", nil)
   753  // 	fmt.Println(err)
   754  // }
   755  
   756  // func TestHttps(t *testing.T) {
   757  // 	fmt.Println(HGet("https://qnear.com"))
   758  // }
   759  
   760  func TestShould(t *testing.T) {
   761  	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
   762  		switch r.URL.Path {
   763  		case "/ok":
   764  			fmt.Fprintf(w, "%v", converter.JSON(xmap.M{"code": 0}))
   765  		default:
   766  			http.NotFound(w, r)
   767  		}
   768  
   769  	}))
   770  	client := NewShouldClient()
   771  	client.Should(t, "code", 0).GetMap("%v/ok", ts.URL)
   772  	client.Should(t, "code", 0).GetHeaderMap(nil, "%v/ok", ts.URL)
   773  	client.Should(t, "code", 0).PostMap(nil, "%v/ok", ts.URL)
   774  	client.Should(t, "code", 0).PostTypeMap("application/json", nil, "%v/ok", ts.URL)
   775  	client.Should(t, "code", 0).PostHeaderMap(nil, nil, "%v/ok", ts.URL)
   776  	client.Should(t, "code", 0).PostJSONMap(xmap.M{}, "%v/ok", ts.URL)
   777  	client.Should(t, "code", 0).MethodMap("POST", nil, nil, "%v/ok", ts.URL)
   778  	client.Should(t, "code", 0).PostFormMap(nil, "%v/ok", ts.URL)
   779  	client.Should(t, "code", 0).PostMultipartMap(nil, nil, "%v/ok", ts.URL)
   780  	client.Should(t, "code", 0).UploadMap(nil, "file", "xhttp.go", "%v/ok", ts.URL)
   781  	client.ShouldError(t).GetMap("%v/none", ts.URL)
   782  	client.Should(t).OnlyLog(true).GetMap("%v/none", ts.URL)
   783  }