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, `
This is a test page.
`)
}))
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)
}
}