@@ -11,13 +11,54 @@ func reader(s string) *bufio.Reader {
11
11
return bufio .NewReader (strings .NewReader (s ))
12
12
}
13
13
14
- func TestNewMessage ( t * testing. T ) {
14
+ func init ( ) {
15
15
ShouldOutputDebugMessages = false
16
- var HeartbeatMessage = `Content-Length: 921
16
+ }
17
+
18
+ var (
19
+ // https://freeswitch.org/confluence/display/FREESWITCH/Event+List
20
+ ShutdownMessage = `Content-Length: 436
21
+ Content-Type: text/event-plain
22
+
23
+ Event-Info: System Shutting Down
24
+ Event-Name: SHUTDOWN
25
+ Core-UUID: 596ab2fd-14c5-44b5-a02b-93ffb7cd5dd6
26
+ FreeSWITCH-Hostname: ********
27
+ FreeSWITCH-IPv4: ********
28
+ FreeSWITCH-IPv6: 127.0.0.1
29
+ Event-Date-Local: 2008-01-23 13:48:13
30
+ Event-Date-GMT: Wed,%2023%20Jan%202008%2018%3A48%3A13%20GMT
31
+ Event-Date-timestamp: 1201114093012795
32
+ Event-Calling-File: switch_core.c
33
+ Event-Calling-Function: switch_core_destroy
34
+ Event-Calling-Line-Number: 1046
35
+
36
+ EOF
37
+ `
38
+ EchoResponse = `Content-Type: api/response
39
+ Content-Length: 2
40
+
41
+ hi`
42
+
43
+ HeartbeatMessage = `Content-Length: 921
17
44
Content-Type: text/event-json
18
45
19
46
{"Event-Name":"HEARTBEAT","Core-UUID":"3fe1c014-0cd7-4fd8-8cfe-f97560455ddd","FreeSWITCH-Hostname":"freeswitch01","FreeSWITCH-Switchname":"freeswitch01","FreeSWITCH-IPv4":"192.168.0.1","FreeSWITCH-IPv6":"::1","Event-Date-Local":"2020-01-01 12:00:00","Event-Date-GMT":"Mon, 1 Jan 2020 12:00:00 GMT","Event-Date-Timestamp":"1578709922493848","Event-Calling-File":"switch_core.c","Event-Calling-Function":"send_heartbeat","Event-Calling-Line-Number":"74","Event-Sequence":"1759233","Event-Info":"System Ready","Up-Time":"0 years, 46 days, 1 hour, 43 minutes, 0 seconds, 121 milliseconds, 552 microseconds","FreeSWITCH-Version":"1.10~64bit","Uptime-msec":"3980580121","Session-Count":"0","Max-Sessions":"10000","Session-Per-Sec":"500","Session-Per-Sec-Last":"1","Session-Per-Sec-Max":"42","Session-Per-Sec-FiveMin":"1","Session-Since-Startup":"14960","Session-Peak-Max":"42","Session-Peak-FiveMin":"1","Idle-CPU":"96.733333"}`
20
47
48
+ )
49
+
50
+ // https://stackoverflow.com/questions/42035104/how-to-unit-test-go-errors
51
+ func errorContains (out error , want string ) bool {
52
+ if out == nil {
53
+ return want == ""
54
+ }
55
+ if want == "" {
56
+ return false
57
+ }
58
+ return strings .Contains (out .Error (), want )
59
+ }
60
+
61
+ func TestNewMessage (t * testing.T ) {
21
62
buf := reader (HeartbeatMessage )
22
63
fsMsg , err := NewMessage (buf , true )
23
64
@@ -26,6 +67,66 @@ Content-Type: text/event-json
26
67
}
27
68
28
69
if fsMsg .Headers ["FreeSWITCH-IPv4" ] != "192.168.0.1" {
29
- t .Error ("ould not parse FreeSWITCH ip from event" )
70
+ t .Error ("could not parse FreeSWITCH ip from event" )
71
+ }
72
+ }
73
+
74
+ func TestNewMessageMissingMime (t * testing.T ) {
75
+ heartbeatMimeless := strings .Replace (HeartbeatMessage , "Content-Type: text/event-json" , "" , 1 )
76
+ buf := reader (heartbeatMimeless )
77
+ _ , err := NewMessage (buf , true )
78
+
79
+ if err == nil {
80
+ t .Error ("Expected error Parse EOF, got nothing" )
81
+ return
82
+ }
83
+
84
+ if ! errorContains (err , "Parse EOF" ) {
85
+ t .Error (err )
86
+ return
87
+ }
88
+ }
89
+
90
+ func testNewMessageServerShutdown (t * testing.T ) (error , * Message ) {
91
+ buf := reader (ShutdownMessage )
92
+ fsMsg , err := NewMessage (buf , true )
93
+
94
+ return err , fsMsg
95
+ }
96
+
97
+ func TestNewMessageServerShutdown (t * testing.T ) {
98
+ err , fsMsg := testNewMessageServerShutdown (t )
99
+
100
+ if err != nil {
101
+ t .Error (err )
102
+ }
103
+
104
+ fsMsg .Headers ["Content-Type" ] = "text/event-plain"
105
+ }
106
+
107
+ func TestMessage_Dump (t * testing.T ) {
108
+ err , fsMsg := testNewMessageServerShutdown (t )
109
+
110
+ if err != nil {
111
+ t .Error (err )
112
+ }
113
+
114
+ if ! strings .Contains (fsMsg .Dump (), "BODY: Event-Info:" ) {
115
+ t .Error ("freeswitch message dump failed" )
116
+ }
117
+ }
118
+
119
+ func TestMessageParse (t * testing.T ) {
120
+ buf := reader (EchoResponse )
121
+ fsMsg , err := NewMessage (buf , true )
122
+
123
+ if (err != nil ) {
124
+ t .Error (err )
125
+ }
126
+
127
+ body := string (fsMsg .Body )
128
+
129
+ if body != "hi" {
130
+ t .Error ("parsing freeswitch response failed" )
30
131
}
31
132
}
0 commit comments