github.com/carlanton/docker@v1.8.0-rc1/pkg/httputils/resumablerequestreader_test.go (about) 1 package httputils 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "net/http" 7 "net/http/httptest" 8 "strings" 9 "testing" 10 ) 11 12 func TestResumableRequestReader(t *testing.T) { 13 14 srvtxt := "some response text data" 15 16 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 17 fmt.Fprintln(w, srvtxt) 18 })) 19 defer ts.Close() 20 21 var req *http.Request 22 req, err := http.NewRequest("GET", ts.URL, nil) 23 if err != nil { 24 t.Fatal(err) 25 } 26 27 client := &http.Client{} 28 retries := uint32(5) 29 imgSize := int64(len(srvtxt)) 30 31 resreq := ResumableRequestReader(client, req, retries, imgSize) 32 defer resreq.Close() 33 34 data, err := ioutil.ReadAll(resreq) 35 if err != nil { 36 t.Fatal(err) 37 } 38 39 resstr := strings.TrimSuffix(string(data), "\n") 40 41 if resstr != srvtxt { 42 t.Errorf("resstr != srvtxt") 43 } 44 } 45 46 func TestResumableRequestReaderWithInitialResponse(t *testing.T) { 47 48 srvtxt := "some response text data" 49 50 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 51 fmt.Fprintln(w, srvtxt) 52 })) 53 defer ts.Close() 54 55 var req *http.Request 56 req, err := http.NewRequest("GET", ts.URL, nil) 57 if err != nil { 58 t.Fatal(err) 59 } 60 61 client := &http.Client{} 62 retries := uint32(5) 63 imgSize := int64(len(srvtxt)) 64 65 res, err := client.Do(req) 66 if err != nil { 67 t.Fatal(err) 68 } 69 70 resreq := ResumableRequestReaderWithInitialResponse(client, req, retries, imgSize, res) 71 defer resreq.Close() 72 73 data, err := ioutil.ReadAll(resreq) 74 if err != nil { 75 t.Fatal(err) 76 } 77 78 resstr := strings.TrimSuffix(string(data), "\n") 79 80 if resstr != srvtxt { 81 t.Errorf("resstr != srvtxt") 82 } 83 }