forked from mongodb/grip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxmpp_test.go
124 lines (97 loc) · 2.91 KB
/
xmpp_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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package send
import (
"os"
"testing"
"github.com/mongodb/grip/level"
"github.com/mongodb/grip/message"
"github.com/stretchr/testify/suite"
)
type XMPPSuite struct {
info XMPPConnectionInfo
suite.Suite
}
func TestXMPPSuite(t *testing.T) {
suite.Run(t, new(XMPPSuite))
}
func (s *XMPPSuite) SetupSuite() {}
func (s *XMPPSuite) SetupTest() {
s.info = XMPPConnectionInfo{
client: &xmppClientMock{},
}
}
func (s *XMPPSuite) TestEnvironmentVariableReader() {
hostVal := "hostName"
userVal := "userName"
passVal := "passName"
defer os.Setenv(xmppHostEnvVar, os.Getenv(xmppHostEnvVar))
defer os.Setenv(xmppUsernameEnvVar, os.Getenv(xmppUsernameEnvVar))
defer os.Setenv(xmppPasswordEnvVar, os.Getenv(xmppPasswordEnvVar))
s.NoError(os.Setenv(xmppHostEnvVar, hostVal))
s.NoError(os.Setenv(xmppUsernameEnvVar, userVal))
s.NoError(os.Setenv(xmppPasswordEnvVar, passVal))
info := GetXMPPConnectionInfo()
s.Equal(hostVal, info.Hostname)
s.Equal(userVal, info.Username)
s.Equal(passVal, info.Password)
}
func (s *XMPPSuite) TestNewConstructor() {
sender, err := NewXMPPLogger("name", "target", s.info, LevelInfo{level.Debug, level.Info})
s.NoError(err)
s.NotNil(sender)
}
func (s *XMPPSuite) TestNewConstructorFailsWhenClientCreateFails() {
s.info.client = &xmppClientMock{failCreate: true}
sender, err := NewXMPPLogger("name", "target", s.info, LevelInfo{level.Debug, level.Info})
s.Error(err)
s.Nil(sender)
}
func (s *XMPPSuite) TestCloseMethod() {
sender, err := NewXMPPLogger("name", "target", s.info, LevelInfo{level.Debug, level.Info})
s.NoError(err)
s.NotNil(sender)
mock, ok := s.info.client.(*xmppClientMock)
s.True(ok)
s.Equal(0, mock.numCloses)
s.NoError(sender.Close())
s.Equal(1, mock.numCloses)
}
func (s *XMPPSuite) TestAutoConstructorErrorsWithoutValidEnvVar() {
sender, err := MakeXMPP("target")
s.Error(err)
s.Nil(sender)
sender, err = NewXMPP("target", "name", LevelInfo{level.Debug, level.Info})
s.Error(err)
s.Nil(sender)
}
func (s *XMPPSuite) TestSendMethod() {
sender, err := NewXMPPLogger("name", "target", s.info, LevelInfo{level.Debug, level.Info})
s.NoError(err)
s.NotNil(sender)
mock, ok := s.info.client.(*xmppClientMock)
s.True(ok)
s.Equal(mock.numSent, 0)
m := message.NewDefaultMessage(level.Debug, "hello")
sender.Send(m)
s.Equal(mock.numSent, 0)
m = message.NewDefaultMessage(level.Alert, "")
sender.Send(m)
s.Equal(mock.numSent, 0)
m = message.NewDefaultMessage(level.Alert, "world")
sender.Send(m)
s.Equal(mock.numSent, 1)
}
func (s *XMPPSuite) TestSendMethodWithError() {
sender, err := NewXMPPLogger("name", "target", s.info, LevelInfo{level.Debug, level.Info})
s.NoError(err)
s.NotNil(sender)
mock, ok := s.info.client.(*xmppClientMock)
s.True(ok)
s.Equal(mock.numSent, 0)
s.False(mock.failSend)
m := message.NewDefaultMessage(level.Alert, "world")
sender.Send(m)
s.Equal(mock.numSent, 1)
mock.failSend = true
sender.Send(m)
s.Equal(mock.numSent, 1)
}