package main import ( "fmt" "net/http" "net/http/httptest" "os" ) func main() { fmt.Println("Testing HTTP connectivity...") allPassed := true // Test 1: Basic HTML fetching and conversion fmt.Print("Test 1: Basic HTML fetching and conversion... ") // Create a test server with simple HTML response server1 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html") fmt.Fprintf(w, ` Test Page

Hello World

This is a test page.

About Test Image `) })) defer server1.Close() output, err := runMdget(server1.URL) if !assertError("Basic fetch", err, false) { allPassed = false } else { expectedMarkers := []string{"# Hello World", "This is a test page", "Item 1", "Item 2"} allMarkersFound := true for _, marker := range expectedMarkers { if !assertContains("Basic fetch output", output, marker) { allMarkersFound = false allPassed = false } } if allMarkersFound { fmt.Println("✅") } } // Test 2: Custom User-Agent header fmt.Print("Test 2: Custom User-Agent header... ") var capturedUserAgent string server2 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { capturedUserAgent = r.Header.Get("User-Agent") w.Header().Set("Content-Type", "text/html") fmt.Fprint(w, "Test") })) defer server2.Close() output, err = runMdget("--user-agent", "TestAgent/1.0", server2.URL) if !assertError("Custom User-Agent", err, false) { allPassed = false } else if capturedUserAgent != "TestAgent/1.0" { fmt.Printf("❌\n Expected User-Agent 'TestAgent/1.0', got %q\n", capturedUserAgent) allPassed = false } else { fmt.Println("✅") } // Test 3: Default User-Agent fmt.Print("Test 3: Default User-Agent... ") capturedUserAgent = "" server3 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { capturedUserAgent = r.Header.Get("User-Agent") w.Header().Set("Content-Type", "text/html") fmt.Fprint(w, "Test") })) defer server3.Close() output, err = runMdget(server3.URL) if !assertError("Default User-Agent", err, false) { allPassed = false } else if capturedUserAgent != "mdget/0.1.0" { fmt.Printf("❌\n Expected default User-Agent 'mdget/0.1.0', got %q\n", capturedUserAgent) allPassed = false } else { fmt.Println("✅") } // Test 4: HTTP timeout (fast server should work) fmt.Print("Test 4: HTTP timeout with fast server... ") server4 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html") fmt.Fprint(w, "Fast response") })) defer server4.Close() output, err = runMdget("--timeout", "5", server4.URL) if !assertError("Fast server with timeout", err, false) { allPassed = false } else if !assertContains("Fast server output", output, "Fast response") { allPassed = false } else { fmt.Println("✅") } // Test 5: Different HTTP methods (should use GET) fmt.Print("Test 5: Server receives GET request... ") var capturedMethod string server5 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { capturedMethod = r.Method w.Header().Set("Content-Type", "text/html") fmt.Fprint(w, "OK") })) defer server5.Close() output, err = runMdget(server5.URL) if !assertError("HTTP method", err, false) { allPassed = false } else if capturedMethod != "GET" { fmt.Printf("❌\n Expected GET method, got %q\n", capturedMethod) allPassed = false } else { fmt.Println("✅") } if allPassed { fmt.Println("\n✅ All HTTP connectivity tests passed!") os.Exit(0) } else { fmt.Println("\n❌ Some HTTP connectivity tests failed!") os.Exit(1) } }