mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-02-11 17:44:56 +00:00
575 lines
25 KiB
PHP
575 lines
25 KiB
PHP
<?php
|
|
/**
|
|
* Implementation of the attribute definiton tests
|
|
*
|
|
* PHP version 7
|
|
*
|
|
* @category SeedDMS
|
|
* @package Tests
|
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
|
* @copyright 2021 Uwe Steinmann
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
|
|
* @version @package_version@
|
|
* @link https://www.seeddms.org
|
|
*/
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Attribute definition test class
|
|
*
|
|
* @category SeedDMS
|
|
* @package Tests
|
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
|
* @copyright 2021 Uwe Steinmann
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
|
|
* @version Release: @package_version@
|
|
* @link https://www.seeddms.org
|
|
*/
|
|
class AttributeDefinitionTest extends TestCase
|
|
{
|
|
|
|
/**
|
|
* Create a real dms object with a mocked db
|
|
*
|
|
* This mock is only used if \SeedDMS_Core_DatabaseAccess::getResult() is
|
|
* called once. This is the case for all \SeedDMS_Core_AttributeDefinition::setXXX()
|
|
* methods like setName().
|
|
*
|
|
* @return \SeedDMS_Core_DMS
|
|
*/
|
|
protected function getDmsWithMockedDb() : \SeedDMS_Core_DMS
|
|
{
|
|
$db = $this->createMock(\SeedDMS_Core_DatabaseAccess::class);
|
|
$db->expects($this->once())
|
|
->method('getResult')
|
|
->with($this->stringContains("UPDATE "))
|
|
->willReturn(true);
|
|
$dms = new \SeedDMS_Core_DMS($db, '');
|
|
return $dms;
|
|
}
|
|
|
|
/**
|
|
* Create a mocked dms
|
|
*
|
|
* @return \SeedDMS_Core_DMS
|
|
*/
|
|
protected function getDmsMock() : \SeedDMS_Core_DMS
|
|
{
|
|
$dms = $this->createMock(\SeedDMS_Core_DMS::class);
|
|
$dms->expects($this->any())
|
|
->method('getDocument')
|
|
->with(1)
|
|
->willReturn(true);
|
|
$dms->expects($this->any())
|
|
->method('getFolder')
|
|
->with(1)
|
|
->willReturn(true);
|
|
$dms->expects($this->any())
|
|
->method('getUser')
|
|
->will(
|
|
$this->returnValueMap(
|
|
array(
|
|
array(1, new \SeedDMS_Core_User(1, 'admin', 'pass', 'Joe Foo', 'baz@foo.de', 'en_GB', 'bootstrap', 'My comment', \SeedDMS_Core_User::role_admin)),
|
|
array(2, new \SeedDMS_Core_User(2, 'admin2', 'pass', 'Joe Bar', 'bar@foo.de', 'en_GB', 'bootstrap', 'My comment', \SeedDMS_Core_User::role_admin)),
|
|
array(3, null)
|
|
)
|
|
)
|
|
);
|
|
$dms->expects($this->any())
|
|
->method('getGroup')
|
|
->will(
|
|
$this->returnValueMap(
|
|
array(
|
|
array(1, new \SeedDMS_Core_Group(1, 'admin group 1', 'My comment')),
|
|
array(2, new \SeedDMS_Core_Group(2, 'admin group 2', 'My comment')),
|
|
array(3, null)
|
|
)
|
|
)
|
|
);
|
|
return $dms;
|
|
}
|
|
|
|
/**
|
|
* Create a mock attribute definition object
|
|
*
|
|
* @param int $type type of attribute
|
|
* @param boolean $multiple set to true for multi value attributes
|
|
* @param int $minvalues minimum number of attribute values
|
|
* @param int $maxvalues maximum number of attribute values
|
|
* @param string $valueset list of allowed values separated by the first char
|
|
* @param string $regex regular expression that must match the attribute value
|
|
*
|
|
* @return \SeedDMS_Core_AttributeDefinition
|
|
*/
|
|
protected function getAttributeDefinition($type, $multiple=false, $minvalues=0, $maxvalues=0, $valueset='', $regex='')
|
|
{
|
|
$attrdef = new \SeedDMS_Core_AttributeDefinition(1, 'foo attr', \SeedDMS_Core_AttributeDefinition::objtype_folder, $type, $multiple, $minvalues, $maxvalues, $valueset, $regex);
|
|
return $attrdef;
|
|
}
|
|
|
|
/**
|
|
* Test getId()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetId()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertEquals(1, $attrdef->getId());
|
|
}
|
|
|
|
/**
|
|
* Test getName()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetName()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertEquals('foo attr', $attrdef->getName());
|
|
}
|
|
|
|
/**
|
|
* Test setName()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetName()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
$attrdef->setName('bar attr');
|
|
$this->assertEquals('bar attr', $attrdef->getName());
|
|
}
|
|
|
|
/**
|
|
* Test getObjType()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetObjType()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::objtype_folder, $attrdef->getObjType());
|
|
}
|
|
|
|
/**
|
|
* Test setObjType()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetObjType()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
$attrdef->setObjType(\SeedDMS_Core_AttributeDefinition::objtype_document);
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::objtype_document, $attrdef->getObjType());
|
|
}
|
|
|
|
/**
|
|
* Test getType()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetType()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::type_int, $attrdef->getType());
|
|
}
|
|
|
|
/**
|
|
* Test setType()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetType()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
$attrdef->setType(\SeedDMS_Core_AttributeDefinition::type_string);
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::type_string, $attrdef->getType());
|
|
}
|
|
|
|
/**
|
|
* Test getMultipleValues()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetMultipleValues()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertEquals(false, $attrdef->getMultipleValues());
|
|
}
|
|
|
|
/**
|
|
* Test setMultipleValues()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetMultipleValues()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
/* Toogle the current value of multiple values */
|
|
$oldvalue = $attrdef->getMultipleValues();
|
|
$attrdef->setMultipleValues(!$oldvalue);
|
|
$this->assertEquals(!$oldvalue, $attrdef->getMultipleValues());
|
|
}
|
|
|
|
/**
|
|
* Test getMinValues()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetMinValues()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertEquals(0, $attrdef->getMinValues());
|
|
}
|
|
|
|
/**
|
|
* Test setMinValues()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetMinValues()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
/* add 5 to value of min values */
|
|
$oldvalue = $attrdef->getMinValues();
|
|
$attrdef->setMinValues($oldvalue+5);
|
|
$this->assertEquals($oldvalue+5, $attrdef->getMinValues());
|
|
}
|
|
|
|
/**
|
|
* Test getMaxValues()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetMaxValues()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertEquals(0, $attrdef->getMaxValues());
|
|
}
|
|
|
|
/**
|
|
* Test setMaxValues()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetMaxValues()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
/* add 5 to value of max values */
|
|
$oldvalue = $attrdef->getMaxValues();
|
|
$attrdef->setMaxValues($oldvalue+5);
|
|
$this->assertEquals($oldvalue+5, $attrdef->getMaxValues());
|
|
}
|
|
|
|
/**
|
|
* Test getValueSet()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetValueSet()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '|foo|bar|baz');
|
|
$this->assertEquals('|foo|bar|baz', $attrdef->getValueSet());
|
|
}
|
|
|
|
/**
|
|
* Test getValueSetSeparator()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetValueSetSeparator()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '|foo|bar|baz');
|
|
$this->assertEquals('|', $attrdef->getValueSetSeparator());
|
|
/* No value set will return no separator */
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertEmpty($attrdef->getValueSetSeparator());
|
|
/* Even a 1 char value set will return no separator */
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '|');
|
|
$this->assertEmpty($attrdef->getValueSetSeparator());
|
|
/* Multiple users or groups always use a ',' as a separator */
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_user, true);
|
|
$this->assertEquals(',', $attrdef->getValueSetSeparator());
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_group, true);
|
|
$this->assertEquals(',', $attrdef->getValueSetSeparator());
|
|
}
|
|
|
|
/**
|
|
* Test getValueSetAsArray()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetValueSetAsArray()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '|foo|bar|baz ');
|
|
$valueset = $attrdef->getValueSetAsArray();
|
|
$this->assertIsArray($valueset);
|
|
$this->assertCount(3, $valueset);
|
|
/* value set must contain 'baz' though 'baz ' was originally set */
|
|
$this->assertContains('baz', $valueset);
|
|
/* No value set will return an empty array */
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string);
|
|
$valueset = $attrdef->getValueSetAsArray();
|
|
$this->assertIsArray($valueset);
|
|
$this->assertEmpty($valueset);
|
|
}
|
|
|
|
/**
|
|
* Test getValueSetValue()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetValueSetValue()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '|foo|bar|baz ');
|
|
$this->assertEquals('foo', $attrdef->getValueSetValue(0));
|
|
/* Check if trimming of 'baz ' worked */
|
|
$this->assertEquals('baz', $attrdef->getValueSetValue(2));
|
|
/* Getting the value of a none existing index returns false */
|
|
$this->assertFalse($attrdef->getValueSetValue(3));
|
|
|
|
/* Getting a value from a none existing value set returns false as well */
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string);
|
|
$this->assertFalse($attrdef->getValueSetValue(0));
|
|
}
|
|
|
|
/**
|
|
* Test setValueSet()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetValueSet()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
/* add 5 to value of min values */
|
|
$attrdef->setValueSet(' |foo|bar | baz ');
|
|
$this->assertEquals('|foo|bar|baz', $attrdef->getValueSet());
|
|
}
|
|
|
|
/**
|
|
* Test getRegex()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetRegex()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '', '[0-9].*');
|
|
$this->assertEquals('[0-9].*', $attrdef->getRegex());
|
|
}
|
|
|
|
/**
|
|
* Test setRegex()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetRegex()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
/* set a new valid regex */
|
|
$this->assertTrue($attrdef->setRegex(' /[0-9].*/i '));
|
|
$this->assertEquals('/[0-9].*/i', $attrdef->getRegex());
|
|
/* set a new invalid regex will return false and keep the old regex */
|
|
$this->assertFalse($attrdef->setRegex(' /([0-9].*/i '));
|
|
$this->assertEquals('/[0-9].*/i', $attrdef->getRegex());
|
|
}
|
|
|
|
/**
|
|
* Test setEmptyRegex()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetEmptyRegex()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string);
|
|
/* A mocked dms is needed for updating the database */
|
|
$attrdef->setDMS(self::getDmsWithMockedDb());
|
|
/* set an empty regex */
|
|
$this->assertTrue($attrdef->setRegex(''));
|
|
}
|
|
|
|
/**
|
|
* Test parseValue()
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testParseValue()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string);
|
|
$value = $attrdef->parseValue('foo');
|
|
$this->assertIsArray($value);
|
|
$this->assertCount(1, $value);
|
|
$this->assertContains('foo', $value);
|
|
/* An attribute definition with multiple values will split the value by the first char */
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, true, 0, 0, '|baz|bar|foo');
|
|
$value = $attrdef->parseValue('|bar|baz');
|
|
$this->assertIsArray($value);
|
|
$this->assertCount(2, $value);
|
|
/* An attribute definition without multiple values, will treat the value as a string */
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '|baz|bar|foo');
|
|
$value = $attrdef->parseValue('|bar|baz');
|
|
$this->assertIsArray($value);
|
|
$this->assertCount(1, $value);
|
|
$this->assertContains('|bar|baz', $value);
|
|
}
|
|
|
|
/**
|
|
* Test validate()
|
|
*
|
|
* @TODO Instead of having a lengthy list of assert calls, this could be
|
|
* implemented with data providers for each attribute type
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testValidate()
|
|
{
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string);
|
|
$this->assertTrue($attrdef->validate('')); // even an empty string is valid
|
|
$this->assertTrue($attrdef->validate('foo')); // there is no invalid string
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '', '/[0-9]*S/');
|
|
$this->assertFalse($attrdef->validate('foo')); // doesn't match the regex
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_regex, $attrdef->getValidationError());
|
|
$this->assertTrue($attrdef->validate('S')); // no leading numbers needed
|
|
$this->assertTrue($attrdef->validate('8980S')); // leading numbers are ok
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, false, 0, 0, '|foo|bar|baz', '');
|
|
$this->assertTrue($attrdef->validate('foo')); // is part of value map
|
|
$this->assertFalse($attrdef->validate('foz')); // is not part of value map
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_valueset, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, true, 0, 0, '|foo|bar|baz', '');
|
|
$this->assertTrue($attrdef->validate('foo')); // is part of value map
|
|
$this->assertFalse($attrdef->validate('')); // an empty value cannot be in the valueset
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_valueset, $attrdef->getValidationError());
|
|
$this->assertTrue($attrdef->validate('|foo|baz')); // both are part of value map
|
|
$this->assertFalse($attrdef->validate('|foz|baz')); // 'foz' is not part of value map
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_valueset, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_string, true, 1, 1, '|foo|bar|baz', '');
|
|
$this->assertTrue($attrdef->validate('foo')); // is part of value map
|
|
$this->assertFalse($attrdef->validate('')); // empty string is invalid because of min values = 1
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_min_values, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('|foo|baz')); // both are part of value map, but only value is allowed
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_max_values, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_boolean);
|
|
$this->assertTrue($attrdef->validate(0));
|
|
$this->assertTrue($attrdef->validate(1));
|
|
$this->assertFalse($attrdef->validate(2));
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_boolean, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_int);
|
|
$this->assertTrue($attrdef->validate(0));
|
|
$this->assertTrue($attrdef->validate('0'));
|
|
$this->assertFalse($attrdef->validate('a'));
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_int, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_date);
|
|
$this->assertTrue($attrdef->validate('2021-09-30'));
|
|
$this->assertTrue($attrdef->validate('1968-02-29')); // 1968 was a leap year
|
|
$this->assertTrue($attrdef->validate('2000-02-29')); // 2000 was a leap year
|
|
$this->assertFalse($attrdef->validate('1900-02-29')); // 1900 didn't was a leap year
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_date, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('1970-02-29')); // 1970 didn't was a leap year
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_date, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('2010/02/28')); // This has the wrong format
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_date, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('1970-00-29')); // 0 month is not allowed
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_date, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('1970-01-00')); // 0 day is not allowed
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_date, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_float);
|
|
$this->assertTrue($attrdef->validate('0.567'));
|
|
$this->assertTrue($attrdef->validate('1000'));
|
|
$this->assertTrue($attrdef->validate('1000e3'));
|
|
$this->assertTrue($attrdef->validate('1000e-3'));
|
|
$this->assertTrue($attrdef->validate('-1000'));
|
|
$this->assertTrue($attrdef->validate('+1000'));
|
|
$this->assertFalse($attrdef->validate('0,567')); // wrong decimal point
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_float, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('0.56.7')); // two decimal point
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_float, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_email);
|
|
$this->assertTrue($attrdef->validate('info@seeddms.org'));
|
|
$this->assertTrue($attrdef->validate('info@seeddms.verylongtopleveldomain'));
|
|
$this->assertFalse($attrdef->validate('@seeddms.org')); // no user
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_email, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('info@localhost')); // no tld
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_email, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('info@@seeddms.org')); // double @
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_email, $attrdef->getValidationError());
|
|
$this->assertTrue($attrdef->validate('info@subsubdomain.subdomain.seeddms.org')); // multiple subdomains are ok
|
|
$this->assertFalse($attrdef->validate('info@seeddms..org')); // double . is not allowed
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_email, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('info@s.org')); // 2nd level domain name is too short
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_email, $attrdef->getValidationError());
|
|
$this->assertFalse($attrdef->validate('info@seeddms.o')); // top level domain name is too short
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_email, $attrdef->getValidationError());
|
|
$this->assertTrue($attrdef->validate('info@0123456789-0123456789-0123456789-0123456789-0123456789-01234567.org')); // domain name is 63 chars long, which is the max length
|
|
$this->assertFalse($attrdef->validate('info@0123456789-0123456789-0123456789-0123456789-0123456789-012345678.org')); // domain name is 1 char longer than 63 chars
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_email, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_url);
|
|
$this->assertTrue($attrdef->validate('http://seeddms.org'));
|
|
$this->assertTrue($attrdef->validate('https://seeddms.org'));
|
|
$this->assertFalse($attrdef->validate('ftp://seeddms.org')); // ftp is not allowed
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_url, $attrdef->getValidationError());
|
|
$this->assertTrue($attrdef->validate('http://localhost')); // no tld is just fine
|
|
$this->assertFalse($attrdef->validate('http://localhost.o')); // tld is to short
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_url, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_user);
|
|
$attrdef->setDMS(self::getDmsMock());
|
|
$this->assertTrue($attrdef->validate(1));
|
|
$this->assertFalse($attrdef->validate(3));
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_user, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_group);
|
|
$attrdef->setDMS(self::getDmsMock());
|
|
$this->assertTrue($attrdef->validate('1'));
|
|
$this->assertTrue($attrdef->validate('2'));
|
|
$this->assertFalse($attrdef->validate('3')); // there is no group with id=3
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_group, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_group, true);
|
|
$attrdef->setDMS(self::getDmsMock());
|
|
$this->assertTrue($attrdef->validate(',1,2'));
|
|
$this->assertFalse($attrdef->validate(',1,2,3')); // there is no group with id=3
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_group, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_user);
|
|
$attrdef->setDMS(self::getDmsMock());
|
|
$this->assertTrue($attrdef->validate('1'));
|
|
$this->assertTrue($attrdef->validate('2'));
|
|
$this->assertFalse($attrdef->validate('3')); // there is no user with id=3
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_user, $attrdef->getValidationError());
|
|
|
|
$attrdef = self::getAttributeDefinition(\SeedDMS_Core_AttributeDefinition::type_user, true);
|
|
$attrdef->setDMS(self::getDmsMock());
|
|
$this->assertTrue($attrdef->validate(',1,2'));
|
|
$this->assertFalse($attrdef->validate(',1,2,3')); // there is no user with id=3
|
|
$this->assertEquals(\SeedDMS_Core_AttributeDefinition::val_error_user, $attrdef->getValidationError());
|
|
}
|
|
|
|
}
|