@@ -5,7 +5,9 @@ namespace Tests\Cases;
55use Contributte \ReCaptcha \ReCaptchaProvider ;
66use Contributte \ReCaptcha \ReCaptchaResponse ;
77use Contributte \Tester \Toolkit ;
8+ use Mockery ;
89use Nette \Forms \Controls \BaseControl ;
10+ use Nette \Utils \Json ;
911use Tester \Assert ;
1012
1113require __DIR__ . '/../bootstrap.php ' ;
@@ -21,26 +23,82 @@ final class ControlMock extends BaseControl
2123}
2224
2325Toolkit::test (function (): void {
24- $ key = 'key ' ;
25- $ validator = new ReCaptchaProvider ($ key , 'secret ' );
26+ $ provider = new ReCaptchaProvider ('key ' , 'secret ' );
2627
27- $ response = $ validator ->validate ('test ' );
28+ $ response = $ provider ->validate ('test ' );
2829 Assert::type (ReCaptchaResponse::class, $ response );
2930
3031 Assert::false ($ response ->isSuccess ());
3132 Assert::notEqual (null , $ response ->getError ());
3233});
3334
3435Toolkit::test (function (): void {
35- $ key = 'key ' ;
36- $ validator = new ReCaptchaProvider ($ key , 'secret ' );
36+ $ provider = new ReCaptchaProvider ('key ' , 'secret ' );
3737
38- Assert::false ($ validator ->validateControl (new ControlMock ()));
38+ Assert::false ($ provider ->validateControl (new ControlMock ()));
3939});
4040
41+ // makeRequest returns null
4142Toolkit::test (function (): void {
42- $ key = 'key ' ;
43- $ validator = new ReCaptchaProvider ($ key , 'secret ' );
43+ $ provider = Mockery::mock (ReCaptchaProvider::class)
44+ ->shouldAllowMockingProtectedMethods ()
45+ ->makePartial ();
4446
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 ());
46104});
0 commit comments