...
1 package xml
2
3 import (
4 "bytes"
5 "io"
6 "strings"
7 "testing"
8 )
9
10 func TestGetResponseErrorCode(t *testing.T) {
11 cases := map[string]struct {
12 errorResponse io.Reader
13 noErrorWrappingEnabled bool
14 expectedErrorCode string
15 expectedErrorMessage string
16 }{
17 "no error wrapping enabled": {
18 errorResponse: bytes.NewReader([]byte(`<ErrorResponse>
19 <Error>
20 <Type>Sender</Type>
21 <Code>InvalidGreeting</Code>
22 <Message>Hi</Message>
23 <AnotherSetting>setting</AnotherSetting>
24 </Error>
25 <RequestId>foo-id</RequestId>
26 </ErrorResponse>`)),
27 expectedErrorCode: "InvalidGreeting",
28 expectedErrorMessage: "Hi",
29 },
30 "no error wrapping disabled": {
31 errorResponse: bytes.NewReader([]byte(`<ErrorResponse>
32 <Type>Sender</Type>
33 <Code>InvalidGreeting</Code>
34 <Message>Hi</Message>
35 <AnotherSetting>setting</AnotherSetting>
36 <RequestId>foo-id</RequestId>
37 </ErrorResponse>`)),
38 noErrorWrappingEnabled: true,
39 expectedErrorCode: "InvalidGreeting",
40 expectedErrorMessage: "Hi",
41 },
42 "no response body": {
43 errorResponse: bytes.NewReader([]byte(``)),
44 },
45 }
46
47 for name, c := range cases {
48 t.Run(name, func(t *testing.T) {
49 ec, err := GetErrorResponseComponents(c.errorResponse, c.noErrorWrappingEnabled)
50 if err != nil {
51 t.Fatalf("expected no error, got %v", err)
52 }
53
54 if e, a := c.expectedErrorCode, ec.Code; !strings.EqualFold(e, a) {
55 t.Fatalf("expected %v, got %v", e, a)
56 }
57 if e, a := c.expectedErrorMessage, ec.Message; !strings.EqualFold(e, a) {
58 t.Fatalf("expected %v, got %v", e, a)
59 }
60 })
61 }
62 }
63
View as plain text