5
5
"net/http"
6
6
"net/http/httptest"
7
7
"testing"
8
+ "time"
8
9
9
10
"github.com/johntdyer/slack-go"
10
11
"github.com/sirupsen/logrus"
@@ -137,3 +138,70 @@ func TestFieldSortPriorities(t *testing.T) {
137
138
t .Errorf ("3rd field title not as expected: exp: %q, got: %q" , exp , got )
138
139
}
139
140
}
141
+
142
+ type filterMock struct {
143
+ called int
144
+ rejectNext bool
145
+ }
146
+
147
+ func (f * filterMock ) Filter (e * logrus.Entry ) bool {
148
+ f .called ++
149
+
150
+ if f .rejectNext {
151
+ f .rejectNext = false
152
+ return false
153
+ }
154
+ return true
155
+ }
156
+
157
+ func TestFilters (t * testing.T ) {
158
+ f := NewFixture (t )
159
+ defer f .Cleanup ()
160
+
161
+ mock := filterMock {}
162
+
163
+ logger := logrus .New ()
164
+ logger .AddHook (& SlackrusHook {
165
+ HookURL : f .URL (),
166
+ Channel : "#slack-testing" ,
167
+ Filters : []Filter {
168
+ mock .Filter ,
169
+ },
170
+ })
171
+
172
+ logger .Info ("hi there" )
173
+ <- f .MsgRcvd
174
+
175
+ if exp , got := 1 , len (f .Messages ); exp != got {
176
+ t .Fatalf ("received unexpected number of messages: exp: %d, got: %d" , exp , got )
177
+ }
178
+ if mock .called != 1 {
179
+ t .Fatalf ("filter should have been called" )
180
+ }
181
+
182
+ logger .Info ("hi there" )
183
+ <- f .MsgRcvd
184
+
185
+ if exp , got := 2 , len (f .Messages ); exp != got {
186
+ t .Fatalf ("received unexpected number of messages: exp: %d, got: %d" , exp , got )
187
+ }
188
+ if mock .called != 2 {
189
+ t .Fatalf ("filter should have been called" )
190
+ }
191
+
192
+ // set the mock to reject the next
193
+ mock .rejectNext = true
194
+
195
+ logger .Info ("hi there" )
196
+
197
+ select {
198
+ case <- f .MsgRcvd :
199
+ t .Fatalf ("did not expect a message to be send" )
200
+ case <- time .After (10 * time .Millisecond ):
201
+ // no message after 10ms, should be fine
202
+ }
203
+
204
+ if exp , got := 2 , len (f .Messages ); exp != got {
205
+ t .Fatalf ("received unexpected number of messages: exp: %d, got: %d" , exp , got )
206
+ }
207
+ }
0 commit comments