diff --git a/src/Sanitizer.php b/src/Sanitizer.php index a1dc52a..66c029a 100644 --- a/src/Sanitizer.php +++ b/src/Sanitizer.php @@ -127,13 +127,15 @@ public function sanitize() $sanitized = $this->data; foreach ($this->rules as $attr => $rules) { - $value = Arr::get($this->data, $attr); + if (Arr::has($this->data, $attr)) { + $value = Arr::get($this->data, $attr); - foreach ($rules as $rule) { - $value = $this->applyFilter($rule['name'], $value, $rule['options']); - } + foreach ($rules as $rule) { + $value = $this->applyFilter($rule['name'], $value, $rule['options']); + } - Arr::set($sanitized, $attr, $value); + Arr::set($sanitized, $attr, $value); + } } return $sanitized; diff --git a/tests/SanitizerTest.php b/tests/SanitizerTest.php index 80d98ea..435b9f6 100644 --- a/tests/SanitizerTest.php +++ b/tests/SanitizerTest.php @@ -91,4 +91,22 @@ public function it_throws_exception_if_non_existing_filter() ]; $data = $this->sanitize($data, $rules); } + + public function test_it_should_only_sanitize_passed_data() + { + $data = [ + 'title' => ' Hello WoRlD ' + ]; + + $rules = [ + 'title' => 'trim', + 'name' => 'trim|escape' + ]; + + $data = $this->sanitize($data, $rules); + + $this->assertArrayNotHasKey('name', $data); + $this->assertArrayHasKey('title', $data); + $this->assertEquals(1, count($data)); + } }