Skip to content

Commit 82c040f

Browse files
committed
Increase code coverage to 58% for message.go
1 parent 7b6b0d7 commit 82c040f

File tree

1 file changed

+104
-3
lines changed

1 file changed

+104
-3
lines changed

message_test.go

Lines changed: 104 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,54 @@ func reader(s string) *bufio.Reader {
1111
return bufio.NewReader(strings.NewReader(s))
1212
}
1313

14-
func TestNewMessage(t *testing.T) {
14+
func init () {
1515
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
1744
Content-Type: text/event-json
1845
1946
{"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"}`
2047

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) {
2162
buf := reader(HeartbeatMessage)
2263
fsMsg, err := NewMessage(buf, true)
2364

@@ -26,6 +67,66 @@ Content-Type: text/event-json
2667
}
2768

2869
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")
30131
}
31132
}

0 commit comments

Comments
 (0)