diff --git a/src/Validators/FilterValidator.php b/src/Validators/FilterValidator.php index bcebe40..b0f78a5 100644 --- a/src/Validators/FilterValidator.php +++ b/src/Validators/FilterValidator.php @@ -44,8 +44,22 @@ class FilterValidator ) { return false; } - if (isset($value['address']) && AddressValidator::validate($value['address']) === false) { - return false; + if (isset($value['address'])) { + if (is_array($value['address'])) { + $isError = false; + + foreach ($value['address'] as $address) { + if (AddressValidator::validate($address) === false) { + $isError = true; + break; + } + } + if ($isError === true) { + return false; + } + } elseif (AddressValidator::validate($value['address']) === false) { + return false; + } } if (isset($value['topics']) && is_array($value['topics'])) { foreach ($value['topics'] as $topic) { diff --git a/test/unit/FilterValidatorTest.php b/test/unit/FilterValidatorTest.php new file mode 100644 index 0000000..5c6848f --- /dev/null +++ b/test/unit/FilterValidatorTest.php @@ -0,0 +1,72 @@ +validator = new FilterValidator; + } + + /** + * testValidate + * + * @return void + */ + public function testValidate() + { + $validator = $this->validator; + + $this->assertEquals(false, $validator->validate('hello web3.php')); + $this->assertEquals(false, $validator->validate([ + 'fromBlock' => 'hello', + ])); + $this->assertEquals(false, $validator->validate([ + 'toBlock' => 'hello', + ])); + $this->assertEquals(false, $validator->validate([ + 'address' => '0xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz', + ])); + $this->assertEquals(false, $validator->validate([ + 'topics' => [ + '0xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz', + ] + ])); + $this->assertEquals(true, $validator->validate([])); + $this->assertEquals(true, $validator->validate([ + 'fromBlock' => 'earliest', + 'toBlock' => 'latest', + 'address' => '0xd46e8dd67c5d32be8058bb8eb970870f07244567', + 'topics' => [ + '0xd46e8dd67c5d32be8058bb8eb970870f07244567', '0xd46e8dd67c5d32be8058bb8eb970870f07244567' + ] + ])); + $this->assertEquals(true, $validator->validate([ + 'fromBlock' => 'earliest', + 'toBlock' => 'latest', + 'address' => [ + '0xd46e8dd67c5d32be8058bb8eb970870f07244567', '0xd46e8dd67c5d32be8058bb8eb970870f07244567' + ], + 'topics' => [ + '0xd46e8dd67c5d32be8058bb8eb970870f07244567', '0xd46e8dd67c5d32be8058bb8eb970870f07244567' + ] + ])); + } +} \ No newline at end of file