diff --git a/xmpp_test.go b/xmpp_test.go new file mode 100644 index 0000000..a1a56f6 --- /dev/null +++ b/xmpp_test.go @@ -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(` + + + {"random": "text"} + + + + + InvalidJson: JSON_PARSING_ERROR : Missing Required Field: message_id\n + + + +`) + +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) + } +}