|
1 | 1 | package s3shared |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "bytes" |
5 | | - "io" |
6 | 4 | "strings" |
7 | 5 | "testing" |
8 | 6 | ) |
9 | 7 |
|
10 | 8 | func TestGetResponseErrorCode(t *testing.T) { |
| 9 | + const xmlErrorResponse = `<Error> |
| 10 | + <Type>Sender</Type> |
| 11 | + <Code>InvalidGreeting</Code> |
| 12 | + <Message>Hi</Message> |
| 13 | + <HostId>bar-id</HostId> |
| 14 | + <RequestId>foo-id</RequestId> |
| 15 | +</Error>` |
| 16 | + |
11 | 17 | cases := map[string]struct { |
12 | | - isS3Service bool |
13 | | - status int |
14 | | - errorResponse io.Reader |
| 18 | + getErr func() (ErrorComponents, error) |
15 | 19 | expectedErrorCode string |
16 | 20 | expectedErrorMessage string |
17 | 21 | expectedErrorRequestID string |
18 | 22 | expectedErrorHostID string |
19 | 23 | }{ |
20 | 24 | "standard xml error": { |
21 | | - isS3Service: true, |
22 | | - status: 400, |
23 | | - errorResponse: bytes.NewReader([]byte(`<Error> |
24 | | - <Type>Sender</Type> |
25 | | - <Code>InvalidGreeting</Code> |
26 | | - <Message>Hi</Message> |
27 | | - <HostId>bar-id</HostId> |
28 | | - <RequestId>foo-id</RequestId> |
29 | | -</Error>`)), |
| 25 | + getErr: func() (ErrorComponents, error) { |
| 26 | + errResp := strings.NewReader(xmlErrorResponse) |
| 27 | + return GetErrorResponseComponents(errResp) |
| 28 | + }, |
30 | 29 | expectedErrorCode: "InvalidGreeting", |
31 | 30 | expectedErrorMessage: "Hi", |
32 | 31 | expectedErrorRequestID: "foo-id", |
33 | 32 | expectedErrorHostID: "bar-id", |
34 | 33 | }, |
| 34 | + |
35 | 35 | "s3 no response body": { |
36 | | - isS3Service: true, |
37 | | - status: 400, |
38 | | - errorResponse: bytes.NewReader([]byte(``)), |
| 36 | + getErr: func() (ErrorComponents, error) { |
| 37 | + errResp := strings.NewReader("") |
| 38 | + return GetS3ErrorResponseComponents(errResp, 400) |
| 39 | + }, |
39 | 40 | expectedErrorCode: "BadRequest", |
40 | 41 | expectedErrorMessage: "Bad Request", |
41 | 42 | }, |
42 | 43 | "s3control no response body": { |
43 | | - isS3Service: false, |
44 | | - status: 400, |
45 | | - errorResponse: bytes.NewReader([]byte(``)), |
| 44 | + getErr: func() (ErrorComponents, error) { |
| 45 | + errResp := strings.NewReader("") |
| 46 | + return GetErrorResponseComponents(errResp) |
| 47 | + }, |
46 | 48 | }, |
47 | 49 | } |
48 | 50 |
|
49 | 51 | for name, c := range cases { |
50 | 52 | t.Run(name, func(t *testing.T) { |
51 | | - ec, err := GetErrorResponseComponents(c.errorResponse, c.status, c.isS3Service) |
| 53 | + ec, err := c.getErr() |
52 | 54 | if err != nil { |
53 | 55 | t.Fatalf("expected no error, got %v", err) |
54 | 56 | } |
|
0 commit comments