From 2a55708ae81197275233861d5fe58ce4d9d15caf Mon Sep 17 00:00:00 2001 From: Sabina Talipova Date: Mon, 16 Jan 2023 10:42:51 +1300 Subject: [PATCH] FIX Check value is not NULL --- code/Extension/FormSpamProtectionExtension.php | 8 +++++++- tests/FormSpamProtectionExtensionTest.php | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/code/Extension/FormSpamProtectionExtension.php b/code/Extension/FormSpamProtectionExtension.php index f365f45..3ff2422 100644 --- a/code/Extension/FormSpamProtectionExtension.php +++ b/code/Extension/FormSpamProtectionExtension.php @@ -2,6 +2,7 @@ namespace SilverStripe\SpamProtection\Extension; +use LogicException; use SilverStripe\Core\Config\Configurable; use SilverStripe\Core\Extension; use SilverStripe\Core\Injector\Injector; @@ -84,6 +85,7 @@ class FormSpamProtectionExtension extends Extension * Activates the spam protection module. * * @param array $options + * @throws LogicException when get_protector method returns NULL. * @return Object */ public function enableSpamProtection($options = array()) @@ -106,7 +108,11 @@ class FormSpamProtectionExtension extends Extension // set custom mapping on this form $protector = self::get_protector($options); - if (isset($options['mapping'])) { + if ($protector === null) { + throw new LogicException('No spam protector has been set. Null is not valid value.'); + } + + if ($protector && isset($options['mapping'])) { $protector->setFieldMapping($options['mapping']); } diff --git a/tests/FormSpamProtectionExtensionTest.php b/tests/FormSpamProtectionExtensionTest.php index 38d6071..51c3a77 100644 --- a/tests/FormSpamProtectionExtensionTest.php +++ b/tests/FormSpamProtectionExtensionTest.php @@ -2,6 +2,7 @@ namespace SilverStripe\SpamProtection\Tests; +use LogicException; use SilverStripe\Control\Controller; use SilverStripe\Core\Config\Config; use SilverStripe\Dev\SapphireTest; @@ -38,6 +39,14 @@ class FormSpamProtectionExtensionTest extends SapphireTest $this->form->disableSecurityToken(); } + public function testEnableSpamProtectionThrowsException() + { + $this->expectException(LogicException::class); + $this->expectExceptionMessage('No spam protector has been set. Null is not valid value.'); + + $this->form->enableSpamProtection(); + } + public function testEnableSpamProtection() { Config::modify()->set(