103 lines
2.5 KiB
Go
103 lines
2.5 KiB
Go
|
|
package starnet
|
||
|
|
|
||
|
|
import (
|
||
|
|
"crypto/tls"
|
||
|
|
"net/http"
|
||
|
|
"net/http/httptest"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestRequestSkipTLSVerify(t *testing.T) {
|
||
|
|
server := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
|
|
w.WriteHeader(http.StatusOK)
|
||
|
|
w.Write([]byte("OK"))
|
||
|
|
}))
|
||
|
|
defer server.Close()
|
||
|
|
|
||
|
|
// Without skip verify (should fail)
|
||
|
|
req := NewSimpleRequest(server.URL, "GET")
|
||
|
|
_, err := req.Do()
|
||
|
|
if err == nil {
|
||
|
|
t.Error("Expected TLS error without skip verify, got nil")
|
||
|
|
}
|
||
|
|
|
||
|
|
// With skip verify (should succeed)
|
||
|
|
req2 := NewSimpleRequest(server.URL, "GET").SetSkipTLSVerify(true)
|
||
|
|
resp, err := req2.Do()
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("Do() with skip verify error: %v", err)
|
||
|
|
}
|
||
|
|
defer resp.Close()
|
||
|
|
|
||
|
|
body, _ := resp.Body().String()
|
||
|
|
if body != "OK" {
|
||
|
|
t.Errorf("Body = %v; want OK", body)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestRequestCustomTLSConfig(t *testing.T) {
|
||
|
|
server := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
|
|
w.WriteHeader(http.StatusOK)
|
||
|
|
w.Write([]byte("OK"))
|
||
|
|
}))
|
||
|
|
defer server.Close()
|
||
|
|
|
||
|
|
tlsConfig := &tls.Config{
|
||
|
|
InsecureSkipVerify: true,
|
||
|
|
MinVersion: tls.VersionTLS12,
|
||
|
|
}
|
||
|
|
|
||
|
|
req := NewSimpleRequest(server.URL, "GET").SetTLSConfig(tlsConfig)
|
||
|
|
resp, err := req.Do()
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("Do() error: %v", err)
|
||
|
|
}
|
||
|
|
defer resp.Close()
|
||
|
|
|
||
|
|
if resp.StatusCode != http.StatusOK {
|
||
|
|
t.Errorf("StatusCode = %v; want %v", resp.StatusCode, http.StatusOK)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestClientDefaultTLSConfig(t *testing.T) {
|
||
|
|
server := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
|
|
w.WriteHeader(http.StatusOK)
|
||
|
|
}))
|
||
|
|
defer server.Close()
|
||
|
|
|
||
|
|
client := NewClientNoErr()
|
||
|
|
client.SetDefaultSkipTLSVerify(true)
|
||
|
|
|
||
|
|
resp, err := client.Get(server.URL)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("Get() error: %v", err)
|
||
|
|
}
|
||
|
|
defer resp.Close()
|
||
|
|
|
||
|
|
if resp.StatusCode != http.StatusOK {
|
||
|
|
t.Errorf("StatusCode = %v; want %v", resp.StatusCode, http.StatusOK)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestRequestLevelTLSOverride(t *testing.T) {
|
||
|
|
server := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
|
|
w.WriteHeader(http.StatusOK)
|
||
|
|
}))
|
||
|
|
defer server.Close()
|
||
|
|
|
||
|
|
// Client level: skip verify = false
|
||
|
|
client := NewClientNoErr()
|
||
|
|
client.SetDefaultSkipTLSVerify(false)
|
||
|
|
|
||
|
|
// Request level: skip verify = true (should override)
|
||
|
|
resp, err := client.Get(server.URL, WithSkipTLSVerify(true))
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("Get() error: %v", err)
|
||
|
|
}
|
||
|
|
defer resp.Close()
|
||
|
|
|
||
|
|
if resp.StatusCode != http.StatusOK {
|
||
|
|
t.Errorf("StatusCode = %v; want %v", resp.StatusCode, http.StatusOK)
|
||
|
|
}
|
||
|
|
}
|