|
11 | 11 | ->toBe('https://www.google.com/recaptcha/api.js?render=test-site-key'); |
12 | 12 | }); |
13 | 13 |
|
14 | | -it('returns true when recaptcha is enabled with valid keys', function () { |
15 | | - config()->set('google-recaptcha-v3.enabled', true); |
| 14 | +it('handles enabled config values correctly', function (mixed $value, bool $expected) { |
| 15 | + config()->set('google-recaptcha-v3.enabled', $value); |
16 | 16 | config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
17 | 17 | config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
18 | 18 |
|
19 | | - expect(Config::isEnabled())->toBeTrue(); |
20 | | -}); |
21 | | - |
22 | | -it('returns false when recaptcha is explicitly disabled', function () { |
23 | | - config()->set('google-recaptcha-v3.enabled', false); |
24 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
25 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
26 | | - |
27 | | - expect(Config::isEnabled())->toBeFalse(); |
28 | | -}); |
29 | | - |
30 | | -it('returns false when enabled is null', function () { |
31 | | - config()->set('google-recaptcha-v3.enabled', null); |
32 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
33 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
34 | | - |
35 | | - expect(Config::isEnabled())->toBeFalse(); |
36 | | -}); |
37 | | - |
38 | | -it('returns false when site key is missing', function () { |
39 | | - config()->set('google-recaptcha-v3.enabled', true); |
40 | | - config()->set('google-recaptcha-v3.site_key', null); |
41 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
42 | | - |
43 | | - expect(Config::isEnabled())->toBeFalse(); |
44 | | -}); |
45 | | - |
46 | | -it('returns false when site key is empty string', function () { |
| 19 | + expect(Config::isEnabled())->toBe($expected); |
| 20 | +})->with([ |
| 21 | + 'boolean true' => [true, true], |
| 22 | + 'boolean false' => [false, false], |
| 23 | + 'string true' => ['true', true], |
| 24 | + 'string false' => ['false', false], |
| 25 | + 'string 1' => ['1', true], |
| 26 | + 'string 0' => ['0', false], |
| 27 | + 'integer 1' => [1, true], |
| 28 | + 'integer 0' => [0, false], |
| 29 | + 'null' => [null, false], |
| 30 | + 'empty string' => ['', false], |
| 31 | +]); |
| 32 | + |
| 33 | +it('returns false when site key is missing', function (?string $siteKey) { |
47 | 34 | config()->set('google-recaptcha-v3.enabled', true); |
48 | | - config()->set('google-recaptcha-v3.site_key', ''); |
| 35 | + config()->set('google-recaptcha-v3.site_key', $siteKey); |
49 | 36 | config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
50 | 37 |
|
51 | 38 | expect(Config::isEnabled())->toBeFalse(); |
52 | | -}); |
| 39 | +})->with([ |
| 40 | + 'null' => [null], |
| 41 | + 'empty string' => [''], |
| 42 | +]); |
53 | 43 |
|
54 | | -it('returns false when secret key is missing', function () { |
| 44 | +it('returns false when secret key is missing', function (?string $secretKey) { |
55 | 45 | config()->set('google-recaptcha-v3.enabled', true); |
56 | 46 | config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
57 | | - config()->set('google-recaptcha-v3.secret_key', null); |
| 47 | + config()->set('google-recaptcha-v3.secret_key', $secretKey); |
58 | 48 |
|
59 | 49 | expect(Config::isEnabled())->toBeFalse(); |
60 | | -}); |
61 | | - |
62 | | -it('returns false when secret key is empty string', function () { |
63 | | - config()->set('google-recaptcha-v3.enabled', true); |
64 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
65 | | - config()->set('google-recaptcha-v3.secret_key', ''); |
66 | | - |
67 | | - expect(Config::isEnabled())->toBeFalse(); |
68 | | -}); |
| 50 | +})->with([ |
| 51 | + 'null' => [null], |
| 52 | + 'empty string' => [''], |
| 53 | +]); |
69 | 54 |
|
70 | 55 | it('returns site key when configured', function () { |
71 | 56 | config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
72 | 57 |
|
73 | 58 | expect(Config::getSiteKey())->toBe('test-site-key'); |
74 | 59 | }); |
75 | 60 |
|
76 | | -it('returns null when site key is not configured', function () { |
77 | | - config()->set('google-recaptcha-v3.site_key', null); |
| 61 | +it('returns null when site key is blank', function (?string $value) { |
| 62 | + config()->set('google-recaptcha-v3.site_key', $value); |
78 | 63 |
|
79 | 64 | expect(Config::getSiteKey())->toBeNull(); |
80 | | -}); |
81 | | - |
82 | | -it('returns null when site key is empty string', function () { |
83 | | - config()->set('google-recaptcha-v3.site_key', ''); |
84 | | - |
85 | | - expect(Config::getSiteKey())->toBeNull(); |
86 | | -}); |
| 65 | +})->with([ |
| 66 | + 'null' => [null], |
| 67 | + 'empty string' => [''], |
| 68 | +]); |
87 | 69 |
|
88 | 70 | it('returns secret key when configured', function () { |
89 | 71 | config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
90 | 72 |
|
91 | 73 | expect(Config::getSecretKey())->toBe('test-secret-key'); |
92 | 74 | }); |
93 | 75 |
|
94 | | -it('returns null when secret key is not configured', function () { |
95 | | - config()->set('google-recaptcha-v3.secret_key', null); |
96 | | - |
97 | | - expect(Config::getSecretKey())->toBeNull(); |
98 | | -}); |
99 | | - |
100 | | -it('returns null when secret key is empty string', function () { |
101 | | - config()->set('google-recaptcha-v3.secret_key', ''); |
| 76 | +it('returns null when secret key is blank', function (?string $value) { |
| 77 | + config()->set('google-recaptcha-v3.secret_key', $value); |
102 | 78 |
|
103 | 79 | expect(Config::getSecretKey())->toBeNull(); |
104 | | -}); |
105 | | - |
106 | | -it('returns score threshold from config', function () { |
107 | | - config()->set('google-recaptcha-v3.score_threshold', 0.7); |
108 | | - |
109 | | - expect(Config::getScoreThreshold())->toBe(0.7); |
110 | | -}); |
111 | | - |
112 | | -it('returns default score threshold when not configured', function () { |
113 | | - config()->set('google-recaptcha-v3.score_threshold', null); |
114 | | - |
115 | | - expect(Config::getScoreThreshold())->toBe(0.5); |
116 | | -}); |
117 | | - |
118 | | -it('returns default score threshold when empty string', function () { |
119 | | - config()->set('google-recaptcha-v3.score_threshold', ''); |
120 | | - |
121 | | - expect(Config::getScoreThreshold())->toBe(0.5); |
122 | | -}); |
123 | | - |
124 | | -it('converts string score threshold to float', function () { |
125 | | - config()->set('google-recaptcha-v3.score_threshold', '0.8'); |
126 | | - |
127 | | - expect(Config::getScoreThreshold())->toBe(0.8); |
128 | | -}); |
129 | | - |
130 | | -it('returns score threshold of 1.0', function () { |
131 | | - config()->set('google-recaptcha-v3.score_threshold', 1.0); |
132 | | - |
133 | | - expect(Config::getScoreThreshold())->toBe(1.0); |
134 | | -}); |
135 | | - |
136 | | -it('returns score threshold of 0.0', function () { |
137 | | - config()->set('google-recaptcha-v3.score_threshold', 0.0); |
138 | | - |
139 | | - expect(Config::getScoreThreshold())->toBe(0.0); |
140 | | -}); |
141 | | - |
142 | | -it('handles enabled config as string value', function () { |
143 | | - config()->set('google-recaptcha-v3.enabled', '1'); |
144 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
145 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
146 | | - |
147 | | - expect(Config::isEnabled())->toBeTrue(); |
148 | | -}); |
149 | | - |
150 | | -it('handles enabled config as empty string', function () { |
151 | | - config()->set('google-recaptcha-v3.enabled', ''); |
152 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
153 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
154 | | - |
155 | | - expect(Config::isEnabled())->toBeFalse(); |
156 | | -}); |
157 | | - |
158 | | -it('handles enabled config as integer 1', function () { |
159 | | - config()->set('google-recaptcha-v3.enabled', 1); |
160 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
161 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
162 | | - |
163 | | - expect(Config::isEnabled())->toBeTrue(); |
164 | | -}); |
165 | | - |
166 | | -it('handles enabled config as integer 0', function () { |
167 | | - config()->set('google-recaptcha-v3.enabled', 0); |
168 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
169 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
170 | | - |
171 | | - expect(Config::isEnabled())->toBeFalse(); |
172 | | -}); |
173 | | - |
174 | | -it('handles enabled config as boolean true', function () { |
175 | | - config()->set('google-recaptcha-v3.enabled', true); |
176 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
177 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
178 | | - |
179 | | - expect(Config::isEnabled())->toBeTrue(); |
180 | | -}); |
181 | | - |
182 | | -it('handles enabled config as boolean false', function () { |
183 | | - config()->set('google-recaptcha-v3.enabled', false); |
184 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
185 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
186 | | - |
187 | | - expect(Config::isEnabled())->toBeFalse(); |
188 | | -}); |
189 | | - |
190 | | -it('handles enabled config as string true', function () { |
191 | | - config()->set('google-recaptcha-v3.enabled', 'true'); |
192 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
193 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
194 | | - |
195 | | - expect(Config::isEnabled())->toBeTrue(); |
196 | | -}); |
197 | | - |
198 | | -it('handles enabled config as string false', function () { |
199 | | - config()->set('google-recaptcha-v3.enabled', 'false'); |
200 | | - config()->set('google-recaptcha-v3.site_key', 'test-site-key'); |
201 | | - config()->set('google-recaptcha-v3.secret_key', 'test-secret-key'); |
202 | | - |
203 | | - expect(Config::isEnabled())->toBeFalse(); |
204 | | -}); |
| 80 | +})->with([ |
| 81 | + 'null' => [null], |
| 82 | + 'empty string' => [''], |
| 83 | +]); |
| 84 | + |
| 85 | +it('returns score threshold correctly', function (mixed $value, float $expected) { |
| 86 | + config()->set('google-recaptcha-v3.score_threshold', $value); |
| 87 | + |
| 88 | + expect(Config::getScoreThreshold())->toBe($expected); |
| 89 | +})->with([ |
| 90 | + 'float 0.7' => [0.7, 0.7], |
| 91 | + 'float 1.0' => [1.0, 1.0], |
| 92 | + 'float 0.0' => [0.0, 0.0], |
| 93 | + 'string 0.8' => ['0.8', 0.8], |
| 94 | + 'null defaults to 0.5' => [null, 0.5], |
| 95 | + 'empty string defaults to 0.5' => ['', 0.5], |
| 96 | +]); |
0 commit comments