Skip to content

Commit f1fdf03

Browse files
committed
Add more tests for scoring [#65]
1 parent 2267776 commit f1fdf03

File tree

2 files changed

+69
-10
lines changed

2 files changed

+69
-10
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
"require-dev": {
3030
"contributte/qa": "^0.4",
3131
"contributte/tester": "^0.3",
32-
"contributte/phpstan": "^0.1"
32+
"contributte/phpstan": "^0.1" ,
33+
"mockery/mockery": "^1.6.7"
3334
},
3435
"autoload": {
3536
"psr-4": {

tests/Cases/ReCaptchaProvider.phpt

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ namespace Tests\Cases;
55
use Contributte\ReCaptcha\ReCaptchaProvider;
66
use Contributte\ReCaptcha\ReCaptchaResponse;
77
use Contributte\Tester\Toolkit;
8+
use Mockery;
89
use Nette\Forms\Controls\BaseControl;
10+
use Nette\Utils\Json;
911
use Tester\Assert;
1012

1113
require __DIR__ . '/../bootstrap.php';
@@ -21,26 +23,82 @@ final class ControlMock extends BaseControl
2123
}
2224

2325
Toolkit::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

3435
Toolkit::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
4142
Toolkit::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

Comments
 (0)