@@ -5,7 +5,9 @@ namespace Tests\Cases;
5
5
use Contributte \ReCaptcha \ReCaptchaProvider ;
6
6
use Contributte \ReCaptcha \ReCaptchaResponse ;
7
7
use Contributte \Tester \Toolkit ;
8
+ use Mockery ;
8
9
use Nette \Forms \Controls \BaseControl ;
10
+ use Nette \Utils \Json ;
9
11
use Tester \Assert ;
10
12
11
13
require __DIR__ . '/../bootstrap.php ' ;
@@ -21,26 +23,82 @@ final class ControlMock extends BaseControl
21
23
}
22
24
23
25
Toolkit::test (function (): void {
24
- $ key = 'key ' ;
25
- $ validator = new ReCaptchaProvider ($ key , 'secret ' );
26
+ $ provider = new ReCaptchaProvider ('key ' , 'secret ' );
26
27
27
- $ response = $ validator ->validate ('test ' );
28
+ $ response = $ provider ->validate ('test ' );
28
29
Assert::type (ReCaptchaResponse::class, $ response );
29
30
30
31
Assert::false ($ response ->isSuccess ());
31
32
Assert::notEqual (null , $ response ->getError ());
32
33
});
33
34
34
35
Toolkit::test (function (): void {
35
- $ key = 'key ' ;
36
- $ validator = new ReCaptchaProvider ($ key , 'secret ' );
36
+ $ provider = new ReCaptchaProvider ('key ' , 'secret ' );
37
37
38
- Assert::false ($ validator ->validateControl (new ControlMock ()));
38
+ Assert::false ($ provider ->validateControl (new ControlMock ()));
39
39
});
40
40
41
+ // makeRequest returns null
41
42
Toolkit::test (function (): void {
42
- $ key = 'key ' ;
43
- $ validator = new ReCaptchaProvider ($ key , 'secret ' );
43
+ $ provider = Mockery::mock (ReCaptchaProvider::class)
44
+ ->shouldAllowMockingProtectedMethods ()
45
+ ->makePartial ();
44
46
45
- Assert::false ($ validator ->validateControl (new ControlMock ()));
47
+ $ provider ->shouldReceive ('makeRequest ' )
48
+ ->once ()
49
+ ->andReturn (null );
50
+
51
+ Assert::null ($ provider ->validate ('test ' ));
52
+ });
53
+
54
+ // makeRequest returns success false
55
+ Toolkit::test (function (): void {
56
+ $ provider = Mockery::mock (ReCaptchaProvider::class)
57
+ ->shouldAllowMockingProtectedMethods ()
58
+ ->makePartial ();
59
+
60
+ $ provider ->shouldReceive ('makeRequest ' )
61
+ ->once ()
62
+ ->andReturn (Json::encode ([
63
+ 'success ' => false ,
64
+ 'error-codes ' => ['test ' ],
65
+ ]));
66
+
67
+ Assert::false ($ provider ->validate ('test ' )->isSuccess ());
68
+ });
69
+
70
+ // scoring
71
+ Toolkit::test (function (): void {
72
+ $ provider = Mockery::mock (ReCaptchaProvider::class)
73
+ ->shouldAllowMockingProtectedMethods ()
74
+ ->makePartial ();
75
+
76
+ $ provider ->shouldReceive ('makeRequest ' )
77
+ ->once ()
78
+ ->andReturn (Json::encode ([
79
+ 'success ' => true ,
80
+ 'score ' => 0.2 ,
81
+ ]));
82
+
83
+ $ provider ->setMinimalScore (0.5 );
84
+ Assert::false ($ provider ->validate ('test ' )->isSuccess ());
85
+
86
+ $ provider ->setMinimalScore (0.1 );
87
+ Assert::true ($ provider ->validate ('test ' )->isSuccess ());
88
+ });
89
+
90
+ // score is missing
91
+ Toolkit::test (function (): void {
92
+ $ provider = Mockery::mock (ReCaptchaProvider::class)
93
+ ->shouldAllowMockingProtectedMethods ()
94
+ ->makePartial ();
95
+
96
+ $ provider ->shouldReceive ('makeRequest ' )
97
+ ->once ()
98
+ ->andReturn (Json::encode ([
99
+ 'success ' => true ,
100
+ ]));
101
+
102
+ $ provider ->setMinimalScore (0.5 );
103
+ Assert::true ($ provider ->validate ('test ' )->isSuccess ());
46
104
});
0 commit comments