From f4e3fe8c0aee8e6266f5a36ef77e6d67a4600578 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Sun, 5 Apr 2020 14:37:17 +0200 Subject: [PATCH] internal: add Multistatus.Get test with HTTP error References: https://github.com/emersion/go-webdav/issues/39 --- internal/elements_test.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 internal/elements_test.go 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) + } +}