Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

402 lines
16 KiB

<?php
Added php-cs-fixer coding standards validation to Travis CI (#14100) * php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
7 years ago
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace yiiunit\framework\validators;
use yii\validators\IpValidator;
use yiiunit\data\validators\models\FakedValidationModel;
use yiiunit\TestCase;
/**
* @group validators
*/
class IpValidatorTest extends TestCase
{
protected function setUp()
{
parent::setUp();
// destroy application, Validator must work without Yii::$app
$this->destroyApplication();
}
public function testInitException()
{
$this->expectException('yii\base\InvalidConfigException');
$this->expectExceptionMessage('Both IPv4 and IPv6 checks can not be disabled at the same time');
new IpValidator(['ipv4' => false, 'ipv6' => false]);
}
Added php-cs-fixer coding standards validation to Travis CI (#14100) * php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
7 years ago
public function provideRangesForSubstitution()
{
return [
['10.0.0.1', ['10.0.0.1']],
[['192.168.0.32', 'fa::/32', 'any'], ['192.168.0.32', 'fa::/32', '0.0.0.0/0', '::/0']],
[['10.0.0.1', '!private'], ['10.0.0.1', '!10.0.0.0/8', '!172.16.0.0/12', '!192.168.0.0/16', '!fd00::/8']],
Added php-cs-fixer coding standards validation to Travis CI (#14100) * php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
7 years ago
[['private', '!system'], ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fd00::/8', '!224.0.0.0/4', '!ff00::/8', '!169.254.0.0/16', '!fe80::/10', '!127.0.0.0/8', '!::1', '!192.0.2.0/24', '!198.51.100.0/24', '!203.0.113.0/24', '!2001:db8::/32']],
];
}
/**
* @dataProvider provideRangesForSubstitution
* @param array $range
* @param array $expectedRange
*/
public function testRangesSubstitution($range, $expectedRange)
{
$validator = new IpValidator(['ranges' => $range]);
$this->assertEquals($expectedRange, $validator->ranges);
}
public function testValidateOrder()
{
$validator = new IpValidator([
Added php-cs-fixer coding standards validation to Travis CI (#14100) * php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
7 years ago
'ranges' => ['10.0.0.1', '!10.0.0.0/8', '!babe::/8', 'any'],
]);
$this->assertTrue($validator->validate('10.0.0.1'));
$this->assertFalse($validator->validate('10.0.0.2'));
$this->assertTrue($validator->validate('192.168.5.101'));
$this->assertTrue($validator->validate('cafe::babe'));
$this->assertFalse($validator->validate('babe::cafe'));
}
Added php-cs-fixer coding standards validation to Travis CI (#14100) * php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
7 years ago
public function provideBadIps()
{
return [['not.an.ip'], [['what an array', '??']], [123456], [true], [false], ['bad:forSure']];
}
/**
* @dataProvider provideBadIps
* @param mixed $badIp
*/
public function testValidateValueNotAnIP($badIp)
{
$validator = new IpValidator();
$this->assertFalse($validator->validate($badIp));
}
/**
* @dataProvider provideBadIps
* @param mixed $badIp
*/
public function testValidateModelAttributeNotAnIP($badIp)
{
$validator = new IpValidator();
$model = new FakedValidationModel();
$model->attr_ip = $badIp;
$validator->validateAttribute($model, 'attr_ip');
$this->assertEquals('attr_ip must be a valid IP address.', $model->getFirstError('attr_ip'));
$model->clearErrors();
$validator->ipv4 = false;
$model->attr_ip = $badIp;
$validator->validateAttribute($model, 'attr_ip');
$this->assertEquals('attr_ip must be a valid IP address.', $model->getFirstError('attr_ip'));
$model->clearErrors();
$validator->ipv4 = true;
$validator->ipv6 = false;
$model->attr_ip = $badIp;
$validator->validateAttribute($model, 'attr_ip');
$this->assertEquals('attr_ip must be a valid IP address.', $model->getFirstError('attr_ip'));
$model->clearErrors();
}
public function testValidateValueIPv4()
{
$validator = new IpValidator();
$this->assertTrue($validator->validate('192.168.10.11'));
$this->assertTrue($validator->validate('192.168.005.001'));
$this->assertFalse($validator->validate('192.168.5.321'));
$this->assertFalse($validator->validate('!192.168.5.32'));
$this->assertFalse($validator->validate('192.168.5.32/11'));
$validator->ipv4 = false;
$this->assertFalse($validator->validate('192.168.10.11'));
$validator->ipv4 = true;
$validator->subnet = null;
$this->assertTrue($validator->validate('192.168.5.32/11'));
$this->assertTrue($validator->validate('192.168.5.32/32'));
$this->assertTrue($validator->validate('0.0.0.0/0'));
$this->assertFalse($validator->validate('192.168.5.32/33'));
$this->assertFalse($validator->validate('192.168.5.32/33'));
$this->assertFalse($validator->validate('192.168.5.32/af'));
$this->assertFalse($validator->validate('192.168.5.32/11/12'));
$validator->subnet = true;
$this->assertTrue($validator->validate('10.0.0.1/24'));
$this->assertTrue($validator->validate('10.0.0.1/0'));
$this->assertFalse($validator->validate('10.0.0.1'));
$validator->negation = true;
$this->assertTrue($validator->validate('!192.168.5.32/32'));
$this->assertFalse($validator->validate('!!192.168.5.32/32'));
}
public function testValidateValueIPv6()
{
$validator = new IpValidator();
$this->assertTrue($validator->validate('2008:fa::1'));
$this->assertTrue($validator->validate('2008:00fa::0001'));
$this->assertFalse($validator->validate('2008:fz::0'));
$this->assertFalse($validator->validate('2008:fa::0::1'));
$this->assertFalse($validator->validate('!2008:fa::0::1'));
$this->assertFalse($validator->validate('2008:fa::0:1/64'));
$validator->ipv4 = false;
$this->assertTrue($validator->validate('2008:fa::1'));
$validator->ipv6 = false;
$this->assertFalse($validator->validate('2008:fa::1'));
$validator->ipv6 = true;
$validator->subnet = null;
$this->assertTrue($validator->validate('2008:fa::0:1/64'));
$this->assertTrue($validator->validate('2008:fa::0:1/128'));
$this->assertTrue($validator->validate('2008:fa::0:1/0'));
$this->assertFalse($validator->validate('!2008:fa::0:1/0'));
$this->assertFalse($validator->validate('2008:fz::0/129'));
$validator->subnet = true;
$this->assertTrue($validator->validate('2008:db0::1/64'));
$this->assertFalse($validator->validate('2008:db0::1'));
$validator->negation = true;
$this->assertTrue($validator->validate('!2008:fa::0:1/64'));
$this->assertFalse($validator->validate('!!2008:fa::0:1/64'));
}
public function testValidateValueIPvBoth()
{
$validator = new IpValidator();
$this->assertTrue($validator->validate('192.168.10.11'));
$this->assertTrue($validator->validate('2008:fa::1'));
$this->assertTrue($validator->validate('2008:00fa::0001'));
$this->assertTrue($validator->validate('192.168.005.001'));
$this->assertFalse($validator->validate('192.168.5.321'));
$this->assertFalse($validator->validate('!192.168.5.32'));
$this->assertFalse($validator->validate('192.168.5.32/11'));
$this->assertFalse($validator->validate('2008:fz::0'));
$this->assertFalse($validator->validate('2008:fa::0::1'));
$this->assertFalse($validator->validate('!2008:fa::0::1'));
$this->assertFalse($validator->validate('2008:fa::0:1/64'));
$validator->ipv4 = false;
$this->assertFalse($validator->validate('192.168.10.11'));
$this->assertTrue($validator->validate('2008:fa::1'));
$validator->ipv6 = false;
$validator->ipv4 = true;
$this->assertTrue($validator->validate('192.168.10.11'));
$this->assertFalse($validator->validate('2008:fa::1'));
$validator->ipv6 = true;
$validator->subnet = null;
$this->assertTrue($validator->validate('192.168.5.32/11'));
$this->assertTrue($validator->validate('192.168.5.32/32'));
$this->assertTrue($validator->validate('0.0.0.0/0'));
$this->assertTrue($validator->validate('2008:fa::0:1/64'));
$this->assertTrue($validator->validate('2008:fa::0:1/128'));
$this->assertTrue($validator->validate('2008:fa::0:1/0'));
$this->assertFalse($validator->validate('!2008:fa::0:1/0'));
$this->assertFalse($validator->validate('192.168.5.32/33'));
$this->assertFalse($validator->validate('2008:fz::0/129'));
$this->assertFalse($validator->validate('192.168.5.32/33'));
$this->assertFalse($validator->validate('192.168.5.32/af'));
$this->assertFalse($validator->validate('192.168.5.32/11/12'));
$validator->subnet = true;
$this->assertTrue($validator->validate('10.0.0.1/24'));
$this->assertTrue($validator->validate('10.0.0.1/0'));
$this->assertTrue($validator->validate('2008:db0::1/64'));
$this->assertFalse($validator->validate('2008:db0::1'));
$this->assertFalse($validator->validate('10.0.0.1'));
$validator->negation = true;
$this->assertTrue($validator->validate('!192.168.5.32/32'));
$this->assertTrue($validator->validate('!2008:fa::0:1/64'));
$this->assertFalse($validator->validate('!!192.168.5.32/32'));
$this->assertFalse($validator->validate('!!2008:fa::0:1/64'));
}
public function testValidateRangeIPv4()
{
$validator = new IpValidator([
Added php-cs-fixer coding standards validation to Travis CI (#14100) * php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
7 years ago
'ranges' => ['10.0.1.0/24'],
]);
$this->assertTrue($validator->validate('10.0.1.2'));
$this->assertFalse($validator->validate('192.5.1.1'));
$validator->ranges = ['10.0.1.0/24'];
$this->assertTrue($validator->validate('10.0.1.2'));
$this->assertFalse($validator->validate('10.0.3.2'));
$validator->ranges = ['!10.0.1.0/24', '10.0.0.0/8', 'localhost'];
$this->assertFalse($validator->validate('10.0.1.2'));
$this->assertTrue($validator->validate('127.0.0.1'));
$validator->subnet = null;
$validator->ranges = ['10.0.1.0/24', '!10.0.0.0/8', 'localhost'];
$this->assertTrue($validator->validate('10.0.1.2'));
$this->assertTrue($validator->validate('127.0.0.1'));
$this->assertTrue($validator->validate('10.0.1.28/28'));
$this->assertFalse($validator->validate('10.2.2.2'));
$this->assertFalse($validator->validate('10.0.1.1/22'));
}
public function testValidateRangeIPv6()
{
$validator = new IpValidator([
Added php-cs-fixer coding standards validation to Travis CI (#14100) * php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
7 years ago
'ranges' => '2001:db0:1:1::/64',
]);
$this->assertTrue($validator->validate('2001:db0:1:1::6'));
$this->assertFalse($validator->validate('2001:db0:1:2::7'));
$validator->ranges = ['2001:db0:1:2::/64'];
$this->assertTrue($validator->validate('2001:db0:1:2::7'));
Added php-cs-fixer coding standards validation to Travis CI (#14100) * php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
7 years ago
$validator->ranges = ['!2001:db0::/32', '2001:db0:1:2::/64'];
$this->assertFalse($validator->validate('2001:db0:1:2::7'));
$validator->subnet = null;
$validator->ranges = array_reverse($validator->ranges);
$this->assertTrue($validator->validate('2001:db0:1:2::7'));
}
public function testValidateRangeIPvBoth()
{
$validator = new IpValidator([
'ranges' => '10.0.1.0/24',
]);
$this->assertTrue($validator->validate('10.0.1.2'));
$this->assertFalse($validator->validate('192.5.1.1'));
$this->assertFalse($validator->validate('2001:db0:1:2::7'));
$validator->ranges = ['10.0.1.0/24', '2001:db0:1:2::/64', '127.0.0.1'];
$this->assertTrue($validator->validate('2001:db0:1:2::7'));
$this->assertTrue($validator->validate('10.0.1.2'));
$this->assertFalse($validator->validate('10.0.3.2'));
$validator->ranges = ['!system', 'any'];
$this->assertFalse($validator->validate('127.0.0.1'));
$this->assertFalse($validator->validate('fe80::face'));
$this->assertTrue($validator->validate('8.8.8.8'));
$validator->subnet = null;
$validator->ranges = ['10.0.1.0/24', '2001:db0:1:2::/64', 'localhost', '!any'];
$this->assertTrue($validator->validate('10.0.1.2'));
$this->assertTrue($validator->validate('2001:db0:1:2::7'));
$this->assertTrue($validator->validate('127.0.0.1'));
$this->assertTrue($validator->validate('10.0.1.28/28'));
$this->assertFalse($validator->validate('10.2.2.2'));
$this->assertFalse($validator->validate('10.0.1.1/22'));
}
public function testValidateAttributeIPv4()
{
$validator = new IpValidator();
$model = new FakedValidationModel();
$validator->subnet = null;
$model->attr_ip = '8.8.8.8';
$validator->validateAttribute($model, 'attr_ip');
$this->assertFalse($model->hasErrors('attr_ip'));
$this->assertEquals('8.8.8.8', $model->attr_ip);
$validator->subnet = false;
$model->attr_ip = '8.8.8.8';
$validator->validateAttribute($model, 'attr_ip');
$this->assertFalse($model->hasErrors('attr_ip'));
$this->assertEquals('8.8.8.8', $model->attr_ip);
$model->attr_ip = '8.8.8.8/24';
$validator->validateAttribute($model, 'attr_ip');
$this->assertTrue($model->hasErrors('attr_ip'));
$this->assertEquals('attr_ip must not be a subnet.', $model->getFirstError('attr_ip'));
$model->clearErrors();
$validator->subnet = null;
$validator->normalize = true;
$model->attr_ip = '8.8.8.8';
$validator->validateAttribute($model, 'attr_ip');
$this->assertFalse($model->hasErrors('attr_ip'));
$this->assertEquals('8.8.8.8/32', $model->attr_ip);
}
public function testValidateAttributeIPv6()
{
$validator = new IpValidator();
$model = new FakedValidationModel();
$validator->subnet = null;
$model->attr_ip = '2001:db0:1:2::1';
$validator->validateAttribute($model, 'attr_ip');
$this->assertFalse($model->hasErrors('attr_ip'));
$this->assertEquals('2001:db0:1:2::1', $model->attr_ip);
$validator->subnet = false;
$model->attr_ip = '2001:db0:1:2::7';
$validator->validateAttribute($model, 'attr_ip');
$this->assertFalse($model->hasErrors('attr_ip'));
$this->assertEquals('2001:db0:1:2::7', $model->attr_ip);
$model->attr_ip = '2001:db0:1:2::7/64';
$validator->validateAttribute($model, 'attr_ip');
$this->assertTrue($model->hasErrors('attr_ip'));
$this->assertEquals('attr_ip must not be a subnet.', $model->getFirstError('attr_ip'));
$model->clearErrors();
$validator->subnet = null;
$validator->normalize = true;
$model->attr_ip = 'fa01::1';
$validator->validateAttribute($model, 'attr_ip');
$this->assertFalse($model->hasErrors('attr_ip'));
$this->assertEquals('fa01::1/128', $model->attr_ip);
$model->attr_ip = 'fa01::1/64';
$validator->validateAttribute($model, 'attr_ip');
$this->assertFalse($model->hasErrors('attr_ip'));
$this->assertEquals('fa01::1/64', $model->attr_ip);
$validator->expandIPv6 = true;
$model->attr_ip = 'fa01::1/64';
$validator->validateAttribute($model, 'attr_ip');
$this->assertFalse($model->hasErrors('attr_ip'));
$this->assertEquals('fa01:0000:0000:0000:0000:0000:0000:0001/64', $model->attr_ip);
$model->attr_ip = 'fa01::2/614';
$validator->validateAttribute($model, 'attr_ip');
$this->assertTrue($model->hasErrors('attr_ip'));
$this->assertEquals('fa01::2/614', $model->attr_ip);
$this->assertEquals('attr_ip contains wrong subnet mask.', $model->getFirstError('attr_ip'));
}
}