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) } }