diff --git a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php index 6d03629207d5..1f60e150061f 100644 --- a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php @@ -493,7 +493,7 @@ public function validateBoolean($attribute, $value, $parameters) { $acceptable = [true, false, 0, 1, '0', '1']; - if (($parameters[0] ?? null) === 'strict') { + if (isset($parameters[0]) && strtolower($parameters[0]) === 'strict') { $acceptable = [true, false]; } diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index f5c76189b153..a556c96035ab 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -3154,6 +3154,44 @@ public function testValidateBooleanStrict() $this->assertFalse($v->passes()); } + public function testValidateBooleanStrictWithUpperCase() + { + $trans = $this->getIlluminateArrayTranslator(); + + $v = new Validator($trans, ['foo' => false], ['foo' => 'Boolean:STRICT']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['foo' => true], ['foo' => 'Boolean:STRICT']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['foo' => 'no'], ['foo' => 'Boolean:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 'yes'], ['foo' => 'Boolean:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 'false'], ['foo' => 'Boolean:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 'true'], ['foo' => 'Boolean:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, [], ['foo' => 'Boolean:STRICT']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['foo' => '1'], ['foo' => 'Boolean:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 1], ['foo' => 'Boolean:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => '0'], ['foo' => 'Boolean:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 0], ['foo' => 'Boolean:STRICT']); + $this->assertFalse($v->passes()); + } + public function testValidateBool() { $trans = $this->getIlluminateArrayTranslator(); @@ -3229,6 +3267,44 @@ public function testValidateBoolStrict() $this->assertFalse($v->passes()); } + public function testValidateBoolStrictWithUpperCase() + { + $trans = $this->getIlluminateArrayTranslator(); + + $v = new Validator($trans, ['foo' => false], ['foo' => 'Bool:STRICT']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['foo' => true], ['foo' => 'Bool:STRICT']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['foo' => 'no'], ['foo' => 'Bool:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 'yes'], ['foo' => 'Bool']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 'false'], ['foo' => 'Bool:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 'true'], ['foo' => 'Bool:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, [], ['foo' => 'Bool:STRICT']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['foo' => '1'], ['foo' => 'Bool:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 1], ['foo' => 'Bool:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => '0'], ['foo' => 'Bool:STRICT']); + $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['foo' => 0], ['foo' => 'Bool:STRICT']); + $this->assertFalse($v->passes()); + } + public function testValidateNumeric() { $trans = $this->getIlluminateArrayTranslator();