package stanza_test import ( "encoding/xml" "testing" "gosrc.io/xmpp/stanza" ) func TestNoStartTLS(t *testing.T) { streamFeatures := `<stream:features xmlns:stream='http://etherx.jabber.org/streams'> </stream:features>` var parsedSF stanza.StreamFeatures if err := xml.Unmarshal([]byte(streamFeatures), &parsedSF); err != nil { t.Errorf("Unmarshal(%s) returned error: %v", streamFeatures, err) } startTLS, ok := parsedSF.DoesStartTLS() if ok { t.Error("StartTLS feature should not be enabled") } if startTLS.Required { t.Error("StartTLS cannot be required as default") } } func TestStartTLS(t *testing.T) { streamFeatures := `<stream:features xmlns:stream='http://etherx.jabber.org/streams'> <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'> <required/> </starttls> </stream:features>` var parsedSF stanza.StreamFeatures if err := xml.Unmarshal([]byte(streamFeatures), &parsedSF); err != nil { t.Errorf("Unmarshal(%s) returned error: %v", streamFeatures, err) } startTLS, ok := parsedSF.DoesStartTLS() if !ok { t.Error("StartTLS feature should be enabled") } if !startTLS.Required { t.Error("StartTLS feature should be required") } } // TODO: Ability to support / detect previous version of stream management feature func TestStreamManagement(t *testing.T) { streamFeatures := `<stream:features xmlns:stream='http://etherx.jabber.org/streams'> <sm xmlns='urn:xmpp:sm:3'/> </stream:features>` var parsedSF stanza.StreamFeatures if err := xml.Unmarshal([]byte(streamFeatures), &parsedSF); err != nil { t.Errorf("Unmarshal(%s) returned error: %v", streamFeatures, err) } ok := parsedSF.DoesStreamManagement() if !ok { t.Error("Stream Management feature should have been detected") } }