141 lines
3.3 KiB
Go
141 lines
3.3 KiB
Go
package starnet
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestRequestHeaders(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
headers := make(map[string]string)
|
|
for k, v := range r.Header {
|
|
if len(v) > 0 {
|
|
headers[k] = v[0]
|
|
}
|
|
}
|
|
json.NewEncoder(w).Encode(headers)
|
|
}))
|
|
defer server.Close()
|
|
|
|
req := NewSimpleRequest(server.URL, "GET").
|
|
SetHeader("X-Custom-Header", "value1").
|
|
AddHeader("X-Multi-Header", "value1").
|
|
AddHeader("X-Multi-Header", "value2")
|
|
|
|
resp, err := req.Do()
|
|
if err != nil {
|
|
t.Fatalf("Do() error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
var headers map[string]string
|
|
resp.Body().JSON(&headers)
|
|
|
|
if headers["X-Custom-Header"] != "value1" {
|
|
t.Errorf("X-Custom-Header = %v; want value1", headers["X-Custom-Header"])
|
|
}
|
|
}
|
|
|
|
func TestRequestCookies(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
cookies := make(map[string]string)
|
|
for _, cookie := range r.Cookies() {
|
|
cookies[cookie.Name] = cookie.Value
|
|
}
|
|
json.NewEncoder(w).Encode(cookies)
|
|
}))
|
|
defer server.Close()
|
|
|
|
req := NewSimpleRequest(server.URL, "GET").
|
|
AddSimpleCookie("session", "abc123").
|
|
AddSimpleCookie("user", "john")
|
|
|
|
resp, err := req.Do()
|
|
if err != nil {
|
|
t.Fatalf("Do() error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
var cookies map[string]string
|
|
resp.Body().JSON(&cookies)
|
|
|
|
if cookies["session"] != "abc123" {
|
|
t.Errorf("session cookie = %v; want abc123", cookies["session"])
|
|
}
|
|
if cookies["user"] != "john" {
|
|
t.Errorf("user cookie = %v; want john", cookies["user"])
|
|
}
|
|
}
|
|
|
|
func TestRequestUserAgent(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.Write([]byte(r.UserAgent()))
|
|
}))
|
|
defer server.Close()
|
|
|
|
req := NewSimpleRequest(server.URL, "GET").
|
|
SetUserAgent("CustomAgent/1.0")
|
|
|
|
resp, err := req.Do()
|
|
if err != nil {
|
|
t.Fatalf("Do() error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
body, _ := resp.Body().String()
|
|
if body != "CustomAgent/1.0" {
|
|
t.Errorf("User-Agent = %v; want CustomAgent/1.0", body)
|
|
}
|
|
}
|
|
|
|
func TestRequestBearerToken(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
auth := r.Header.Get("Authorization")
|
|
w.Write([]byte(auth))
|
|
}))
|
|
defer server.Close()
|
|
|
|
req := NewSimpleRequest(server.URL, "GET").
|
|
SetBearerToken("mytoken123")
|
|
|
|
resp, err := req.Do()
|
|
if err != nil {
|
|
t.Fatalf("Do() error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
body, _ := resp.Body().String()
|
|
expected := "Bearer mytoken123"
|
|
if body != expected {
|
|
t.Errorf("Authorization = %v; want %v", body, expected)
|
|
}
|
|
}
|
|
|
|
func TestRequestBasicAuth(t *testing.T) {
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
username, password, ok := r.BasicAuth()
|
|
if !ok {
|
|
w.WriteHeader(http.StatusUnauthorized)
|
|
return
|
|
}
|
|
w.Write([]byte(username + ":" + password))
|
|
}))
|
|
defer server.Close()
|
|
|
|
req := NewSimpleRequest(server.URL, "GET").
|
|
SetBasicAuth("user", "pass")
|
|
|
|
resp, err := req.Do()
|
|
if err != nil {
|
|
t.Fatalf("Do() error: %v", err)
|
|
}
|
|
defer resp.Close()
|
|
|
|
body, _ := resp.Body().String()
|
|
if body != "user:pass" {
|
|
t.Errorf("BasicAuth = %v; want user:pass", body)
|
|
}
|
|
}
|