1
+ package socketio
2
+
3
+ import (
4
+ "testing"
5
+
6
+ . "github.com/smartystreets/goconvey/convey"
7
+ "net/http"
8
+ "io"
9
+ "github.com/googollee/go-engine.io"
10
+ )
11
+
12
+ type FakeBroadcastAdaptor struct {}
13
+
14
+ func (f * FakeBroadcastAdaptor ) Join (room string , socket Socket ) error {
15
+ return nil
16
+ }
17
+
18
+ func (f * FakeBroadcastAdaptor ) Leave (room string , socket Socket ) error {
19
+ return nil
20
+ }
21
+
22
+ func (f * FakeBroadcastAdaptor ) Send (ignore Socket , room , event string , args ... interface {}) error {
23
+ return nil
24
+ }
25
+
26
+ type FakeReadCloser struct {}
27
+
28
+ func (fr * FakeReadCloser ) Read (p []byte ) (n int , err error ) {
29
+ p = append (p , byte (128 ))
30
+ return 1 , nil
31
+ }
32
+
33
+ func (fr * FakeReadCloser ) Close () error {
34
+ return nil
35
+ }
36
+
37
+ type FakeWriteCloser struct {}
38
+
39
+ func (fr * FakeWriteCloser ) Write (p []byte ) (n int , err error ) {
40
+ return len (p ), nil
41
+ }
42
+
43
+ func (fr * FakeWriteCloser ) Close () error {
44
+ return nil
45
+ }
46
+
47
+ type FakeSockConnection struct {}
48
+
49
+ func (f * FakeSockConnection ) Id () string {
50
+ return "test1"
51
+ }
52
+
53
+ func (f * FakeSockConnection ) Request () * http.Request {
54
+ return & http.Request {}
55
+ }
56
+
57
+ func (f * FakeSockConnection ) Close () error {
58
+ return nil
59
+ }
60
+
61
+ func (f * FakeSockConnection ) NextReader () (engineio.MessageType , io.ReadCloser , error ) {
62
+ return engineio .MessageText , & FakeReadCloser {}, nil
63
+ }
64
+
65
+ func (f * FakeSockConnection ) NextWriter (messageType engineio.MessageType ) (io.WriteCloser , error ) {
66
+ return & FakeWriteCloser {}, nil
67
+ }
68
+
69
+
70
+ func TestHandler (t * testing.T ) {
71
+ //BugFix missed
72
+ //Method: handler.onPacket
73
+ //Reason: missed fallthrough after case _ACK:
74
+ //
75
+ // case _ACK:
76
+ // fallthrough <---- fixed problem
77
+ //
78
+ Convey ("Call ACK handler by ACK id received from client" , t , func () {
79
+ saver := & FrameSaver {}
80
+ var handlerCalled bool
81
+ baseHandlerInstance := newBaseHandler ("some:event" , & FakeBroadcastAdaptor {})
82
+ socketInstance := newSocket (& FakeSockConnection {}, baseHandlerInstance )
83
+ c , _ := newCaller (func () {handlerCalled = true })
84
+
85
+ socketInstance .acks [0 ] = c
86
+ socketInstance .onPacket (newDecoder (saver ), & packet {Type :_ACK , Id :0 , Data :"[]" , NSP :"/" })
87
+
88
+ So (len (socketInstance .acks ), ShouldEqual , 0 )
89
+ So (handlerCalled , ShouldBeTrue )
90
+ })
91
+
92
+ Convey ("Call BINARY ACK handler by BINARY ACK id received from client" , t , func () {
93
+ saver := & FrameSaver {}
94
+ var handlerCalled bool
95
+ baseHandlerInstance := newBaseHandler ("some:event" , & FakeBroadcastAdaptor {})
96
+ socketInstance := newSocket (& FakeSockConnection {}, baseHandlerInstance )
97
+ c , _ := newCaller (func () {handlerCalled = true })
98
+
99
+ socketInstance .acks [0 ] = c
100
+ socketInstance .onPacket (newDecoder (saver ), & packet {Type :_BINARY_ACK , Id :0 , Data :"[]" , NSP :"/" })
101
+
102
+ So (len (socketInstance .acks ), ShouldEqual , 0 )
103
+ So (handlerCalled , ShouldBeTrue )
104
+ })
105
+ }
0 commit comments