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  }