Split tests

This commit is contained in:
Pig Fang 2019-07-03 13:19:57 +08:00
parent eb3124e3a0
commit 3d88d56a9d
2 changed files with 280 additions and 280 deletions

View File

@ -0,0 +1,217 @@
<?php
namespace Tests;
use Cache;
use Redis;
use App\Models\User;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class AdminConfigurationsTest extends BrowserKitTestCase
{
use DatabaseTransactions;
protected function setUp(): void
{
// Do not use `WithoutMiddleware` trait
parent::setUp();
$this->actAs('admin');
}
public function testCustomize()
{
// Change color
$this->visit('/admin/customize')
->select('skin-purple', 'color')
->press('submit_color');
$this->assertEquals('skin-purple', option('color_scheme'));
$this->visit('/admin/customize')
->type('url', 'home_pic_url')
->type('url', 'favicon_url')
->check('transparent_navbar')
->select('1', 'copyright_prefer')
->type('copyright', 'copyright_text')
->press('submit_homepage');
$this->assertEquals('url', option('home_pic_url'));
$this->assertEquals('url', option('favicon_url'));
$this->assertTrue(option('transparent_navbar'));
$this->assertEquals('1', option('copyright_prefer'));
$this->assertEquals('copyright', option('copyright_text'));
$this->visit('/admin/customize')
->type('css', 'custom_css')
->type('js', 'custom_js')
->press('submit_customJsCss');
$this->assertEquals('css', option('custom_css'));
$this->assertEquals('js', option('custom_js'));
}
public function testScore()
{
$this->visit('/admin/score')
->type('4', 'score_per_storage')
->type('6', 'private_score_per_storage')
->type('8', 'score_per_closet_item')
->uncheck('return_score')
->type('12', 'score_per_player')
->type('500', 'user_initial_score')
->press('submit_rate');
$this->assertEquals('4', option('score_per_storage'));
$this->assertEquals('6', option('private_score_per_storage'));
$this->assertEquals('8', option('score_per_closet_item'));
$this->assertFalse(option('return_score'));
$this->assertEquals('12', option('score_per_player'));
$this->assertEquals('500', option('user_initial_score'));
$this->visit('/admin/score')
->type('1', 'reporter_score_modification')
->type('2', 'reporter_reward_score')
->press('submit_report');
$this->assertEquals('1', option('reporter_score_modification'));
$this->assertEquals('2', option('reporter_reward_score'));
$this->visit('/admin/score')
->type('233', 'sign_score_from')
->type('666', 'sign_score_to')
->type('7', 'sign_gap_time')
->check('sign_after_zero')
->press('submit_sign');
$this->assertEquals('233,666', option('sign_score'));
$this->assertEquals('7', option('sign_gap_time'));
$this->assertTrue(option('sign_after_zero'));
$this->visit('/admin/score')
->type('1', 'score_award_per_texture')
->uncheck('take_back_scores_after_deletion')
->type('1', 'score_award_per_like')
->press('submit_sharing');
$this->assertEquals('1', option('score_award_per_texture'));
$this->assertFalse(option('take_back_scores_after_deletion'));
$this->assertEquals('1', option('score_award_per_like'));
}
public function testOptions()
{
$this->visit('/admin/options')
->type('My Site', 'site_name')
->type('hi', 'site_description')
->type('http://blessing.skin/', 'site_url')
->uncheck('user_can_register')
->type('8', 'regs_per_ip')
->select('1', 'ip_get_method')
->type('2048', 'max_upload_file_size')
->see(trans(
'options.general.max_upload_file_size.hint',
['size' => ini_get('upload_max_filesize')]
))
->select('cjk', 'player_name_rule')
->type('/^([0-9]+)$/', 'custom_player_name_regexp')
->select('1', 'api_type')
->check('auto_del_invalid_texture')
->uncheck('allow_downloading_texture')
->select('404', 'status_code_for_private')
->type('abc', 'texture_name_regexp')
->type('policy', 'content_policy')
->type('code', 'comment_script')
->press('submit_general');
$this->assertEquals('My Site', option_localized('site_name'));
$this->assertEquals('hi', option_localized('site_description'));
$this->assertEquals('http://blessing.skin', option('site_url'));
$this->assertFalse(option('user_can_register'));
$this->assertEquals('8', option('regs_per_ip'));
$this->assertEquals('1', option('ip_get_method'));
$this->assertEquals('2048', option('max_upload_file_size'));
$this->assertEquals('cjk', option('player_name_rule'));
$this->assertEquals('/^([0-9]+)$/', option('custom_player_name_regexp'));
$this->assertEquals('1', option('api_type'));
$this->assertTrue(option('auto_del_invalid_texture'));
$this->assertFalse(option('allow_downloading_texture'));
$this->assertEquals('404', option('status_code_for_private'));
$this->assertEquals('abc', option('texture_name_regexp'));
$this->assertEquals('policy', option_localized('content_policy'));
$this->assertEquals('code', option('comment_script'));
$this->visit('/admin/options')
->type('http://blessing.skin/index.php', 'site_url')
->press('submit_general');
$this->assertEquals('http://blessing.skin', option('site_url'));
$this->visit('/admin/options')
->type('announcement', 'announcement')
->press('submit_announ');
$this->assertEquals('announcement', option_localized('announcement'));
$this->visit('/admin/options')
->type('kw', 'meta_keywords')
->type('desc', 'meta_description')
->type('<!-- nothing -->', 'meta_extras')
->press('submit_meta');
$this->visit('/')
->see('<meta name="keywords" content="kw">')
->see('<meta name="description" content="desc">')
->see('<!-- nothing -->');
$this->visit('/admin/options')
->type('key', 'recaptcha_sitekey')
->type('secret', 'recaptcha_secretkey')
->check('recaptcha_invisible')
->press('submit_recaptcha');
$this->assertEquals('key', option('recaptcha_sitekey'));
$this->assertEquals('secret', option('recaptcha_secretkey'));
$this->assertTrue(option('recaptcha_invisible'));
}
public function testResource()
{
$this->visit('/admin/resource')
->check('force_ssl')
->uncheck('auto_detect_asset_url')
->check('return_204_when_notfound')
->type('0', 'cache_expire_time')
->type('url/', 'cdn_address')
->press('submit_resources');
$this->assertTrue(option('force_ssl'));
$this->assertFalse(option('auto_detect_asset_url'));
$this->assertTrue(option('return_204_when_notfound'));
$this->assertEquals('0', option('cache_expire_time'));
$this->visit('/')->see('url/app/');
$this->visit('/admin/resource')
->type('', 'cdn_address')
->press('submit_resources');
$this->visit('/')->dontSee('url/app/index.js');
$this->visit('/admin/resource')
->check('enable_redis')
->press('submit_redis');
$this->assertTrue(option('enable_redis'));
Redis::shouldReceive('ping')->once()->andReturn(true);
$this->visit('/admin/resource')->see(trans('options.redis.connect.success'));
Redis::shouldReceive('ping')->once()->andThrow(new \Exception('fake'));
$this->visit('/admin/resource')
->see(trans('options.redis.connect.failed', ['msg' => 'fake']));
option(['enable_redis' => false]);
$this->visit('/admin/resource')
->see(trans('options.cache.driver', ['driver' => config('cache.default')]))
->check('enable_avatar_cache')
->check('enable_preview_cache')
->check('enable_json_cache')
->check('enable_notfound_cache')
->press('submit_cache');
$this->assertTrue(option('enable_avatar_cache'));
$this->assertTrue(option('enable_preview_cache'));
$this->assertTrue(option('enable_json_cache'));
$this->assertTrue(option('enable_notfound_cache'));
Cache::shouldReceive('flush');
$this->visit('/admin/resource')
->click(trans('options.cache.clear'))
->see(trans('options.cache.cleared'));
}
}

View File

@ -2,8 +2,6 @@
namespace Tests; namespace Tests;
use Cache;
use Redis;
use App\Models\User; use App\Models\User;
use App\Models\Player; use App\Models\Player;
use App\Models\Texture; use App\Models\Texture;
@ -11,7 +9,7 @@ use Illuminate\Support\Str;
use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Foundation\Testing\DatabaseTransactions;
class AdminControllerTest extends BrowserKitTestCase class AdminControllerTest extends TestCase
{ {
use DatabaseTransactions; use DatabaseTransactions;
@ -27,218 +25,24 @@ class AdminControllerTest extends BrowserKitTestCase
factory(User::class)->create(); factory(User::class)->create();
factory(Texture::class)->create(); factory(Texture::class)->create();
$this->getJson('/admin/chart') $this->getJson('/admin/chart')
->seeJson(['labels' => [ ->assertJson(['labels' => [
trans('admin.index.user-registration'), trans('admin.index.user-registration'),
trans('admin.index.texture-uploads'), trans('admin.index.texture-uploads'),
]]) ]])
->seeJsonStructure(['labels', 'xAxis', 'data']); ->assertJsonStructure(['labels', 'xAxis', 'data']);
} }
public function testCustomize()
{
// Change color
$this->visit('/admin/customize')
->select('skin-purple', 'color')
->press('submit_color');
$this->assertEquals('skin-purple', option('color_scheme'));
$this->visit('/admin/customize')
->type('url', 'home_pic_url')
->type('url', 'favicon_url')
->check('transparent_navbar')
->select('1', 'copyright_prefer')
->type('copyright', 'copyright_text')
->press('submit_homepage');
$this->assertEquals('url', option('home_pic_url'));
$this->assertEquals('url', option('favicon_url'));
$this->assertTrue(option('transparent_navbar'));
$this->assertEquals('1', option('copyright_prefer'));
$this->assertEquals('copyright', option('copyright_text'));
$this->visit('/admin/customize')
->type('css', 'custom_css')
->type('js', 'custom_js')
->press('submit_customJsCss');
$this->assertEquals('css', option('custom_css'));
$this->assertEquals('js', option('custom_js'));
}
public function testScore()
{
$this->visit('/admin/score')
->type('4', 'score_per_storage')
->type('6', 'private_score_per_storage')
->type('8', 'score_per_closet_item')
->uncheck('return_score')
->type('12', 'score_per_player')
->type('500', 'user_initial_score')
->press('submit_rate');
$this->assertEquals('4', option('score_per_storage'));
$this->assertEquals('6', option('private_score_per_storage'));
$this->assertEquals('8', option('score_per_closet_item'));
$this->assertFalse(option('return_score'));
$this->assertEquals('12', option('score_per_player'));
$this->assertEquals('500', option('user_initial_score'));
$this->visit('/admin/score')
->type('1', 'reporter_score_modification')
->type('2', 'reporter_reward_score')
->press('submit_report');
$this->assertEquals('1', option('reporter_score_modification'));
$this->assertEquals('2', option('reporter_reward_score'));
$this->visit('/admin/score')
->type('233', 'sign_score_from')
->type('666', 'sign_score_to')
->type('7', 'sign_gap_time')
->check('sign_after_zero')
->press('submit_sign');
$this->assertEquals('233,666', option('sign_score'));
$this->assertEquals('7', option('sign_gap_time'));
$this->assertTrue(option('sign_after_zero'));
$this->visit('/admin/score')
->type('1', 'score_award_per_texture')
->uncheck('take_back_scores_after_deletion')
->type('1', 'score_award_per_like')
->press('submit_sharing');
$this->assertEquals('1', option('score_award_per_texture'));
$this->assertFalse(option('take_back_scores_after_deletion'));
$this->assertEquals('1', option('score_award_per_like'));
}
public function testOptions()
{
$this->visit('/admin/options')
->type('My Site', 'site_name')
->type('hi', 'site_description')
->type('http://blessing.skin/', 'site_url')
->uncheck('user_can_register')
->type('8', 'regs_per_ip')
->select('1', 'ip_get_method')
->type('2048', 'max_upload_file_size')
->see(trans(
'options.general.max_upload_file_size.hint',
['size' => ini_get('upload_max_filesize')]
))
->select('cjk', 'player_name_rule')
->type('/^([0-9]+)$/', 'custom_player_name_regexp')
->select('1', 'api_type')
->check('auto_del_invalid_texture')
->uncheck('allow_downloading_texture')
->select('404', 'status_code_for_private')
->type('abc', 'texture_name_regexp')
->type('policy', 'content_policy')
->type('code', 'comment_script')
->press('submit_general');
$this->assertEquals('My Site', option_localized('site_name'));
$this->assertEquals('hi', option_localized('site_description'));
$this->assertEquals('http://blessing.skin', option('site_url'));
$this->assertFalse(option('user_can_register'));
$this->assertEquals('8', option('regs_per_ip'));
$this->assertEquals('1', option('ip_get_method'));
$this->assertEquals('2048', option('max_upload_file_size'));
$this->assertEquals('cjk', option('player_name_rule'));
$this->assertEquals('/^([0-9]+)$/', option('custom_player_name_regexp'));
$this->assertEquals('1', option('api_type'));
$this->assertTrue(option('auto_del_invalid_texture'));
$this->assertFalse(option('allow_downloading_texture'));
$this->assertEquals('404', option('status_code_for_private'));
$this->assertEquals('abc', option('texture_name_regexp'));
$this->assertEquals('policy', option_localized('content_policy'));
$this->assertEquals('code', option('comment_script'));
$this->visit('/admin/options')
->type('http://blessing.skin/index.php', 'site_url')
->press('submit_general');
$this->assertEquals('http://blessing.skin', option('site_url'));
$this->visit('/admin/options')
->type('announcement', 'announcement')
->press('submit_announ');
$this->assertEquals('announcement', option_localized('announcement'));
$this->visit('/admin/options')
->type('kw', 'meta_keywords')
->type('desc', 'meta_description')
->type('<!-- nothing -->', 'meta_extras')
->press('submit_meta');
$this->visit('/')
->see('<meta name="keywords" content="kw">')
->see('<meta name="description" content="desc">')
->see('<!-- nothing -->');
$this->visit('/admin/options')
->type('key', 'recaptcha_sitekey')
->type('secret', 'recaptcha_secretkey')
->check('recaptcha_invisible')
->press('submit_recaptcha');
$this->assertEquals('key', option('recaptcha_sitekey'));
$this->assertEquals('secret', option('recaptcha_secretkey'));
$this->assertTrue(option('recaptcha_invisible'));
}
public function testResource()
{
$this->visit('/admin/resource')
->check('force_ssl')
->uncheck('auto_detect_asset_url')
->check('return_204_when_notfound')
->type('0', 'cache_expire_time')
->type('url/', 'cdn_address')
->press('submit_resources');
$this->assertTrue(option('force_ssl'));
$this->assertFalse(option('auto_detect_asset_url'));
$this->assertTrue(option('return_204_when_notfound'));
$this->assertEquals('0', option('cache_expire_time'));
$this->visit('/')->see('url/app/');
$this->visit('/admin/resource')
->type('', 'cdn_address')
->press('submit_resources');
$this->visit('/')->dontSee('url/app/index.js');
$this->visit('/admin/resource')
->check('enable_redis')
->press('submit_redis');
$this->assertTrue(option('enable_redis'));
Redis::shouldReceive('ping')->once()->andReturn(true);
$this->visit('/admin/resource')->see(trans('options.redis.connect.success'));
Redis::shouldReceive('ping')->once()->andThrow(new \Exception('fake'));
$this->visit('/admin/resource')
->see(trans('options.redis.connect.failed', ['msg' => 'fake']));
option(['enable_redis' => false]);
$this->visit('/admin/resource')
->see(trans('options.cache.driver', ['driver' => config('cache.default')]))
->check('enable_avatar_cache')
->check('enable_preview_cache')
->check('enable_json_cache')
->check('enable_notfound_cache')
->press('submit_cache');
$this->assertTrue(option('enable_avatar_cache'));
$this->assertTrue(option('enable_preview_cache'));
$this->assertTrue(option('enable_json_cache'));
$this->assertTrue(option('enable_notfound_cache'));
Cache::shouldReceive('flush');
$this->visit('/admin/resource')
->click(trans('options.cache.clear'))
->see(trans('options.cache.cleared'));
}
public function testUsers() public function testUsers()
{ {
$this->visit('/admin/users')->see(trans('general.user-manage')); $this->get('/admin/users')->assertSee(trans('general.user-manage'));
} }
public function testGetUserData() public function testGetUserData()
{ {
$this->getJson('/admin/user-data') $this->getJson('/admin/user-data')
->seeJsonStructure([ ->assertJsonStructure([
'data' => [[ 'data' => [[
'uid', 'uid',
'email', 'email',
@ -253,7 +57,7 @@ class AdminControllerTest extends BrowserKitTestCase
$user = factory(User::class)->create(); $user = factory(User::class)->create();
$this->getJson('/admin/user-data?uid='.$user->uid) $this->getJson('/admin/user-data?uid='.$user->uid)
->seeJsonSubset([ ->assertJson([
'data' => [[ 'data' => [[
'uid' => $user->uid, 'uid' => $user->uid,
'email' => $user->email, 'email' => $user->email,
@ -267,7 +71,7 @@ class AdminControllerTest extends BrowserKitTestCase
public function testPlayers() public function testPlayers()
{ {
$this->visit('/admin/players')->see(trans('general.player-manage')); $this->get('/admin/players')->assertSee(trans('general.player-manage'));
} }
public function testGetPlayerData() public function testGetPlayerData()
@ -276,7 +80,7 @@ class AdminControllerTest extends BrowserKitTestCase
$user = $player->user; $user = $player->user;
$this->getJson('/admin/player-data') $this->getJson('/admin/player-data')
->seeJsonStructure([ ->assertJsonStructure([
'data' => [[ 'data' => [[
'pid', 'pid',
'uid', 'uid',
@ -288,7 +92,7 @@ class AdminControllerTest extends BrowserKitTestCase
]); ]);
$this->getJson('/admin/player-data?uid='.$user->uid) $this->getJson('/admin/player-data?uid='.$user->uid)
->seeJsonSubset([ ->assertJson([
'data' => [[ 'data' => [[
'pid' => $player->pid, 'pid' => $player->pid,
'uid' => $user->uid, 'uid' => $user->uid,
@ -303,7 +107,7 @@ class AdminControllerTest extends BrowserKitTestCase
{ {
// Operate on an not-existed user // Operate on an not-existed user
$this->postJson('/admin/users') $this->postJson('/admin/users')
->seeJson([ ->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.users.operations.non-existent'), 'message' => trans('admin.users.operations.non-existent'),
]); ]);
@ -312,7 +116,7 @@ class AdminControllerTest extends BrowserKitTestCase
// Operate without `action` field // Operate without `action` field
$this->postJson('/admin/users', ['uid' => $user->uid]) $this->postJson('/admin/users', ['uid' => $user->uid])
->seeJson([ ->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.users.operations.invalid'), 'message' => trans('admin.users.operations.invalid'),
]); ]);
@ -320,7 +124,7 @@ class AdminControllerTest extends BrowserKitTestCase
// An admin operating on a super admin should be forbidden // An admin operating on a super admin should be forbidden
$superAdmin = factory(User::class, 'superAdmin')->create(); $superAdmin = factory(User::class, 'superAdmin')->create();
$this->postJson('/admin/users', ['uid' => $superAdmin->uid]) $this->postJson('/admin/users', ['uid' => $superAdmin->uid])
->seeJson([ ->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.users.operations.no-permission'), 'message' => trans('admin.users.operations.no-permission'),
]); ]);
@ -328,22 +132,20 @@ class AdminControllerTest extends BrowserKitTestCase
// Action is `email` but without `email` field // Action is `email` but without `email` field
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'email'], ['uid' => $user->uid, 'action' => 'email']
['Accept' => 'application/json'] )->assertJsonValidationErrors(['email']);
)->seeJsonStructure(['errors' => ['email']]);
// Action is `email` but with an invalid email address // Action is `email` but with an invalid email address
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'email', 'email' => 'invalid'], ['uid' => $user->uid, 'action' => 'email', 'email' => 'invalid']
['Accept' => 'application/json'] )->assertJsonValidationErrors(['email']);
)->seeJsonStructure(['errors' => ['email']]);
// Using an existed email address // Using an existed email address
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'email', 'email' => $superAdmin->email] ['uid' => $user->uid, 'action' => 'email', 'email' => $superAdmin->email]
)->seeJson([ )->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.users.operations.email.existed', ['email' => $superAdmin->email]), 'message' => trans('admin.users.operations.email.existed', ['email' => $superAdmin->email]),
]); ]);
@ -352,11 +154,11 @@ class AdminControllerTest extends BrowserKitTestCase
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'email', 'email' => 'a@b.c'] ['uid' => $user->uid, 'action' => 'email', 'email' => 'a@b.c']
)->seeJson([ )->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.users.operations.email.success'), 'message' => trans('admin.users.operations.email.success'),
]); ]);
$this->seeInDatabase('users', [ $this->assertDatabaseHas('users', [
'uid' => $user->uid, 'uid' => $user->uid,
'email' => 'a@b.c', 'email' => 'a@b.c',
]); ]);
@ -365,11 +167,11 @@ class AdminControllerTest extends BrowserKitTestCase
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'verification'] ['uid' => $user->uid, 'action' => 'verification']
)->seeJson([ )->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.users.operations.verification.success'), 'message' => trans('admin.users.operations.verification.success'),
]); ]);
$this->seeInDatabase('users', [ $this->assertDatabaseHas('users', [
'uid' => $user->uid, 'uid' => $user->uid,
'verified' => 0, 'verified' => 0,
]); ]);
@ -377,26 +179,24 @@ class AdminControllerTest extends BrowserKitTestCase
// Action is `nickname` but without `nickname` field // Action is `nickname` but without `nickname` field
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'nickname'], ['uid' => $user->uid, 'action' => 'nickname']
['Accept' => 'application/json'] )->assertJsonValidationErrors(['nickname']);
)->seeJsonStructure(['errors' => ['nickname']]);
// Action is `nickname` but with an invalid nickname // Action is `nickname` but with an invalid nickname
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'nickname', 'nickname' => '\\'], ['uid' => $user->uid, 'action' => 'nickname', 'nickname' => '\\']
['Accept' => 'application/json'] )->assertJsonValidationErrors(['nickname']);
)->seeJsonStructure(['errors' => ['nickname']]);
// Set nickname successfully // Set nickname successfully
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'nickname', 'nickname' => 'nickname'] ['uid' => $user->uid, 'action' => 'nickname', 'nickname' => 'nickname']
)->seeJson([ )->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.users.operations.nickname.success', ['new' => 'nickname']), 'message' => trans('admin.users.operations.nickname.success', ['new' => 'nickname']),
]); ]);
$this->seeInDatabase('users', [ $this->assertDatabaseHas('users', [
'uid' => $user->uid, 'uid' => $user->uid,
'nickname' => 'nickname', 'nickname' => 'nickname',
]); ]);
@ -404,29 +204,26 @@ class AdminControllerTest extends BrowserKitTestCase
// Action is `password` but without `password` field // Action is `password` but without `password` field
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'password'], ['uid' => $user->uid, 'action' => 'password']
['Accept' => 'application/json'] )->assertJsonValidationErrors(['password']);
)->seeJsonStructure(['errors' => ['password']]);
// Set a too short password // Set a too short password
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'password', 'password' => '1'], ['uid' => $user->uid, 'action' => 'password', 'password' => '1']
['Accept' => 'application/json'] )->assertJsonValidationErrors(['password']);
)->seeJsonStructure(['errors' => ['password']]);
// Set a too long password // Set a too long password
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'password', 'password' => Str::random(17)], ['uid' => $user->uid, 'action' => 'password', 'password' => Str::random(17)]
['Accept' => 'application/json'] )->assertJsonValidationErrors(['password']);
)->seeJsonStructure(['errors' => ['password']]);
// Set password successfully // Set password successfully
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'password', 'password' => '12345678'] ['uid' => $user->uid, 'action' => 'password', 'password' => '12345678']
)->seeJson([ )->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.users.operations.password.success'), 'message' => trans('admin.users.operations.password.success'),
]); ]);
@ -436,26 +233,24 @@ class AdminControllerTest extends BrowserKitTestCase
// Action is `score` but without `score` field // Action is `score` but without `score` field
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'score'], ['uid' => $user->uid, 'action' => 'score']
['Accept' => 'application/json'] )->assertJsonValidationErrors(['score']);
)->seeJsonStructure(['errors' => ['score']]);
// Action is `score` but with an not-an-integer value // Action is `score` but with an not-an-integer value
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'score', 'score' => 'string'], ['uid' => $user->uid, 'action' => 'score', 'score' => 'string']
['Accept' => 'application/json'] )->assertJsonValidationErrors(['score']);
)->seeJsonStructure(['errors' => ['score']]);
// Set score successfully // Set score successfully
$this->postJson( $this->postJson(
'/admin/users', '/admin/users',
['uid' => $user->uid, 'action' => 'score', 'score' => 123] ['uid' => $user->uid, 'action' => 'score', 'score' => 123]
)->seeJson([ )->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.users.operations.score.success'), 'message' => trans('admin.users.operations.score.success'),
]); ]);
$this->seeInDatabase('users', [ $this->assertDatabaseHas('users', [
'uid' => $user->uid, 'uid' => $user->uid,
'score' => 123, 'score' => 123,
]); ]);
@ -465,7 +260,7 @@ class AdminControllerTest extends BrowserKitTestCase
'uid' => $user->uid, 'uid' => $user->uid,
'action' => 'permission', 'action' => 'permission',
'permission' => -2, 'permission' => -2,
])->seeJsonStructure(['errors' => ['permission']]); ])->assertJsonValidationErrors(['permission']);
$user = User::find($user->uid); $user = User::find($user->uid);
$this->assertEquals(User::NORMAL, $user->permission); $this->assertEquals(User::NORMAL, $user->permission);
@ -474,7 +269,7 @@ class AdminControllerTest extends BrowserKitTestCase
'uid' => $user->uid, 'uid' => $user->uid,
'action' => 'permission', 'action' => 'permission',
'permission' => -1, 'permission' => -1,
])->seeJson([ ])->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.users.operations.permission'), 'message' => trans('admin.users.operations.permission'),
]); ]);
@ -483,7 +278,7 @@ class AdminControllerTest extends BrowserKitTestCase
// Delete a user // Delete a user
$this->postJson('/admin/users', ['uid' => $user->uid, 'action' => 'delete']) $this->postJson('/admin/users', ['uid' => $user->uid, 'action' => 'delete'])
->seeJson([ ->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.users.operations.delete.success'), 'message' => trans('admin.users.operations.delete.success'),
]); ]);
@ -496,7 +291,7 @@ class AdminControllerTest extends BrowserKitTestCase
// Operate on a not-existed player // Operate on a not-existed player
$this->postJson('/admin/players', ['pid' => -1]) $this->postJson('/admin/players', ['pid' => -1])
->seeJson([ ->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('general.unexistent-player'), 'message' => trans('general.unexistent-player'),
]); ]);
@ -506,7 +301,7 @@ class AdminControllerTest extends BrowserKitTestCase
$this->postJson( $this->postJson(
'/admin/players', '/admin/players',
['pid' => factory(Player::class)->create(['uid' => $admin->uid])->pid] ['pid' => factory(Player::class)->create(['uid' => $admin->uid])->pid]
)->seeJson([ )->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.players.no-permission'), 'message' => trans('admin.players.no-permission'),
]); ]);
@ -514,7 +309,7 @@ class AdminControllerTest extends BrowserKitTestCase
$this->postJson( $this->postJson(
'/admin/players', '/admin/players',
['pid' => factory(Player::class)->create(['uid' => $superAdmin->uid])->pid] ['pid' => factory(Player::class)->create(['uid' => $superAdmin->uid])->pid]
)->seeJson([ )->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.players.no-permission'), 'message' => trans('admin.players.no-permission'),
]); ]);
@ -522,7 +317,7 @@ class AdminControllerTest extends BrowserKitTestCase
$this->actingAs($admin)->postJson( $this->actingAs($admin)->postJson(
'/admin/players', '/admin/players',
['pid' => factory(Player::class)->create(['uid' => $admin->uid])->pid] ['pid' => factory(Player::class)->create(['uid' => $admin->uid])->pid]
)->seeJson([ )->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.users.operations.invalid'), 'message' => trans('admin.users.operations.invalid'),
]); ]);
@ -531,18 +326,14 @@ class AdminControllerTest extends BrowserKitTestCase
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'texture', 'action' => 'texture',
], [ ])->assertJsonValidationErrors(['type']);
'Accept' => 'application/json',
])->seeJsonStructure(['errors' => ['type']]);
// Change texture without `tid` field // Change texture without `tid` field
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'texture', 'action' => 'texture',
'type' => 'skin', 'type' => 'skin',
], [ ])->assertJsonValidationErrors(['tid']);
'Accept' => 'application/json',
])->seeJsonStructure(['errors' => ['tid']]);
// Change texture with a not-integer value // Change texture with a not-integer value
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
@ -550,9 +341,7 @@ class AdminControllerTest extends BrowserKitTestCase
'action' => 'texture', 'action' => 'texture',
'type' => 'skin', 'type' => 'skin',
'tid' => 'string', 'tid' => 'string',
], [ ])->assertJsonValidationErrors(['tid']);
'Accept' => 'application/json',
])->seeJsonStructure(['errors' => ['tid']]);
// Invalid texture // Invalid texture
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
@ -560,7 +349,7 @@ class AdminControllerTest extends BrowserKitTestCase
'action' => 'texture', 'action' => 'texture',
'type' => 'skin', 'type' => 'skin',
'tid' => -1, 'tid' => -1,
])->seeJson([ ])->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.players.textures.non-existent', ['tid' => -1]), 'message' => trans('admin.players.textures.non-existent', ['tid' => -1]),
]); ]);
@ -574,7 +363,7 @@ class AdminControllerTest extends BrowserKitTestCase
'action' => 'texture', 'action' => 'texture',
'type' => 'skin', 'type' => 'skin',
'tid' => $skin->tid, 'tid' => $skin->tid,
])->seeJson([ ])->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.players.textures.success', ['player' => $player->name]), 'message' => trans('admin.players.textures.success', ['player' => $player->name]),
]); ]);
@ -587,7 +376,7 @@ class AdminControllerTest extends BrowserKitTestCase
'action' => 'texture', 'action' => 'texture',
'type' => 'cape', 'type' => 'cape',
'tid' => $cape->tid, 'tid' => $cape->tid,
])->seeJson([ ])->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.players.textures.success', ['player' => $player->name]), 'message' => trans('admin.players.textures.success', ['player' => $player->name]),
]); ]);
@ -600,7 +389,7 @@ class AdminControllerTest extends BrowserKitTestCase
'action' => 'texture', 'action' => 'texture',
'type' => 'skin', 'type' => 'skin',
'tid' => 0, 'tid' => 0,
])->seeJson([ ])->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.players.textures.success', ['player' => $player->name]), 'message' => trans('admin.players.textures.success', ['player' => $player->name]),
]); ]);
@ -613,7 +402,7 @@ class AdminControllerTest extends BrowserKitTestCase
'action' => 'texture', 'action' => 'texture',
'type' => 'cape', 'type' => 'cape',
'tid' => 0, 'tid' => 0,
])->seeJson([ ])->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.players.textures.success', ['player' => $player->name]), 'message' => trans('admin.players.textures.success', ['player' => $player->name]),
]); ]);
@ -624,25 +413,21 @@ class AdminControllerTest extends BrowserKitTestCase
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'owner', 'action' => 'owner',
], [ ])->assertJsonValidationErrors(['uid']);
'Accept' => 'application/json',
])->seeJsonStructure(['errors' => ['uid']]);
// Change owner with a not-integer `uid` value // Change owner with a not-integer `uid` value
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'owner', 'action' => 'owner',
'uid' => 'string', 'uid' => 'string',
], [ ])->assertJsonValidationErrors(['uid']);
'Accept' => 'application/json',
])->seeJsonStructure(['errors' => ['uid']]);
// Change owner to a not-existed user // Change owner to a not-existed user
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'owner', 'action' => 'owner',
'uid' => -1, 'uid' => -1,
])->seeJson([ ])->assertJson([
'code' => 1, 'code' => 1,
'message' => trans('admin.users.operations.non-existent'), 'message' => trans('admin.users.operations.non-existent'),
]); ]);
@ -653,7 +438,7 @@ class AdminControllerTest extends BrowserKitTestCase
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'owner', 'action' => 'owner',
'uid' => $user->uid, 'uid' => $user->uid,
])->seeJson([ ])->assertJson([
'code' => 0, 'code' => 0,
'message' => trans( 'message' => trans(
'admin.players.owner.success', 'admin.players.owner.success',
@ -665,16 +450,14 @@ class AdminControllerTest extends BrowserKitTestCase
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'name', 'action' => 'name',
], [ ])->assertJsonValidationErrors(['name']);
'Accept' => 'application/json',
])->seeJsonStructure(['errors' => ['name']]);
// Rename a player successfully // Rename a player successfully
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'name', 'action' => 'name',
'name' => 'new_name', 'name' => 'new_name',
])->seeJson([ ])->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.players.name.success', ['player' => 'new_name']), 'message' => trans('admin.players.name.success', ['player' => 'new_name']),
]); ]);
@ -685,7 +468,7 @@ class AdminControllerTest extends BrowserKitTestCase
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'name', 'action' => 'name',
'name' => 'abc', 'name' => 'abc',
])->seeJson(['code' => 0]); ])->assertJson(['code' => 0]);
$player->refresh(); $player->refresh();
$this->assertEquals('abc', $player->user->nickname); $this->assertEquals('abc', $player->user->nickname);
@ -693,7 +476,7 @@ class AdminControllerTest extends BrowserKitTestCase
$this->postJson('/admin/players', [ $this->postJson('/admin/players', [
'pid' => $player->pid, 'pid' => $player->pid,
'action' => 'delete', 'action' => 'delete',
])->seeJson([ ])->assertJson([
'code' => 0, 'code' => 0,
'message' => trans('admin.players.delete.success'), 'message' => trans('admin.players.delete.success'),
]); ]);