package stanza_test import ( "encoding/xml" "testing" "gosrc.io/xmpp/stanza" ) // https://xmpp.org/extensions/xep-0045.html#example-27 func TestMucPassword(t *testing.T) { str := ` cauldronburn ` var parsedPresence stanza.Presence if err := xml.Unmarshal([]byte(str), &parsedPresence); err != nil { t.Errorf("Unmarshal(%s) returned error", str) } var muc stanza.MucPresence if ok := parsedPresence.Get(&muc); !ok { t.Error("muc presence extension was not found") } if muc.Password != "cauldronburn" { t.Errorf("incorrect password: '%s'", muc.Password) } } // https://xmpp.org/extensions/xep-0045.html#example-37 func TestMucHistory(t *testing.T) { str := ` ` var parsedPresence stanza.Presence if err := xml.Unmarshal([]byte(str), &parsedPresence); err != nil { t.Errorf("Unmarshal(%s) returned error: %s", str, err) return } var muc stanza.MucPresence if ok := parsedPresence.Get(&muc); !ok { t.Error("muc presence extension was not found") return } if v, ok := muc.History.MaxStanzas.Get(); !ok || v != 20 { t.Errorf("incorrect MaxStanzas: '%#v'", muc.History.MaxStanzas) } } // https://xmpp.org/extensions/xep-0045.html#example-37 func TestMucNoHistory(t *testing.T) { str := "" + "" + "" + "" + "" maxstanzas := 0 pres := stanza.Presence{Attrs: stanza.Attrs{ From: "hag66@shakespeare.lit/pda", Id: "n13mt3l", To: "coven@chat.shakespeare.lit/thirdwitch", }, Extensions: []stanza.PresExtension{ stanza.MucPresence{ History: stanza.History{MaxStanzas: stanza.NewNullableInt(maxstanzas)}, }, }, } data, err := xml.Marshal(&pres) if err != nil { t.Error("error on encode:", err) return } if string(data) != str { t.Errorf("incorrect stanza: \n%s\n%s", str, data) } }