package test
import (
"bytes"
"tank/code/dav"
"tank/code/dav/xml"
"testing"
"time"
)
func TestXmlDecoder(t *testing.T) {
propfind := &dav.Propfind{}
str := `
`
reader := bytes.NewReader([]byte(str))
err := xml.NewDecoder(reader).Decode(propfind)
if err != nil {
t.Error(err.Error())
}
resultMap := make(map[string]bool)
resultMap[`propfind.XMLName.Space == "DAV:"`] = propfind.XMLName.Space == "DAV:"
resultMap[`propfind.XMLName.Local == "propfind"`] = propfind.XMLName.Local == "propfind"
resultMap[`len(propfind.Prop) == 4`] = len(propfind.Prop) == 4
resultMap[`propfind.Prop[0]`] = propfind.Prop[0].Space == "DAV:" && propfind.Prop[0].Local == "resourcetype"
resultMap[`propfind.Prop[1]`] = propfind.Prop[1].Space == "DAV:" && propfind.Prop[1].Local == "getcontentlength"
resultMap[`propfind.Prop[2]`] = propfind.Prop[2].Space == "DAV:" && propfind.Prop[2].Local == "creationdate"
resultMap[`propfind.Prop[3]`] = propfind.Prop[3].Space == "DAV:" && propfind.Prop[3].Local == "getlastmodified"
for k, v := range resultMap {
if !v {
t.Errorf(" %s error", k)
}
}
t.Logf("[%v] pass!", time.Now())
}
func TestXmlEncoder(t *testing.T) {
writer := &bytes.Buffer{}
response := &dav.Response{
XMLName: xml.Name{Space: "DAV:", Local: "response"},
Href: []string{"/api/dav"},
Propstat: []dav.SubPropstat{
{
Prop: []dav.Property{
{
XMLName: xml.Name{Space: "DAV:", Local: "resourcetype"},
InnerXML: []byte(``),
},
{
XMLName: xml.Name{Space: "DAV:", Local: "getlastmodified"},
InnerXML: []byte(`Mon, 22 Apr 2019 06:38:36 GMT`),
},
},
Status: "HTTP/1.1 200 OK",
},
},
}
err := xml.NewEncoder(writer).Encode(response)
if err != nil {
t.Error(err.Error())
}
bs := writer.Bytes()
str := string(bs)
resultMap := make(map[string]bool)
resultMap["equal"] = str == `/api/davMon, 22 Apr 2019 06:38:36 GMTHTTP/1.1 200 OK`
for k, v := range resultMap {
if !v {
t.Errorf("%s error", k)
}
}
t.Logf("[%v] pass!", time.Now())
}