all repos — mdget @ 509eee2768c7a02a0c6c106e93313d46dc846f67

Unnamed repository; edit this file 'description' to name the repository.

test/test_http.go (view raw)

  1package main
  2
  3import (
  4	"fmt"
  5	"net/http"
  6	"net/http/httptest"
  7	"os"
  8)
  9
 10func main() {
 11	fmt.Println("Testing HTTP connectivity...")
 12	
 13	allPassed := true
 14	
 15	// Test 1: Basic HTML fetching and conversion
 16	fmt.Print("Test 1: Basic HTML fetching and conversion... ")
 17	
 18	// Create a test server with simple HTML response
 19	server1 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 20		w.Header().Set("Content-Type", "text/html")
 21		fmt.Fprintf(w, `<!DOCTYPE html>
 22<html>
 23<head><title>Test Page</title></head>
 24<body>
 25	<h1>Hello World</h1>
 26	<p>This is a test page.</p>
 27	<ul>
 28		<li>Item 1</li>
 29		<li>Item 2</li>
 30	</ul>
 31	<a href="/about">About</a>
 32	<img src="/image.png" alt="Test Image">
 33</body>
 34</html>`)
 35	}))
 36	defer server1.Close()
 37	
 38	output, err := runMdget(server1.URL)
 39	if !assertError("Basic fetch", err, false) {
 40		allPassed = false
 41	} else {
 42		expectedMarkers := []string{"# Hello World", "This is a test page", "Item 1", "Item 2"}
 43		allMarkersFound := true
 44		for _, marker := range expectedMarkers {
 45			if !assertContains("Basic fetch output", output, marker) {
 46				allMarkersFound = false
 47				allPassed = false
 48			}
 49		}
 50		if allMarkersFound {
 51			fmt.Println("✅")
 52		}
 53	}
 54	
 55	// Test 2: Custom User-Agent header
 56	fmt.Print("Test 2: Custom User-Agent header... ")
 57	
 58	var capturedUserAgent string
 59	server2 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 60		capturedUserAgent = r.Header.Get("User-Agent")
 61		w.Header().Set("Content-Type", "text/html")
 62		fmt.Fprint(w, "<html><body>Test</body></html>")
 63	}))
 64	defer server2.Close()
 65	
 66	output, err = runMdget("--user-agent", "TestAgent/1.0", server2.URL)
 67	if !assertError("Custom User-Agent", err, false) {
 68		allPassed = false
 69	} else if capturedUserAgent != "TestAgent/1.0" {
 70		fmt.Printf("❌\n   Expected User-Agent 'TestAgent/1.0', got %q\n", capturedUserAgent)
 71		allPassed = false
 72	} else {
 73		fmt.Println("✅")
 74	}
 75	
 76	// Test 3: Default User-Agent
 77	fmt.Print("Test 3: Default User-Agent... ")
 78	
 79	capturedUserAgent = ""
 80	server3 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 81		capturedUserAgent = r.Header.Get("User-Agent")
 82		w.Header().Set("Content-Type", "text/html")
 83		fmt.Fprint(w, "<html><body>Test</body></html>")
 84	}))
 85	defer server3.Close()
 86	
 87	output, err = runMdget(server3.URL)
 88	if !assertError("Default User-Agent", err, false) {
 89		allPassed = false
 90	} else if capturedUserAgent != "mdget/0.1.0" {
 91		fmt.Printf("❌\n   Expected default User-Agent 'mdget/0.1.0', got %q\n", capturedUserAgent)
 92		allPassed = false
 93	} else {
 94		fmt.Println("✅")
 95	}
 96	
 97	// Test 4: HTTP timeout (fast server should work)
 98	fmt.Print("Test 4: HTTP timeout with fast server... ")
 99	
100	server4 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
101		w.Header().Set("Content-Type", "text/html")
102		fmt.Fprint(w, "<html><body>Fast response</body></html>")
103	}))
104	defer server4.Close()
105	
106	output, err = runMdget("--timeout", "5", server4.URL)
107	if !assertError("Fast server with timeout", err, false) {
108		allPassed = false
109	} else if !assertContains("Fast server output", output, "Fast response") {
110		allPassed = false
111	} else {
112		fmt.Println("✅")
113	}
114	
115	// Test 5: Different HTTP methods (should use GET)
116	fmt.Print("Test 5: Server receives GET request... ")
117	
118	var capturedMethod string
119	server5 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
120		capturedMethod = r.Method
121		w.Header().Set("Content-Type", "text/html")
122		fmt.Fprint(w, "<html><body>OK</body></html>")
123	}))
124	defer server5.Close()
125	
126	output, err = runMdget(server5.URL)
127	if !assertError("HTTP method", err, false) {
128		allPassed = false
129	} else if capturedMethod != "GET" {
130		fmt.Printf("❌\n   Expected GET method, got %q\n", capturedMethod)
131		allPassed = false
132	} else {
133		fmt.Println("✅")
134	}
135	
136	if allPassed {
137		fmt.Println("\n✅ All HTTP connectivity tests passed!")
138		os.Exit(0)
139	} else {
140		fmt.Println("\n❌ Some HTTP connectivity tests failed!")
141		os.Exit(1)
142	}
143}