diff --git a/client/comm_test.go b/client/comm_test.go
index 37e9b52..8b6d06a 100644
--- a/client/comm_test.go
+++ b/client/comm_test.go
@@ -66,8 +66,8 @@ func TestDecode(t *testing.T) {
go server.Write([]byte(``))
wgWait.Add(1)
go func() {
- _, err := read(xml.NewDecoder(server))
- assert.NoError(err)
+ _, inlineErr := read(xml.NewDecoder(server))
+ assert.NoError(inlineErr)
wgWait.Done()
}()
@@ -107,8 +107,8 @@ func TestSend(t *testing.T) {
wgWait.Add(1)
go func() {
- err := client.Send(&xmpp.MessageClient{To: xmppbase.NewJID("a@a.de")})
- assert.NoError(err)
+ inlineErr := client.Send(&xmpp.MessageClient{To: xmppbase.NewJID("a@a.de")})
+ assert.NoError(inlineErr)
wgWait.Done()
}()
@@ -120,8 +120,8 @@ func TestSend(t *testing.T) {
wgWait.Add(1)
go func() {
- err := client.Send(&xmpp.IQClient{Type: xmpp.IQTypeGet})
- assert.NoError(err)
+ inlineErr := client.Send(&xmpp.IQClient{Type: xmpp.IQTypeGet})
+ assert.NoError(inlineErr)
wgWait.Done()
}()
@@ -133,8 +133,8 @@ func TestSend(t *testing.T) {
wgWait.Add(1)
go func() {
- err := client.Send(&xmpp.PresenceClient{Type: xmpp.PresenceTypeSubscribe})
- assert.NoError(err)
+ inlineErr := client.Send(&xmpp.PresenceClient{Type: xmpp.PresenceTypeSubscribe})
+ assert.NoError(inlineErr)
wgWait.Done()
}()
diff --git a/client/connect.go b/client/connect.go
index 9fc933d..356811f 100644
--- a/client/connect.go
+++ b/client/connect.go
@@ -33,7 +33,7 @@ func (client *Client) startStream() (*xmpp.StreamFeatures, error) {
return nil, err
}
if element.Name.Space != xmpp.NSStream || element.Name.Local != "stream" {
- return nil, errors.New("is not stream")
+ return nil, errors.New("is no stream")
}
f := &xmpp.StreamFeatures{}
if err := client.ReadDecode(f); err != nil {
diff --git a/client/connect_test.go b/client/connect_test.go
new file mode 100644
index 0000000..5a9e10a
--- /dev/null
+++ b/client/connect_test.go
@@ -0,0 +1,129 @@
+package client
+
+import (
+ "encoding/xml"
+ "fmt"
+ "net"
+ "sync"
+ "testing"
+
+ log "github.com/sirupsen/logrus"
+
+ "github.com/stretchr/testify/assert"
+
+ "dev.sum7.eu/genofire/yaja/xmpp"
+ "dev.sum7.eu/genofire/yaja/xmpp/base"
+)
+
+func TestStartStream(t *testing.T) {
+ assert := assert.New(t)
+
+ server, clientConn := net.Pipe()
+ client := &Client{
+ JID: xmppbase.NewJID("a@example.com"),
+ Logging: log.WithField("test", "startStream"),
+ }
+ client.setConnection(clientConn)
+ wgWait := &sync.WaitGroup{}
+
+ // complete connection
+ wgWait.Add(1)
+ go func() {
+ decoder := xml.NewDecoder(server)
+ elm, inlineErr := read(decoder)
+ assert.NoError(inlineErr)
+ assert.Equal("http://etherx.jabber.org/streams", elm.Name.Space)
+
+ _, inlineErr = fmt.Fprintf(server, "\n"+
+ "\n",
+ "example.com", xmpp.NSClient, xmpp.NSStream)
+ assert.NoError(inlineErr)
+
+ _, inlineErr = server.Write([]byte(`
+
+
+
+
+ PLAIN
+ notworking
+
+
+ `))
+ assert.NoError(inlineErr)
+ wgWait.Done()
+ }()
+
+ _, err := client.startStream()
+ wgWait.Wait()
+ assert.NoError(err)
+
+ // no features first rechieve
+ wgWait.Add(1)
+ go func() {
+ decoder := xml.NewDecoder(server)
+ elm, inlineErr := read(decoder)
+ assert.NoError(inlineErr)
+ assert.Equal("http://etherx.jabber.org/streams", elm.Name.Space)
+
+ _, inlineErr = fmt.Fprintf(server, "\n"+
+ "\n",
+ "example.com", xmpp.NSClient, xmpp.NSStream)
+ assert.NoError(inlineErr)
+
+ _, inlineErr = server.Write([]byte(`
+
+ `))
+ assert.NoError(inlineErr)
+ wgWait.Done()
+ }()
+
+ _, err = client.startStream()
+ wgWait.Wait()
+ assert.Error(err)
+ assert.Contains(err.Error(), "")
+
+ // no stream receive
+ wgWait.Add(1)
+ go func() {
+ decoder := xml.NewDecoder(server)
+ elm, inlineErr := read(decoder)
+ assert.NoError(inlineErr)
+ assert.Equal("http://etherx.jabber.org/streams", elm.Name.Space)
+
+ _, inlineErr = fmt.Fprintf(server, "")
+ assert.NoError(inlineErr)
+
+ wgWait.Done()
+ }()
+
+ _, err = client.startStream()
+ wgWait.Wait()
+ assert.Error(err)
+ assert.Contains(err.Error(), "is no stream")
+
+ // client disconnect after stream start
+ wgWait.Add(1)
+ go func() {
+ decoder := xml.NewDecoder(server)
+ elm, inlineErr := read(decoder)
+ assert.NoError(inlineErr)
+ assert.Equal("http://etherx.jabber.org/streams", elm.Name.Space)
+
+ client.Close()
+
+ wgWait.Done()
+ }()
+
+ _, err = client.startStream()
+ wgWait.Wait()
+ assert.Error(err)
+ assert.Contains(err.Error(), "closed pipe")
+
+ // client disconnect before stream start
+ _, err = client.startStream()
+ wgWait.Wait()
+ assert.Error(err)
+ assert.Contains(err.Error(), "closed pipe")
+}
diff --git a/client/start.go b/client/start.go
index 9362077..16f5a26 100644
--- a/client/start.go
+++ b/client/start.go
@@ -55,7 +55,7 @@ func (client *Client) Start() error {
} else {
if ch, ok := client.reply[iq.ID]; ok {
delete(client.reply, iq.ID)
- //TODO is this usefull?
+ //TODO is this useful?
go func() { ch <- iq }()
continue
}
diff --git a/xmpp/utils_test.go b/xmpp/utils_test.go
index 502047f..7412980 100644
--- a/xmpp/utils_test.go
+++ b/xmpp/utils_test.go
@@ -19,7 +19,7 @@ func TestStartElementToString(t *testing.T) {
Space: "jabber:client",
},
Attr: []xml.Attr{
- xml.Attr{
+ {
Name: xml.Name{
Local: "foo",
},