diff --git a/internal/elements_test.go b/internal/elements_test.go new file mode 100644 index 0000000..4308833 --- /dev/null +++ b/internal/elements_test.go @@ -0,0 +1,34 @@ +package internal + +import ( + "encoding/xml" + "strings" + "testing" +) + +// https://tools.ietf.org/html/rfc4918#section-9.6.2 +const exampleDeleteMultistatusStr = ` + + + http://www.example.com/container/resource3 + HTTP/1.1 423 Locked + + +` + +func TestMultistatus_Get_error(t *testing.T) { + r := strings.NewReader(exampleDeleteMultistatusStr) + var ms Multistatus + if err := xml.NewDecoder(r).Decode(&ms); err != nil { + t.Fatalf("Decode() = %v", err) + } + + _, err := ms.Get("/container/resource3") + if err == nil { + t.Errorf("Multistatus.Get() returned a nil error, expected non-nil") + } else if httpErr, ok := err.(*HTTPError); !ok { + t.Errorf("Multistatus.Get() = %T, expected an *HTTPError", err) + } else if httpErr.Code != 423 { + t.Errorf("HTTPError.Code = %v, expected 423", httpErr.Code) + } +}