wiki.techinc.nl/tests/phpunit/integration/includes/htmlform/HTMLUserTextFieldTest.php
Brian Wolff 07cdef809c Deprecate creating HTMLFormFields without reference to parent form
Currently it is documented that mParent in HTMLFormField may be null.
This can happen if the form element is constructed manually via
new, instead of the normal way via HTMLForm methods.

As it stands, much of the code assumes that mParent is always set
despite the documentation. Lets mark creating form fields without
parent set as deprecated. The current situation seems like a
recipe for bugs, and after the deprecation period this would allow
us to simplify some of the HTMLFormField code.

Bug: T326456
Change-Id: Ica0740049f0a3e8ec764903c5b71825e4d628a3f
Depends-On: I15a39605e3eec8a5c265c4a331039fa906eda036
2023-01-08 18:20:16 -08:00

88 lines
1.9 KiB
PHP

<?php
/**
* @covers HTMLUserTextFieldTest
*/
class HTMLUserTextFieldTest extends MediaWikiIntegrationTestCase {
/**
* @dataProvider provideInputs
*/
public function testInputs( array $config, string $value, $expected ) {
$htmlForm = $this->createMock( HTMLForm::class );
$htmlForm->method( 'msg' )
->willReturnCallback( static function ( ...$args ) {
return call_user_func_array( 'wfMessage', $args );
} );
$field = new HTMLUserTextField( $config + [ 'fieldname' => 'foo', 'parent' => $htmlForm ] );
$result = $field->validate( $value, [ 'foo' => $value ] );
if ( $result instanceof Message ) {
$this->assertSame( $expected, $result->getKey() );
} else {
$this->assertSame( $expected, $result );
}
}
public function provideInputs() {
return [
'valid username' => [
[],
'SomeUser',
true
],
'invalid username' => [
[],
'<SomeUser>',
'htmlform-user-not-valid'
],
'valid IP' => [
[ 'ipallowed' => true ],
'1.2.3.4',
true
],
'valid IP, but not allowed' => [
[ 'ipallowed' => false ],
'1.2.3.4',
'htmlform-user-not-valid'
],
'invalid IP' => [
[ 'ipallowed' => true ],
'1.2.3.456',
'htmlform-user-not-valid'
],
'valid IP range' => [
[ 'iprange' => true ],
'1.2.3.4/30',
true
],
'valid IP range, but not allowed' => [
[ 'iprange' => false ],
'1.2.3.4/30',
'htmlform-user-not-valid'
],
'invalid IP range (bad syntax)' => [
[ 'iprange' => true ],
'1.2.3.4/x',
'htmlform-user-not-valid'
],
'invalid IP range (exceeds limits)' => [
[
'iprange' => true,
'iprangelimits' => [
'IPv4' => 11,
'IPv6' => 11,
],
],
'1.2.3.4/10',
'ip_range_exceeded'
],
'valid username, but does not exist' => [
[ 'exists' => true ],
'SomeUser',
'htmlform-user-not-exists'
],
];
}
}