99 lines
2.2 KiB
Go
99 lines
2.2 KiB
Go
package starnet
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestRequestQuery(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
query := r.URL.Query()
|
|
result := make(map[string][]string)
|
|
for k, v := range query {
|
|
result[k] = v
|
|
}
|
|
json.NewEncoder(w).Encode(result)
|
|
}))
|
|
defer server.Close()
|
|
|
|
req := NewSimpleRequest(server.URL, "GET").
|
|
AddQuery("name", "John").
|
|
AddQuery("age", "30").
|
|
AddQuery("tags", "go").
|
|
AddQuery("tags", "http")
|
|
|
|
resp, err := req.Do()
|
|
if err != nil {
|
|
t.Fatalf("Do() error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
var result map[string][]string
|
|
resp.Body().JSON(&result)
|
|
|
|
if len(result["name"]) != 1 || result["name"][0] != "John" {
|
|
t.Errorf("name = %v; want [John]", result["name"])
|
|
}
|
|
if len(result["tags"]) != 2 {
|
|
t.Errorf("tags length = %v; want 2", len(result["tags"]))
|
|
}
|
|
}
|
|
|
|
func TestRequestSetQuery(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
query := r.URL.Query()
|
|
w.Write([]byte(query.Get("key")))
|
|
}))
|
|
defer server.Close()
|
|
|
|
req := NewSimpleRequest(server.URL, "GET").
|
|
SetQuery("key", "value1").
|
|
SetQuery("key", "value2") // Should overwrite
|
|
|
|
resp, err := req.Do()
|
|
if err != nil {
|
|
t.Fatalf("Do() error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
body, _ := resp.Body().String()
|
|
if body != "value2" {
|
|
t.Errorf("query value = %v; want value2", body)
|
|
}
|
|
}
|
|
|
|
func TestRequestDeleteQuery(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
query := r.URL.Query()
|
|
result := make(map[string]string)
|
|
for k := range query {
|
|
result[k] = query.Get(k)
|
|
}
|
|
json.NewEncoder(w).Encode(result)
|
|
}))
|
|
defer server.Close()
|
|
|
|
req := NewSimpleRequest(server.URL, "GET").
|
|
AddQuery("keep", "yes").
|
|
AddQuery("delete", "no").
|
|
DeleteQuery("delete")
|
|
|
|
resp, err := req.Do()
|
|
if err != nil {
|
|
t.Fatalf("Do() error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
var result map[string]string
|
|
resp.Body().JSON(&result)
|
|
|
|
if _, exists := result["delete"]; exists {
|
|
t.Error("delete query should not exist")
|
|
}
|
|
if result["keep"] != "yes" {
|
|
t.Errorf("keep = %v; want yes", result["keep"])
|
|
}
|
|
}
|