github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/unmarshal_error_leak_test.go (about)

     1  package s3
     2  
     3  import (
     4  	"net/http"
     5  	"testing"
     6  
     7  	"github.com/aavshr/aws-sdk-go/aws/request"
     8  	"github.com/aavshr/aws-sdk-go/awstesting"
     9  )
    10  
    11  func TestUnmarhsalErrorLeak(t *testing.T) {
    12  	req := &request.Request{
    13  		HTTPRequest: &http.Request{
    14  			Header: make(http.Header),
    15  			Body:   &awstesting.ReadCloser{Size: 2048},
    16  		},
    17  	}
    18  	req.HTTPResponse = &http.Response{
    19  		Body: &awstesting.ReadCloser{Size: 2048},
    20  		Header: http.Header{
    21  			"X-Amzn-Requestid": []string{"1"},
    22  		},
    23  		StatusCode: http.StatusOK,
    24  	}
    25  
    26  	reader := req.HTTPResponse.Body.(*awstesting.ReadCloser)
    27  	unmarshalError(req)
    28  
    29  	if req.Error == nil {
    30  		t.Error("expected an error, but received none")
    31  	}
    32  
    33  	if !reader.Closed {
    34  		t.Error("expected reader to be closed")
    35  	}
    36  
    37  	if e, a := 0, reader.Size; e != a {
    38  		t.Errorf("expected %d, but received %d", e, a)
    39  	}
    40  }