github.com/coreos/goproxy@v0.0.0-20190513173959-f8dc2d7ba04e/ext/html/html_test.go (about)

     1  package goproxy_html_test
     2  
     3  import (
     4  	"github.com/elazarl/goproxy"
     5  	"github.com/elazarl/goproxy/ext/html"
     6  	"io/ioutil"
     7  	"net/http"
     8  	"net/http/httptest"
     9  	"net/url"
    10  	"testing"
    11  )
    12  
    13  type ConstantServer int
    14  
    15  func (s ConstantServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    16  	w.Header().Set("Content-Type", "text/plain; charset=iso-8859-8")
    17  	//w.Header().Set("Content-Type","text/plain; charset=cp-1255")
    18  	w.Write([]byte{0xe3, 0xf3})
    19  }
    20  
    21  func TestCharset(t *testing.T) {
    22  	s := httptest.NewServer(ConstantServer(1))
    23  	defer s.Close()
    24  
    25  	ch := make(chan string, 2)
    26  	proxy := goproxy.NewProxyHttpServer()
    27  	proxy.OnResponse().Do(goproxy_html.HandleString(
    28  		func(s string, ctx *goproxy.ProxyCtx) string {
    29  			ch <- s
    30  			return s
    31  		}))
    32  	proxyServer := httptest.NewServer(proxy)
    33  	defer proxyServer.Close()
    34  
    35  	proxyUrl, _ := url.Parse(proxyServer.URL)
    36  	client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}}
    37  
    38  	resp, err := client.Get(s.URL + "/cp1255.txt")
    39  	if err != nil {
    40  		t.Fatal("GET:", err)
    41  	}
    42  	b, err := ioutil.ReadAll(resp.Body)
    43  	if err != nil {
    44  		t.Fatal("readAll:", err)
    45  	}
    46  	resp.Body.Close()
    47  
    48  	inHandleString := ""
    49  	select {
    50  	case inHandleString = <-ch:
    51  	default:
    52  	}
    53  
    54  	if len(b) != 2 || b[0] != 0xe3 || b[1] != 0xf3 {
    55  		t.Error("Did not translate back to 0xe3,0xf3, instead", b)
    56  	}
    57  	if inHandleString != "דף" {
    58  		t.Error("HandleString did not convert DALET & PEH SOFIT (דף) from ISO-8859-8 to utf-8, got", []byte(inHandleString))
    59  	}
    60  }