-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathsyslog_test.go
103 lines (90 loc) · 2.5 KB
/
syslog_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package main
import (
"bytes"
"fmt"
"testing"
"text/template"
"github.com/stretchr/testify/assert"
)
type TestSyslogPriority struct {
priority SyslogPriority
severity SyslogSeverity
facility SyslogFacility
}
func TestSeverityStringUnknown(t *testing.T) {
sev := SyslogSeverity(254)
assert.Equal(t, "UNKNOWN", sev.String())
}
func TestFacilityStringUnknown(t *testing.T) {
fac := SyslogFacility(254)
assert.Equal(t, "UNKNOWN", fac.String())
}
func TestSeverityString(t *testing.T) {
for sev, val := range severityMap {
assert.Equal(t, val, sev.String())
}
}
func TestFacilityString(t *testing.T) {
for fac, val := range facilityMap {
assert.Equal(t, val, fac.String())
}
}
func TestDecodeSyslogPriority_severity(t *testing.T) {
for _, elem := range testPriorities {
_, severity := SyslogPriority.decode(elem.priority)
assert.Equal(t, severity, elem.severity)
}
}
func TestDecodeSyslogPriority_facility(t *testing.T) {
for _, elem := range testPriorities {
facility, _ := SyslogPriority.decode(elem.priority)
assert.Equal(t, facility, elem.facility)
}
}
// Assert that message is rendered with correct fields order
func Test_syslogMessage_render_order(t *testing.T) {
m := syslogMessage{
Syslogtag: "tag",
Message: "message",
}
buf := bytes.NewBuffer([]byte{})
tpl, _ := template.New("").Parse("{{.Message}} {{.Syslogtag}}")
m.render(tpl, buf)
assert.Equal(t, "message tag", buf.String())
}
// Assert that every exported field is rendered
func Test_syslogMessage_render_field(t *testing.T) {
m := syslogMessage{
Severity: logInfo,
Facility: logAuthpriv,
Hostname: "hostname",
Syslogtag: "tag",
Message: "message",
}
for field, expected := range map[string]string{
"Severity": m.Severity.String(),
"Facility": m.Facility.String(),
"Hostname": m.Hostname,
"Syslogtag": m.Syslogtag,
"Message": m.Message,
} {
buf := bytes.NewBuffer([]byte{})
tpl, _ := template.New("").Parse(fmt.Sprintf("{{.%s}}", field))
m.render(tpl, buf)
assert.Equal(t, expected, buf.String())
}
}
func Test_syslogMessage_render_error(t *testing.T) {
m := syslogMessage{}
buf := bytes.NewBuffer([]byte{})
tpl, _ := template.New("").Parse("{{.UnexportedField}}")
assert.NotNil(t, m.render(tpl, buf))
}
// Assert that buffer is reset before rendering template
func Test_syslogMessage_render_reset(t *testing.T) {
m := syslogMessage{}
buf := bytes.NewBuffer([]byte("should not be rendered"))
tpl, _ := template.New("").Parse("")
m.render(tpl, buf)
assert.Equal(t, "", buf.String())
}