[TEST] improve xmpp struct library
This commit is contained in:
parent
3e39507f5a
commit
255c2ef9ad
|
@ -19,7 +19,7 @@ type StreamFeatures struct {
|
|||
// TLSStartTLS implements RFC 6120 - A.3 StartTLS Namespace
|
||||
type TLSStartTLS struct {
|
||||
XMLName xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-tls starttls"`
|
||||
Required *string `xml:"required"`
|
||||
Required string `xml:"required,omitempty"`
|
||||
}
|
||||
|
||||
// TLSProceed implements RFC 6120 - A.3 StartTLS Namespace
|
||||
|
|
|
@ -8,7 +8,7 @@ type StanzaErrorGroup struct {
|
|||
Conflict *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas conflict"`
|
||||
FeatureNotImplemented *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas feature-not-implemented"`
|
||||
Forbidden *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas forbidden"`
|
||||
Gone string `xml:"urn:ietf:params:xml:ns:xmpp-stanzas gone"`
|
||||
Gone string `xml:"urn:ietf:params:xml:ns:xmpp-stanzas gone,omitempty"`
|
||||
InternalServerError *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas internal-server-error"`
|
||||
ItemNotFound *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas item-not-found"`
|
||||
JIDMalformed *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas jid-malformed"`
|
||||
|
@ -17,7 +17,7 @@ type StanzaErrorGroup struct {
|
|||
NotAuthorized *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas not-authorized"`
|
||||
PolicyViolation *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas policy-violation"`
|
||||
RecipientUnavailable *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas recipient-unavailable"`
|
||||
Redirect string `xml:"urn:ietf:params:xml:ns:xmpp-stanzas redirect"`
|
||||
Redirect string `xml:"urn:ietf:params:xml:ns:xmpp-stanzas redirect,omitempty"`
|
||||
RegistrationRequired *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas registration-required"`
|
||||
RemoteServerNotFound *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas remote-server-not-found"`
|
||||
RemoteServerTimeout *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-stanzas remote-server-timeout"`
|
||||
|
|
|
@ -23,7 +23,7 @@ type StreamErrorGroup struct {
|
|||
Reset *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-streams reset"`
|
||||
ResourceConstraint *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-streams resource-constraint"`
|
||||
RestrictedXML *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-streams restricted-xml"`
|
||||
SeeOtherHost string `xml:"urn:ietf:params:xml:ns:xmpp-streams see-other-host"`
|
||||
SeeOtherHost string `xml:"urn:ietf:params:xml:ns:xmpp-streams see-other-host,omitempty"`
|
||||
SystemShutdown *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-streams system-shutdown"`
|
||||
UndefinedCondition *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-streams undefined-condition"`
|
||||
UnsupportedEncoding *xml.Name `xml:"urn:ietf:params:xml:ns:xmpp-streams unsupported-encoding"`
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
// DiscoQueryInfo implements XEP 0030: Service Discovery - 11.1 disco#info
|
||||
type DiscoQueryInfo struct {
|
||||
XMLName xml.Name `xml:"http://jabber.org/protocol/disco#info query"`
|
||||
Node *string `xml:"node,attr"`
|
||||
Node string `xml:"node,attr,omitempty"`
|
||||
Identities []*DiscoIdentity
|
||||
Features []*DiscoFeature
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ type DiscoQueryInfo struct {
|
|||
type DiscoIdentity struct {
|
||||
XMLName xml.Name `xml:"http://jabber.org/protocol/disco#info identity"`
|
||||
Category string `xml:"category"` //required
|
||||
Name *string `xml:"name"`
|
||||
Name string `xml:"name,omitempty"`
|
||||
Type string `xml:"type"` //required
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ type DiscoFeature struct {
|
|||
// DiscoQueryItem implements XEP 0030: Service Discovery - 11.2 disco#items
|
||||
type DiscoQueryItem struct {
|
||||
XMLName xml.Name `xml:"http://jabber.org/protocol/disco#items query"`
|
||||
Node *string `xml:"node,attr"`
|
||||
Node string `xml:"node,attr,omitempty"`
|
||||
Items []*DiscoItem
|
||||
}
|
||||
|
||||
|
@ -39,6 +39,6 @@ type DiscoQueryItem struct {
|
|||
type DiscoItem struct {
|
||||
XMLName xml.Name `xml:"http://jabber.org/protocol/disco#items item"`
|
||||
JID *xmppbase.JID `xml:"jid"`
|
||||
Node *string `xml:"node"`
|
||||
Name *string `xml:"name"`
|
||||
Node string `xml:"node,omitempty"`
|
||||
Name string `xml:"name,omitempty"`
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package xmppiq
|
||||
|
||||
// just to validate, there is no functions in here
|
||||
func init() {
|
||||
a := 1
|
||||
a++
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package xmppiq
|
||||
|
||||
import "testing"
|
||||
|
||||
func Test(t *testing.T) {}
|
|
@ -9,5 +9,5 @@ type Version struct {
|
|||
XMLName xml.Name `xml:"jabber:iq:version query"`
|
||||
Name string `xml:"name"` //required
|
||||
Version string `xml:"version"` //required
|
||||
OS *string `xml:"os"`
|
||||
OS string `xml:"os,omitempty"`
|
||||
}
|
||||
|
|
|
@ -22,22 +22,13 @@ func XMLStartElementToString(element *xml.StartElement) string {
|
|||
|
||||
func XMLChildrenString(o interface{}) (result string) {
|
||||
val := reflect.ValueOf(o)
|
||||
if val.Kind() == reflect.Interface && !val.IsNil() {
|
||||
elm := val.Elem()
|
||||
if elm.Kind() == reflect.Ptr && !elm.IsNil() && elm.Elem().Kind() == reflect.Ptr {
|
||||
val = elm
|
||||
}
|
||||
if val.Kind() == reflect.Ptr {
|
||||
val = val.Elem()
|
||||
}
|
||||
if val.Kind() == reflect.Struct {
|
||||
first := true
|
||||
for i := 0; i < val.NumField(); i++ {
|
||||
valueField := val.Field(i)
|
||||
if valueField.Kind() == reflect.Interface && !valueField.IsNil() {
|
||||
elm := valueField.Elem()
|
||||
if elm.Kind() == reflect.Ptr && !elm.IsNil() && elm.Elem().Kind() == reflect.Ptr {
|
||||
valueField = elm
|
||||
}
|
||||
}
|
||||
|
||||
if xmlElement, ok := valueField.Interface().(*xml.Name); ok && xmlElement != nil {
|
||||
if first {
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
package xmpp
|
||||
|
||||
import (
|
||||
"encoding/xml"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestStartElementToString(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
str := XMLStartElementToString(nil)
|
||||
assert.Equal("<nil>", str)
|
||||
|
||||
str = XMLStartElementToString(&xml.StartElement{
|
||||
Name: xml.Name{
|
||||
Local: "iq",
|
||||
Space: "jabber:client",
|
||||
},
|
||||
Attr: []xml.Attr{
|
||||
xml.Attr{
|
||||
Name: xml.Name{
|
||||
Local: "foo",
|
||||
},
|
||||
Value: "bar",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
assert.Equal(`<iq xmlns="jabber:client" foo="bar">`, str)
|
||||
}
|
||||
|
||||
func remarhal(origin StanzaErrorGroup) StanzaErrorGroup {
|
||||
el := StanzaErrorGroup{}
|
||||
b, _ := xml.Marshal(origin)
|
||||
xml.Unmarshal(b, &el)
|
||||
return el
|
||||
}
|
||||
|
||||
func TestChildrenString(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
el := remarhal(StanzaErrorGroup{
|
||||
Conflict: &xml.Name{},
|
||||
Gone: "a",
|
||||
Forbidden: &xml.Name{},
|
||||
})
|
||||
str := XMLChildrenString(el)
|
||||
assert.Equal("conflict, forbidden", str)
|
||||
|
||||
str = XMLChildrenString(&el)
|
||||
assert.Equal("conflict, forbidden", str)
|
||||
}
|
||||
|
||||
func TestCreateCookie(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
a := CreateCookieString()
|
||||
assert.NotEqual("", a)
|
||||
|
||||
b := CreateCookieString()
|
||||
assert.NotEqual("", b)
|
||||
|
||||
assert.NotEqual(a, b)
|
||||
}
|
Reference in New Issue