mirror of
https://github.com/silverstripe/silverstripe-spamprotection.git
synced 2024-10-22 14:05:59 +02:00
ef3e6d45b6
* Allow for a configurable field name * Add a test for configurable field name * Remove extra conditional by storing the field name in a private static * No need for field_name config removal as it's now specified as a class property
163 lines
4.6 KiB
PHP
163 lines
4.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package spamprotection
|
|
*/
|
|
class FormSpamProtectionExtensionTest extends SapphireTest
|
|
{
|
|
protected $usesDatabase = false;
|
|
|
|
/**
|
|
* @var Form
|
|
*/
|
|
protected $form = null;
|
|
|
|
public function setUp()
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->form = new Form($this, 'Form', new FieldList(
|
|
new TextField('Title'),
|
|
new TextField('Comment'),
|
|
new TextField('URL')
|
|
), new FieldList()
|
|
);
|
|
$this->form->disableSecurityToken();
|
|
}
|
|
|
|
public function testEnableSpamProtection()
|
|
{
|
|
Config::inst()->update(
|
|
'FormSpamProtectionExtension', 'default_spam_protector',
|
|
'FormSpamProtectionExtensionTest_FooProtector'
|
|
);
|
|
|
|
$form = $this->form->enableSpamProtection();
|
|
|
|
$this->assertEquals('Foo', $form->Fields()->fieldByName('Captcha')->Title());
|
|
}
|
|
|
|
public function testEnableSpamProtectionCustomProtector()
|
|
{
|
|
$form = $this->form->enableSpamProtection(array(
|
|
'protector' => 'FormSpamProtectionExtensionTest_BarProtector'
|
|
));
|
|
|
|
$this->assertEquals('Bar', $form->Fields()->fieldByName('Captcha')->Title());
|
|
}
|
|
|
|
public function testEnableSpamProtectionCustomTitle()
|
|
{
|
|
$form = $this->form->enableSpamProtection(array(
|
|
'protector' => 'FormSpamProtectionExtensionTest_BarProtector',
|
|
'title' => 'Baz',
|
|
));
|
|
|
|
$this->assertEquals('Baz', $form->Fields()->fieldByName('Captcha')->Title());
|
|
}
|
|
|
|
public function testCustomOptions()
|
|
{
|
|
$form = $this->form->enableSpamProtection(array(
|
|
'protector' => 'FormSpamProtectionExtensionTest_BazProtector',
|
|
'title' => 'Qux',
|
|
'name' => 'Borris'
|
|
));
|
|
|
|
$this->assertEquals('Qux', $form->Fields()->fieldByName('Borris')->Title());
|
|
}
|
|
|
|
public function testConfigurableName()
|
|
{
|
|
$field_name = "test_configurable_name";
|
|
Config::inst()->update(
|
|
'FormSpamProtectionExtension', 'default_spam_protector',
|
|
'FormSpamProtectionExtensionTest_FooProtector'
|
|
);
|
|
Config::inst()->update(
|
|
'FormSpamProtectionExtension', 'field_name',
|
|
$field_name
|
|
);
|
|
$form = $this->form->enableSpamProtection();
|
|
// remove for subsequent tests
|
|
Config::inst()->remove('FormSpamProtectionExtension', 'field_name');
|
|
// field should take up configured name
|
|
$this->assertEquals('Foo', $form->Fields()->fieldByName($field_name)->Title());
|
|
}
|
|
|
|
public function testInsertBefore()
|
|
{
|
|
$form = $this->form->enableSpamProtection(array(
|
|
'protector' => 'FormSpamProtectionExtensionTest_FooProtector',
|
|
'insertBefore' => 'URL'
|
|
));
|
|
|
|
$fields = $form->Fields();
|
|
$this->assertEquals('Title', $fields[0]->Title());
|
|
$this->assertEquals('Comment', $fields[1]->Title());
|
|
$this->assertEquals('Foo', $fields[2]->Title());
|
|
$this->assertEquals('URL', $fields[3]->Title());
|
|
}
|
|
|
|
public function testInsertBeforeMissing()
|
|
{
|
|
$form = $this->form->enableSpamProtection(array(
|
|
'protector' => 'FormSpamProtectionExtensionTest_FooProtector',
|
|
'insertBefore' => 'NotAField'
|
|
));
|
|
|
|
// field should default to the end instead
|
|
$fields = $form->Fields();
|
|
$this->assertEquals('Title', $fields[0]->Title());
|
|
$this->assertEquals('Comment', $fields[1]->Title());
|
|
$this->assertEquals('URL', $fields[2]->Title());
|
|
$this->assertEquals('Foo', $fields[3]->Title());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @package spamprotection
|
|
*/
|
|
class FormSpamProtectionExtensionTest_BazProtector implements SpamProtector, TestOnly
|
|
{
|
|
public function getFormField($name = null, $title = null, $value = null)
|
|
{
|
|
return new TextField($name, $title, $value);
|
|
}
|
|
|
|
public function setFieldMapping($fieldMapping)
|
|
{
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @package spamprotection
|
|
*/
|
|
class FormSpamProtectionExtensionTest_BarProtector implements SpamProtector, TestOnly
|
|
{
|
|
public function getFormField($name = null, $title = null, $value = null)
|
|
{
|
|
$title = $title ?: 'Bar';
|
|
return new TextField($name, $title, $value);
|
|
}
|
|
|
|
public function setFieldMapping($fieldMapping)
|
|
{
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @package spamprotection
|
|
*/
|
|
class FormSpamProtectionExtensionTest_FooProtector implements SpamProtector, TestOnly
|
|
{
|
|
public function getFormField($name = null, $title = null, $value = null)
|
|
{
|
|
return new TextField($name, 'Foo', $value);
|
|
}
|
|
|
|
public function setFieldMapping($fieldMapping)
|
|
{
|
|
}
|
|
}
|