forked from jshiffer/go-xmpp
Add a test for Recv()
This commit is contained in:
parent
02db6f5ed6
commit
f66ee47cd9
90
xmpp_test.go
Normal file
90
xmpp_test.go
Normal file
@ -0,0 +1,90 @@
|
||||
package xmpp
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/xml"
|
||||
"net"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
type localAddr struct{}
|
||||
|
||||
func (a *localAddr) Network() string {
|
||||
return "tcp"
|
||||
}
|
||||
|
||||
func (addr *localAddr) String() string {
|
||||
return "localhost:5222"
|
||||
}
|
||||
|
||||
type testConn struct {
|
||||
*bytes.Buffer
|
||||
}
|
||||
|
||||
func tConnect(s string) net.Conn {
|
||||
var conn testConn
|
||||
conn.Buffer = bytes.NewBufferString(s)
|
||||
return &conn
|
||||
}
|
||||
|
||||
func (*testConn) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (*testConn) LocalAddr() net.Addr {
|
||||
return &localAddr{}
|
||||
}
|
||||
|
||||
func (*testConn) RemoteAddr() net.Addr {
|
||||
return &localAddr{}
|
||||
}
|
||||
|
||||
func (*testConn) SetDeadline(time.Time) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (*testConn) SetReadDeadline(time.Time) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (*testConn) SetWriteDeadline(time.Time) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
var text = strings.TrimSpace(`
|
||||
<message xmlns="jabber:client" id="3" type="error" to="123456789@gcm.googleapis.com/ABC">
|
||||
<gcm xmlns="google:mobile:data">
|
||||
{"random": "text"}
|
||||
</gcm>
|
||||
<error code="400" type="modify">
|
||||
<bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
|
||||
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
|
||||
InvalidJson: JSON_PARSING_ERROR : Missing Required Field: message_id\n
|
||||
</text>
|
||||
</error>
|
||||
</message>
|
||||
`)
|
||||
|
||||
func TestStanzaError(t *testing.T) {
|
||||
var c Client
|
||||
c.conn = tConnect(text)
|
||||
c.p = xml.NewDecoder(c.conn)
|
||||
v, err := c.Recv()
|
||||
if err != nil {
|
||||
t.Fatalf("Recv() = %v", err)
|
||||
}
|
||||
|
||||
chat := Chat{
|
||||
Type: "error",
|
||||
Other: []string{
|
||||
"\n\t\t{\"random\": \"text\"}\n\t",
|
||||
"\n\t\t\n\t\t\n\t",
|
||||
},
|
||||
}
|
||||
if !reflect.DeepEqual(v, chat) {
|
||||
t.Errorf("Recv() = %#v; want %#v", v, chat)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user