Fix validating player name
This commit is contained in:
parent
2d73124fed
commit
35c07cdb63
|
|
@ -13,7 +13,7 @@ class PlayerName implements Rule
|
||||||
switch (option('player_name_rule')) {
|
switch (option('player_name_rule')) {
|
||||||
case 'official':
|
case 'official':
|
||||||
// Mojang's official username rule
|
// Mojang's official username rule
|
||||||
$regexp = '/^[A-Za-z0-9_§]+$/';
|
$regexp = '/^[A-Za-z0-9_]+$/';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'cjk':
|
case 'cjk':
|
||||||
|
|
@ -26,7 +26,7 @@ class PlayerName implements Rule
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return preg_match($regexp, $value);
|
return (bool) preg_match($regexp, $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function message()
|
public function message()
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
- Added badges at texture detail page.
|
- Added badges at texture detail page.
|
||||||
- Added FAQ link at error page.
|
- Added FAQ link at error page.
|
||||||
- Added login with 3rd-party services. (GitHub and Microsoft Live are supported currently.)
|
- Added login with 3rd-party services. (GitHub and Microsoft Live are supported currently.)
|
||||||
- Added support of character "§" for player name.
|
- Added support of character "§" for player name. (Under CJK mode.)
|
||||||
|
|
||||||
## Tweaked
|
## Tweaked
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
- 在材质详情页中显示上传者的 badge
|
- 在材质详情页中显示上传者的 badge
|
||||||
- 在错误页面增加指向 FAQ 页面的链接
|
- 在错误页面增加指向 FAQ 页面的链接
|
||||||
- 第三方登录(目前仅支持 GitHub 和 Microsoft Live)
|
- 第三方登录(目前仅支持 GitHub 和 Microsoft Live)
|
||||||
- 角色名支持字符「§」
|
- 角色名支持字符「§」(需开启「CJK」模式)
|
||||||
|
|
||||||
## 调整
|
## 调整
|
||||||
|
|
||||||
|
|
|
||||||
67
tests/RulesTest/PlayerNameTest.php
Normal file
67
tests/RulesTest/PlayerNameTest.php
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests;
|
||||||
|
|
||||||
|
use App\Rules\PlayerName;
|
||||||
|
|
||||||
|
class PlayerNameTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testOfficialRule()
|
||||||
|
{
|
||||||
|
$rule = new PlayerName();
|
||||||
|
|
||||||
|
$this->assertTrue($rule->passes('', '_name_'));
|
||||||
|
$this->assertTrue($rule->passes('', 'NaN'));
|
||||||
|
|
||||||
|
$this->assertFalse($rule->passes('', '中文'));
|
||||||
|
$this->assertFalse($rule->passes('', '§Me'));
|
||||||
|
$this->assertFalse($rule->passes('', ';'));
|
||||||
|
$this->assertFalse($rule->passes('', '\\'));
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
trans('user.player.player-name-rule.official'),
|
||||||
|
$rule->message()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCJK()
|
||||||
|
{
|
||||||
|
option(['player_name_rule' => 'cjk']);
|
||||||
|
$rule = new PlayerName();
|
||||||
|
|
||||||
|
$this->assertTrue($rule->passes('', '_name_'));
|
||||||
|
$this->assertTrue($rule->passes('', 'NaN'));
|
||||||
|
$this->assertTrue($rule->passes('', '中文'));
|
||||||
|
$this->assertTrue($rule->passes('', '§Me'));
|
||||||
|
|
||||||
|
$this->assertFalse($rule->passes('', ';'));
|
||||||
|
$this->assertFalse($rule->passes('', '\\'));
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
trans('user.player.player-name-rule.cjk'),
|
||||||
|
$rule->message()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCustom()
|
||||||
|
{
|
||||||
|
option(['player_name_rule' => 'custom']);
|
||||||
|
$rule = new PlayerName();
|
||||||
|
|
||||||
|
$this->assertTrue($rule->passes('', '_name_'));
|
||||||
|
$this->assertTrue($rule->passes('', 'NaN'));
|
||||||
|
$this->assertTrue($rule->passes('', '中文'));
|
||||||
|
$this->assertTrue($rule->passes('', '§Me'));
|
||||||
|
$this->assertTrue($rule->passes('', ';'));
|
||||||
|
$this->assertTrue($rule->passes('', '\\'));
|
||||||
|
|
||||||
|
option(['custom_player_name_regexp' => '/[ab]/']);
|
||||||
|
$this->assertTrue($rule->passes('', 'a'));
|
||||||
|
$this->assertFalse($rule->passes('', 'c'));
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
trans('user.player.player-name-rule.custom'),
|
||||||
|
$rule->message()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user