Skip to content

Commit 46c4d9b

Browse files
committed
Merge branch 'master' into 3.1-merge
# Conflicts: # src/nacos/src/GrpcClient.php
2 parents f7e6e8c + c1aa358 commit 46c4d9b

File tree

2 files changed

+120
-2
lines changed

2 files changed

+120
-2
lines changed

src/Concerns/ValidatesAttributes.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,14 @@ public function validateBetween(string $attribute, $value, array $parameters): b
201201
*
202202
* @param mixed $value
203203
*/
204-
public function validateBoolean(string $attribute, $value): bool
204+
public function validateBoolean(string $attribute, $value, array $parameters = []): bool
205205
{
206206
$acceptable = [true, false, 0, 1, '0', '1'];
207207

208+
if (isset($parameters[0]) && strtolower($parameters[0]) == 'strict') {
209+
$acceptable = [true, false];
210+
}
211+
208212
return in_array($value, $acceptable, true);
209213
}
210214

@@ -681,8 +685,12 @@ public function validateInArray(string $attribute, $value, array $parameters): b
681685
*
682686
* @param mixed $value
683687
*/
684-
public function validateInteger(string $attribute, $value): bool
688+
public function validateInteger(string $attribute, $value, array $parameters = []): bool
685689
{
690+
if (isset($parameters[0]) && strtolower($parameters[0]) == 'strict' && gettype($value) != 'integer') {
691+
return false;
692+
}
693+
686694
return filter_var($value, FILTER_VALIDATE_INT) !== false;
687695
}
688696

tests/Cases/ValidationValidatorTest.php

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,6 +1471,116 @@ public function testValidateInt()
14711471
$this->assertTrue($v->passes());
14721472
}
14731473

1474+
public function testValidateIntStrict()
1475+
{
1476+
$translator = $this->getIlluminateArrayTranslator();
1477+
1478+
$validator = new Validator($translator, ['foo' => '1'], ['foo' => 'Int:strict']);
1479+
$this->assertFalse($validator->passes());
1480+
1481+
$validator = new Validator($translator, ['foo' => '-1'], ['foo' => 'Int:strict']);
1482+
$this->assertFalse($validator->passes());
1483+
1484+
$validator = new Validator($translator, ['foo' => '1.23'], ['foo' => 'Int:strict']);
1485+
$this->assertFalse($validator->passes());
1486+
1487+
$validator = new Validator($translator, ['foo' => 1.23], ['foo' => 'Int:strict']);
1488+
$this->assertFalse($validator->passes());
1489+
}
1490+
1491+
public function testValidateIntegerStrict()
1492+
{
1493+
$translator = $this->getIlluminateArrayTranslator();
1494+
1495+
$validator = new Validator($translator, ['foo' => '1'], ['foo' => 'Integer:strict']);
1496+
$this->assertFalse($validator->passes());
1497+
1498+
$validator = new Validator($translator, ['foo' => '-1'], ['foo' => 'Integer:strict']);
1499+
$this->assertFalse($validator->passes());
1500+
1501+
$validator = new Validator($translator, ['foo' => '1.23'], ['foo' => 'Integer:strict']);
1502+
$this->assertFalse($validator->passes());
1503+
1504+
$validator = new Validator($translator, ['foo' => 1.23], ['foo' => 'Integer:strict']);
1505+
$this->assertFalse($validator->passes());
1506+
}
1507+
1508+
public function testValidateBoolStrict()
1509+
{
1510+
$translator = $this->getIlluminateArrayTranslator();
1511+
1512+
$validator = new Validator($translator, ['foo' => 'no'], ['foo' => 'Bool:strict']);
1513+
$this->assertFalse($validator->passes());
1514+
1515+
$validator = new Validator($translator, ['foo' => 'yes'], ['foo' => 'Bool:strict']);
1516+
$this->assertFalse($validator->passes());
1517+
1518+
$validator = new Validator($translator, ['foo' => 'false'], ['foo' => 'Bool:strict']);
1519+
$this->assertFalse($validator->passes());
1520+
1521+
$validator = new Validator($translator, ['foo' => 'true'], ['foo' => 'Bool:strict']);
1522+
$this->assertFalse($validator->passes());
1523+
1524+
$validator = new Validator($translator, [], ['foo' => 'Bool:strict']);
1525+
$this->assertTrue($validator->passes());
1526+
1527+
$validator = new Validator($translator, ['foo' => false], ['foo' => 'Bool:strict']);
1528+
$this->assertTrue($validator->passes());
1529+
1530+
$validator = new Validator($translator, ['foo' => true], ['foo' => 'Bool:strict']);
1531+
$this->assertTrue($validator->passes());
1532+
1533+
$validator = new Validator($translator, ['foo' => '1'], ['foo' => 'Bool:strict']);
1534+
$this->assertFalse($validator->passes());
1535+
1536+
$validator = new Validator($translator, ['foo' => 1], ['foo' => 'Bool:strict']);
1537+
$this->assertFalse($validator->passes());
1538+
1539+
$validator = new Validator($translator, ['foo' => '0'], ['foo' => 'Bool:strict']);
1540+
$this->assertFalse($validator->passes());
1541+
1542+
$validator = new Validator($translator, ['foo' => 0], ['foo' => 'Bool:strict']);
1543+
$this->assertFalse($validator->passes());
1544+
}
1545+
1546+
public function testValidateBooleanStrict()
1547+
{
1548+
$translator = $this->getIlluminateArrayTranslator();
1549+
1550+
$validator = new Validator($translator, ['foo' => 'no'], ['foo' => 'Boolean:strict']);
1551+
$this->assertFalse($validator->passes());
1552+
1553+
$validator = new Validator($translator, ['foo' => 'yes'], ['foo' => 'Boolean:strict']);
1554+
$this->assertFalse($validator->passes());
1555+
1556+
$validator = new Validator($translator, ['foo' => 'false'], ['foo' => 'Boolean:strict']);
1557+
$this->assertFalse($validator->passes());
1558+
1559+
$validator = new Validator($translator, ['foo' => 'true'], ['foo' => 'Boolean:strict']);
1560+
$this->assertFalse($validator->passes());
1561+
1562+
$validator = new Validator($translator, [], ['foo' => 'Boolean:strict']);
1563+
$this->assertTrue($validator->passes());
1564+
1565+
$validator = new Validator($translator, ['foo' => false], ['foo' => 'Boolean:strict']);
1566+
$this->assertTrue($validator->passes());
1567+
1568+
$validator = new Validator($translator, ['foo' => true], ['foo' => 'Boolean:strict']);
1569+
$this->assertTrue($validator->passes());
1570+
1571+
$validator = new Validator($translator, ['foo' => '1'], ['foo' => 'Boolean:strict']);
1572+
$this->assertFalse($validator->passes());
1573+
1574+
$validator = new Validator($translator, ['foo' => 1], ['foo' => 'Boolean:strict']);
1575+
$this->assertFalse($validator->passes());
1576+
1577+
$validator = new Validator($translator, ['foo' => '0'], ['foo' => 'Boolean:strict']);
1578+
$this->assertFalse($validator->passes());
1579+
1580+
$validator = new Validator($translator, ['foo' => 0], ['foo' => 'Boolean:strict']);
1581+
$this->assertFalse($validator->passes());
1582+
}
1583+
14741584
public function testValidateDigits()
14751585
{
14761586
$trans = $this->getIlluminateArrayTranslator();

0 commit comments

Comments
 (0)