2009-06-27 06:00:10 +02:00
|
|
|
<?php
|
2016-06-23 01:37:22 +02:00
|
|
|
|
2016-10-14 03:30:05 +02:00
|
|
|
namespace SilverStripe\Forms\Tests;
|
|
|
|
|
2016-08-19 00:51:35 +02:00
|
|
|
use SilverStripe\Control\Controller;
|
2017-06-22 12:50:45 +02:00
|
|
|
use SilverStripe\Dev\SapphireTest;
|
2016-08-19 00:51:35 +02:00
|
|
|
use SilverStripe\Forms\ConfirmedPasswordField;
|
|
|
|
use SilverStripe\Forms\FieldList;
|
|
|
|
use SilverStripe\Forms\Form;
|
|
|
|
use SilverStripe\Forms\RequiredFields;
|
2017-06-22 12:50:45 +02:00
|
|
|
use SilverStripe\Security\Member;
|
2018-11-14 10:54:17 +01:00
|
|
|
use SilverStripe\Security\PasswordValidator;
|
2016-08-19 00:51:35 +02:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
class ConfirmedPasswordFieldTest extends SapphireTest
|
|
|
|
{
|
2018-11-14 10:54:17 +01:00
|
|
|
protected $usesDatabase = true;
|
|
|
|
|
|
|
|
protected function setUp()
|
|
|
|
{
|
|
|
|
parent::setUp();
|
|
|
|
|
|
|
|
PasswordValidator::singleton()->setMinLength(0);
|
|
|
|
}
|
2016-12-16 05:34:21 +01:00
|
|
|
|
|
|
|
public function testSetValue()
|
|
|
|
{
|
|
|
|
$field = new ConfirmedPasswordField('Test', 'Testing', 'valueA');
|
|
|
|
$this->assertEquals('valueA', $field->Value());
|
|
|
|
$this->assertEquals('valueA', $field->children->fieldByName($field->getName() . '[_Password]')->Value());
|
|
|
|
$this->assertEquals('valueA', $field->children->fieldByName($field->getName() . '[_ConfirmPassword]')->Value());
|
|
|
|
$field->setValue('valueB');
|
|
|
|
$this->assertEquals('valueB', $field->Value());
|
|
|
|
$this->assertEquals('valueB', $field->children->fieldByName($field->getName() . '[_Password]')->Value());
|
|
|
|
$this->assertEquals('valueB', $field->children->fieldByName($field->getName() . '[_ConfirmPassword]')->Value());
|
|
|
|
}
|
2011-02-25 05:01:46 +01:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
public function testHashHidden()
|
|
|
|
{
|
|
|
|
$field = new ConfirmedPasswordField('Password', 'Password', 'valueA');
|
|
|
|
$field->setCanBeEmpty(true);
|
2013-06-20 04:08:46 +02:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
$this->assertEquals('valueA', $field->Value());
|
|
|
|
$this->assertEquals('valueA', $field->children->fieldByName($field->getName() . '[_Password]')->Value());
|
|
|
|
$this->assertEquals('valueA', $field->children->fieldByName($field->getName() . '[_ConfirmPassword]')->Value());
|
2013-06-20 04:08:46 +02:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
$member = new Member();
|
|
|
|
$member->Password = "valueB";
|
|
|
|
$member->write();
|
2013-06-20 04:08:46 +02:00
|
|
|
|
2017-06-22 12:50:45 +02:00
|
|
|
/** @skipUpgrade */
|
|
|
|
$form = new Form(Controller::curr(), 'Form', new FieldList($field), new FieldList());
|
2016-12-16 05:34:21 +01:00
|
|
|
$form->loadDataFrom($member);
|
2013-06-20 04:08:46 +02:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
$this->assertEquals('', $field->Value());
|
|
|
|
$this->assertEquals('', $field->children->fieldByName($field->getName() . '[_Password]')->Value());
|
|
|
|
$this->assertEquals('', $field->children->fieldByName($field->getName() . '[_ConfirmPassword]')->Value());
|
|
|
|
}
|
2013-06-20 04:08:46 +02:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
public function testSetShowOnClick()
|
|
|
|
{
|
|
|
|
//hide by default and display show/hide toggle button
|
|
|
|
$field = new ConfirmedPasswordField('Test', 'Testing', 'valueA', null, true);
|
|
|
|
$fieldHTML = $field->Field();
|
|
|
|
$this->assertContains(
|
|
|
|
"showOnClickContainer",
|
|
|
|
$fieldHTML,
|
|
|
|
"Test class for hiding/showing the form contents is set"
|
|
|
|
);
|
|
|
|
$this->assertContains(
|
|
|
|
"showOnClick",
|
|
|
|
$fieldHTML,
|
|
|
|
"Test class for hiding/showing the form contents is set"
|
|
|
|
);
|
2011-02-25 05:01:46 +01:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
//show all by default
|
|
|
|
$field = new ConfirmedPasswordField('Test', 'Testing', 'valueA', null, false);
|
|
|
|
$fieldHTML = $field->Field();
|
|
|
|
$this->assertNotContains(
|
|
|
|
"showOnClickContainer",
|
|
|
|
$fieldHTML,
|
|
|
|
"Test class for hiding/showing the form contents is set"
|
|
|
|
);
|
|
|
|
$this->assertNotContains(
|
|
|
|
"showOnClick",
|
|
|
|
$fieldHTML,
|
|
|
|
"Test class for hiding/showing the form contents is set"
|
|
|
|
);
|
|
|
|
}
|
2014-01-07 05:16:58 +01:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
public function testValidation()
|
|
|
|
{
|
|
|
|
$field = new ConfirmedPasswordField(
|
|
|
|
'Test',
|
|
|
|
'Testing',
|
|
|
|
array(
|
|
|
|
"_Password" => "abc123",
|
|
|
|
"_ConfirmPassword" => "abc123"
|
|
|
|
)
|
|
|
|
);
|
|
|
|
$validator = new RequiredFields();
|
2017-06-22 12:50:45 +02:00
|
|
|
/** @skipUpgrade */
|
|
|
|
new Form(Controller::curr(), 'Form', new FieldList($field), new FieldList(), $validator);
|
2016-12-16 05:34:21 +01:00
|
|
|
$this->assertTrue(
|
|
|
|
$field->validate($validator),
|
|
|
|
"Validates when both passwords are the same"
|
|
|
|
);
|
|
|
|
$field->setName("TestNew"); //try changing name of field
|
|
|
|
$this->assertTrue(
|
|
|
|
$field->validate($validator),
|
|
|
|
"Validates when field name is changed"
|
|
|
|
);
|
|
|
|
//non-matching password should make the field invalid
|
|
|
|
$field->setValue(
|
|
|
|
array(
|
|
|
|
"_Password" => "abc123",
|
|
|
|
"_ConfirmPassword" => "123abc"
|
|
|
|
)
|
|
|
|
);
|
|
|
|
$this->assertFalse(
|
|
|
|
$field->validate($validator),
|
|
|
|
"Does not validate when passwords differ"
|
|
|
|
);
|
|
|
|
}
|
2016-03-08 21:50:18 +01:00
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
public function testFormValidation()
|
|
|
|
{
|
2017-06-22 12:50:45 +02:00
|
|
|
/** @skipUpgrade */
|
2015-11-18 14:11:31 +01:00
|
|
|
$form = new Form(
|
2017-06-22 12:50:45 +02:00
|
|
|
Controller::curr(),
|
2015-11-18 14:11:31 +01:00
|
|
|
'Form',
|
|
|
|
new FieldList($field = new ConfirmedPasswordField('Password')),
|
|
|
|
new FieldList()
|
|
|
|
);
|
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
$form->loadDataFrom(
|
|
|
|
array(
|
2015-11-18 14:11:31 +01:00
|
|
|
'Password' => array(
|
|
|
|
'_Password' => '123',
|
|
|
|
'_ConfirmPassword' => '999',
|
|
|
|
)
|
2016-12-16 05:34:21 +01:00
|
|
|
)
|
|
|
|
);
|
2015-11-18 14:11:31 +01:00
|
|
|
|
|
|
|
$this->assertEquals('123', $field->children->first()->Value());
|
|
|
|
$this->assertEquals('999', $field->children->last()->Value());
|
|
|
|
$this->assertNotEquals($field->children->first()->Value(), $field->children->last()->Value());
|
|
|
|
}
|
2009-06-27 06:00:10 +02:00
|
|
|
}
|