1package request_test
2
3import (
4	"strings"
5	"testing"
6
7	"github.com/aws/aws-sdk-go/aws"
8	"github.com/aws/aws-sdk-go/aws/request"
9	"github.com/aws/aws-sdk-go/awstesting/mock"
10)
11
12func TestRequestCancelRetry(t *testing.T) {
13	c := make(chan struct{})
14	reqNum := 0
15	s := mock.NewMockClient(&aws.Config{
16		MaxRetries: aws.Int(1),
17	})
18	s.Handlers.Validate.Clear()
19	s.Handlers.Unmarshal.Clear()
20	s.Handlers.UnmarshalMeta.Clear()
21	s.Handlers.UnmarshalError.Clear()
22	s.Handlers.Send.PushFront(func(r *request.Request) {
23		reqNum++
24	})
25	out := &testData{}
26	r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out)
27	r.HTTPRequest.Cancel = c
28	close(c)
29
30	err := r.Send()
31	if !strings.Contains(err.Error(), "canceled") {
32		t.Errorf("expect canceled in error, %v", err)
33	}
34	if e, a := 1, reqNum; e != a {
35		t.Errorf("expect %v, got %v", e, a)
36	}
37}
38