github.com/gocaveman/caveman@v0.0.0-20191211162744-0ddf99dbdf6e/webutil/htmlmin/htmlmin_test.go (about) 1 package htmlmin 2 3 import ( 4 "bytes" 5 "fmt" 6 "io" 7 "log" 8 "net/http" 9 "net/http/httptest" 10 "net/http/httputil" 11 "path" 12 "testing" 13 14 "github.com/gocaveman/caveman/webutil" 15 ) 16 17 func TestHTMLMin(t *testing.T) { 18 19 var hl webutil.HandlerList 20 21 hl = append(hl, webutil.NewContextCancelHandler()) 22 hl = append(hl, NewHandler()) 23 hl = append(hl, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 24 if path.Ext(r.URL.Path) == ".html" { 25 w.Header().Set("content-type", "text/html") 26 fmt.Fprintf(w, "<!doctype html>\n\n<html>\n\n<body>\n\n<div>\n\nTesting 123</div></body></html>") 27 } else if path.Ext(r.URL.Path) == ".css" { 28 w.Header().Set("content-type", "text/css") 29 fmt.Fprintf(w, ".test1 { display: block\n\n}") 30 } 31 })) 32 33 r := httptest.NewRequest("GET", "/test1.html", nil) 34 tw := httptest.NewRecorder() 35 var w http.ResponseWriter = tw 36 37 w, r = hl.ServeHTTPChain(w, r) 38 w.(io.Closer).Close() 39 40 result := tw.Result() 41 b, _ := httputil.DumpResponse(result, true) 42 log.Printf("RESULT:\n%s", b) 43 44 if !bytes.Contains(b, []byte(`<!doctype html><html><body><div>Testing 123</div></body></html>`)) { 45 t.Fatalf("unexpected output: %s", b) 46 } 47 48 // write something not text/html and make sure all is well 49 r = httptest.NewRequest("GET", "/test1.css", nil) 50 tw = httptest.NewRecorder() 51 w = tw 52 53 w, r = hl.ServeHTTPChain(w, r) 54 w.(io.Closer).Close() 55 56 result = tw.Result() 57 b, _ = httputil.DumpResponse(result, true) 58 log.Printf("RESULT:\n%s", b) 59 60 if !bytes.Contains(b, []byte(".test1 { display: block\n\n}")) { 61 t.Fatalf("unexpected output: %s", b) 62 } 63 64 }