MCPcopy Create free account
hub / github.com/aws/smithy-go / TestXMLNodeDecoder_Value

Function TestXMLNodeDecoder_Value

encoding/xml/xml_decoder_test.go:178–237  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

176}
177
178func TestXMLNodeDecoder_Value(t *testing.T) {
179 cases := map[string]struct {
180 responseBody io.Reader
181 expectedValue []byte
182 expectedDone bool
183 expectedError string
184 }{
185 "simple success case": {
186 responseBody: bytes.NewReader([]byte(`<Response>abc</Response>`)),
187 expectedValue: []byte(`abc`),
188 },
189 "no value": {
190 responseBody: bytes.NewReader([]byte(`<Response></Response>`)),
191 expectedValue: []byte{},
192 },
193 "self-closing": {
194 responseBody: bytes.NewReader([]byte(`<Response />`)),
195 expectedValue: []byte{},
196 },
197 "empty body": {
198 responseBody: bytes.NewReader([]byte(``)),
199 expectedError: "EOF",
200 },
201 "start element retrieved": {
202 responseBody: bytes.NewReader([]byte(`<Response><Struct>abc</Struct></Response>`)),
203 expectedError: "expected value for Response element, got xml.StartElement type",
204 },
205 }
206
207 for name, c := range cases {
208 t.Run(name, func(t *testing.T) {
209 xmlDecoder := xml.NewDecoder(c.responseBody)
210 st, err := FetchRootElement(xmlDecoder)
211 if err != nil {
212 if len(c.expectedError) == 0 {
213 t.Fatalf("Expected no error, got %v", err)
214 }
215
216 if e, a := c.expectedError, err; !strings.Contains(err.Error(), c.expectedError) {
217 t.Fatalf("expected error to contain %v, found %v", e, a.Error())
218 }
219 }
220 nodeDecoder := WrapNodeDecoder(xmlDecoder, st)
221 token, err := nodeDecoder.Value()
222 if err != nil {
223 if len(c.expectedError) == 0 {
224 t.Fatalf("Expected no error, got %v", err)
225 }
226
227 if e, a := c.expectedError, err; !strings.Contains(err.Error(), c.expectedError) {
228 t.Fatalf("expected error to contain %v, found %v", e, a.Error())
229 }
230 }
231
232 if !reflect.DeepEqual(c.expectedValue, token) {
233 t.Fatalf("%v != %v", c.expectedValue, token)
234 }
235 })

Callers

nothing calls this directly

Calls 4

FetchRootElementFunction · 0.85
WrapNodeDecoderFunction · 0.85
ErrorMethod · 0.65
ValueMethod · 0.45

Tested by

no test coverage detected