File: http_test.go

package info (click to toggle)
hub 2.7.0~ds1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,176 kB
  • sloc: sh: 1,072; ruby: 825; makefile: 74
file content (94 lines) | stat: -rw-r--r-- 2,053 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package github

import (
	"bytes"
	"fmt"
	"io/ioutil"
	"log"
	"net"
	"net/http"
	"net/http/httptest"
	"net/url"
	"os"
	"testing"

	"github.com/bmizerany/assert"
)

func setupTestServer(unixSocket string) *testServer {
	m := http.NewServeMux()
	s := httptest.NewServer(m)
	u, _ := url.Parse(s.URL)

	if unixSocket != "" {
		os.Remove(unixSocket)
		unixListener, err := net.Listen("unix", unixSocket)
		if err != nil {
			log.Fatal("Unable to listen on unix-socket: ", err)
		}
		go http.Serve(unixListener, m)
	}

	return &testServer{
		Server:   s,
		ServeMux: m,
		URL:      u,
	}
}

type testServer struct {
	*http.ServeMux
	Server *httptest.Server
	URL    *url.URL
}

func (s *testServer) Close() {
	s.Server.Close()
}

func TestNewHttpClient_OverrideURL(t *testing.T) {
	s := setupTestServer("")
	defer s.Close()

	s.HandleFunc("/override", func(w http.ResponseWriter, r *http.Request) {
		assert.Equal(t, "https", r.Header.Get("X-Original-Scheme"))
		assert.Equal(t, "example.com", r.Host)
	})

	c := newHttpClient(s.URL.String(), false, "")
	c.Get("https://example.com/override")

	s.HandleFunc("/not-override", func(w http.ResponseWriter, r *http.Request) {
		assert.Equal(t, "", r.Header.Get("X-Original-Scheme"))
		assert.Equal(t, s.URL.Host, r.Host)
	})

	c = newHttpClient("", false, "")
	c.Get(fmt.Sprintf("%s/not-override", s.URL.String()))
}

func TestNewHttpClient_UnixSocket(t *testing.T) {
	sock := "/tmp/hub-go.sock"
	s := setupTestServer(sock)
	defer s.Close()

	s.HandleFunc("/unix-socket", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("unix-socket-works"))
	})
	c := newHttpClient("", false, sock)
	resp, err := c.Get(fmt.Sprintf("%s/unix-socket", s.URL.String()))
	assert.Equal(t, nil, err)
	result, _ := ioutil.ReadAll(resp.Body)
	assert.Equal(t, "unix-socket-works", string(result))
}

func TestVerboseTransport_VerbosePrintln(t *testing.T) {
	var b bytes.Buffer
	tr := &verboseTransport{
		Out:       &b,
		Colorized: true,
	}

	tr.verbosePrintln("foo")
	assert.Equal(t, "\033[36mfoo\033[0m\n", b.String())
}