package xmpp // import "gosrc.io/xmpp" import ( "encoding/xml" "testing" ) func TestHandshake(t *testing.T) { opts := ComponentOptions{ Domain: "test.localhost", Secret: "mypass", } c := Component{ComponentOptions: opts} streamID := "1263952298440005243" expected := "c77e2ef0109fbbc5161e83b51629cd1353495332" result := c.handshake(streamID) if result != expected { t.Errorf("incorrect handshake calculation '%s' != '%s'", result, expected) } } func TestGenerateHandshake(t *testing.T) { // TODO } // We should be able to properly parse delegation confirmation messages func TestParsingDelegationMessage(t *testing.T) { packetStr := ` ` var msg Message data := []byte(packetStr) if err := xml.Unmarshal(data, &msg); err != nil { t.Errorf("Unmarshal(%s) returned error", data) } // Check that we have extracted the delegation info as MsgExtension var nsDelegated string for _, ext := range msg.Extensions { if delegation, ok := ext.(*Delegation); ok { nsDelegated = delegation.Delegated.Namespace } } if nsDelegated != "http://jabber.org/protocol/pubsub" { t.Errorf("Could not find delegated namespace in delegation: %#v\n", msg) } } // Check that we can parse a delegation IQ. // The most important thing is to be able to func TestParsingDelegationIQ(t *testing.T) { packetStr := ` ` var iq IQ data := []byte(packetStr) if err := xml.Unmarshal(data, &iq); err != nil { t.Errorf("Unmarshal(%s) returned error", data) } // Check that we have extracted the delegation info as IQPayload var node string for _, ext := range iq.Payload { if delegation, ok := ext.(*Delegation); ok { packet := delegation.Forwarded.Stanza forwardedIQ, ok := packet.(IQ) if !ok { t.Errorf("Could not extract packet IQ") return } payload := forwardedIQ.Payload if len(payload) > 0 { pl := payload[0] if pubsub, ok := pl.(*PubSub); ok { node = pubsub.Publish.Node } } } } if node != "http://jabber.org/protocol/mood" { t.Errorf("Could not find mood node name on delegated publish: %#v\n", iq) } }