1+ <?php
2+
3+ use Understand \UnderstandLaravel5 \Logger ;
4+ use Understand \UnderstandLaravel5 \Handlers \CallbackHandler ;
5+ use Understand \UnderstandLaravel5 \UnderstandLaravel5ServiceProvider ;
6+
7+ class LogFilterTest extends Orchestra \Testbench \TestCase
8+ {
9+
10+ /**
11+ * Setup service provider
12+ *
13+ * @param object $app
14+ * @return void
15+ */
16+ protected function getPackageProviders ($ app )
17+ {
18+ return [UnderstandLaravel5ServiceProvider::class];
19+ }
20+
21+ /**
22+ * @return void
23+ */
24+ public function testLogFilterAllowsDelivery ()
25+ {
26+ $ logsSent = 0 ;
27+
28+ $ callback = function () use (&$ logsSent )
29+ {
30+ $ logsSent ++;
31+ };
32+
33+ $ this ->app ['config ' ]->set ('understand-laravel.log_filter ' , function () {
34+ // FALSE, logs should not be filtered
35+ return false ;
36+ });
37+
38+ $ handler = new CallbackHandler ($ callback );
39+ $ this ->app ['understand.logger ' ] = new Logger ($ this ->app ['understand.fieldProvider ' ], $ handler );
40+
41+ // trigger error
42+ $ this ->app ['Psr\Log\LoggerInterface ' ]->error ('test ' );
43+ $ this ->app ['Psr\Log\LoggerInterface ' ]->warning ('test2 ' );
44+
45+ $ this ->assertEquals (2 , $ logsSent );
46+ }
47+
48+ /**
49+ * @return void
50+ */
51+ public function testLogFilterFiltersOneLog ()
52+ {
53+ $ logsSent = 0 ;
54+
55+ $ callback = function () use (&$ logsSent )
56+ {
57+ $ logsSent ++;
58+ };
59+
60+ $ this ->app ['config ' ]->set ('understand-laravel.log_filter ' , function ($ level , $ message , $ context ) {
61+ if ($ message === 'test2 ' ) {
62+ // TRUE, log should be filtered
63+ return true ;
64+ }
65+
66+ // FALSE, logs should not be filtered
67+ return false ;
68+ });
69+
70+ $ handler = new CallbackHandler ($ callback );
71+ $ this ->app ['understand.logger ' ] = new Logger ($ this ->app ['understand.fieldProvider ' ], $ handler );
72+
73+ // trigger error
74+ $ this ->app ['Psr\Log\LoggerInterface ' ]->error ('test ' );
75+ $ this ->app ['Psr\Log\LoggerInterface ' ]->warning ('test2 ' );
76+
77+ $ this ->assertEquals (1 , $ logsSent );
78+ }
79+
80+ /**
81+ * @return void
82+ */
83+ public function testLogFilterReceivesAllData ()
84+ {
85+ $ logsSent = 0 ;
86+
87+ $ callback = function () use (&$ logsSent )
88+ {
89+ $ logsSent ++;
90+ };
91+
92+ $ this ->app ['config ' ]->set ('understand-laravel.log_filter ' , function ($ level , $ message , $ context ) {
93+ $ this ->assertEquals ('error ' , $ level );
94+ $ this ->assertEquals ('test ' , $ message );
95+ $ this ->assertEquals (['context ' => 'value ' ], $ context );
96+
97+ // FALSE, logs should not be filtered
98+ return false ;
99+ });
100+
101+ $ handler = new CallbackHandler ($ callback );
102+ $ this ->app ['understand.logger ' ] = new Logger ($ this ->app ['understand.fieldProvider ' ], $ handler );
103+
104+ // trigger error
105+ $ this ->app ['Psr\Log\LoggerInterface ' ]->error ('test ' , ['context ' => 'value ' ]);
106+
107+ $ this ->assertEquals (1 , $ logsSent );
108+ }
109+ }
0 commit comments