github.com/echohead/hub@v2.2.1+incompatible/github/http_test.go (about)

     1  package github
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"net/http"
     7  	"net/http/httptest"
     8  	"net/url"
     9  	"testing"
    10  
    11  	"github.com/github/hub/Godeps/_workspace/src/github.com/bmizerany/assert"
    12  )
    13  
    14  func setupTestServer() *testServer {
    15  	m := http.NewServeMux()
    16  	s := httptest.NewServer(m)
    17  	u, _ := url.Parse(s.URL)
    18  
    19  	return &testServer{
    20  		Server:   s,
    21  		ServeMux: m,
    22  		URL:      u,
    23  	}
    24  }
    25  
    26  type testServer struct {
    27  	*http.ServeMux
    28  	Server *httptest.Server
    29  	URL    *url.URL
    30  }
    31  
    32  func (s *testServer) Close() {
    33  	s.Server.Close()
    34  }
    35  
    36  func TestNewHttpClient_OverrideURL(t *testing.T) {
    37  	s := setupTestServer()
    38  	defer s.Close()
    39  
    40  	s.HandleFunc("/override", func(w http.ResponseWriter, r *http.Request) {
    41  		assert.Equal(t, "https", r.Header.Get("X-Original-Scheme"))
    42  		assert.Equal(t, "example.com", r.Host)
    43  	})
    44  
    45  	c := newHttpClient(s.URL.String(), false)
    46  	c.Get("https://example.com/override")
    47  
    48  	s.HandleFunc("/not-override", func(w http.ResponseWriter, r *http.Request) {
    49  		assert.Equal(t, "", r.Header.Get("X-Original-Scheme"))
    50  		assert.Equal(t, s.URL.Host, r.Host)
    51  	})
    52  
    53  	c = newHttpClient("", false)
    54  	c.Get(fmt.Sprintf("%s/not-override", s.URL.String()))
    55  }
    56  
    57  func TestVerboseTransport_VerbosePrintln(t *testing.T) {
    58  	var b bytes.Buffer
    59  	tr := &verboseTransport{
    60  		Out:       &b,
    61  		Colorized: true,
    62  	}
    63  
    64  	tr.verbosePrintln("foo")
    65  	assert.Equal(t, "\033[36mfoo\033[0m\n", b.String())
    66  }