OperationLogTest.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace Tests\Browser\Cases;
  3. use Dcat\Admin\Models\OperationLog;
  4. use Laravel\Dusk\Browser;
  5. use Tests\Browser\Components\Grid\Actions\BatchDelete;
  6. use Tests\Browser\Components\Grid\Actions\Delete;
  7. use Tests\Browser\Components\Grid\BatchActions;
  8. use Tests\Browser\Components\Grid\RowSelector;
  9. use Tests\TestCase;
  10. /**
  11. * 操作日志功能测试.
  12. *
  13. * @group log
  14. */
  15. class OperationLogTest extends TestCase
  16. {
  17. public function testIndex()
  18. {
  19. $this->browse(function (Browser $browser) {
  20. $browser->visit(admin_base_path('auth/menu'))
  21. ->assertPathIs(admin_base_path('auth/menu'))
  22. ->visit(admin_base_path('auth/logs'))
  23. ->assertSeeText(__('admin.operation_log'))
  24. ->assertSeeText(__('admin.list'))
  25. ->assertSeeText(__('admin.refresh'))
  26. ->assertSeeText(__('admin.filter'))
  27. ->assertSeeText('ID')
  28. ->assertSeeText((__('admin.user')))
  29. ->assertSeeText((__('admin.method')))
  30. ->assertSeeText((__('admin.uri')))
  31. ->assertSeeText('IP')
  32. ->assertSeeText((__('admin.input')))
  33. ->assertSeeText((__('admin.created_at')))
  34. ->assertSeeText((__('admin.action')))
  35. ->waitForText(__('admin.responsive.display'), 2)
  36. ->assertSeeText(__('admin.responsive.display_all'));
  37. });
  38. }
  39. public function testGenerateLogs()
  40. {
  41. $this->browse(function (Browser $browser) {
  42. $table = config('admin.database.operation_log_table');
  43. $browser->visit(admin_base_path('auth/menu'))
  44. ->assertPathIs(admin_base_path('auth/menu'))
  45. ->visit(admin_base_path('auth/users'))
  46. ->assertPathIs(admin_base_path('auth/users'))
  47. ->visit(admin_base_path('auth/permissions'))
  48. ->assertPathIs(admin_base_path('auth/permissions'))
  49. ->visit(admin_base_path('auth/roles'))
  50. ->assertPathIs(admin_base_path('auth/roles'))
  51. ->visit(admin_base_path('auth/logs'))
  52. ->assertPathIs(admin_base_path('auth/logs'));
  53. $this->seeInDatabase($table, ['path' => trim(admin_base_path('auth/menu'), '/'), 'method' => 'GET'])
  54. ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/users'), '/'), 'method' => 'GET'])
  55. ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/permissions'), '/'), 'method' => 'GET'])
  56. ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/roles'), '/'), 'method' => 'GET']);
  57. });
  58. $this->assertSame(4, OperationLog::count());
  59. }
  60. public function testDeleteLogs()
  61. {
  62. $this->browse(function (Browser $browser) {
  63. $table = config('admin.database.operation_log_table');
  64. $this->assertEquals(0, OperationLog::count());
  65. $browser->visit(admin_base_path('auth/users'));
  66. $this->seeInDatabase($table, ['path' => trim(admin_base_path('auth/users'), '/'), 'method' => 'GET']);
  67. $browser->visit(admin_base_path('auth/logs'))
  68. ->assertPathIs(admin_base_path('auth/logs'))
  69. ->pause(500);
  70. $browser->with(new Delete(), function (Browser $browser) {
  71. $browser->delete(0);
  72. });
  73. $this->assertEquals(0, OperationLog::count());
  74. });
  75. }
  76. public function testDeleteMultipleLogs()
  77. {
  78. $this->browse(function (Browser $browser) {
  79. $table = config('admin.database.operation_log_table');
  80. $browser->visit(admin_base_path('auth/menu'))
  81. ->visit(admin_base_path('auth/users'))
  82. ->visit(admin_base_path('auth/permissions'))
  83. ->visit(admin_base_path('auth/roles'));
  84. $number = 4;
  85. $this->seeInDatabase($table, ['path' => trim(admin_base_path('auth/menu'), '/'), 'method' => 'GET'])
  86. ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/users'), '/'), 'method' => 'GET'])
  87. ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/permissions'), '/'), 'method' => 'GET'])
  88. ->seeInDatabase($table, ['path' => trim(admin_base_path('auth/roles'), '/'), 'method' => 'GET'])
  89. ->assertEquals($number, OperationLog::count());
  90. $browser->visit(admin_base_path('auth/logs'))
  91. ->assertPathIs(admin_base_path('auth/logs'));
  92. $browser->with(new RowSelector(), function (Browser $browser) {
  93. $browser->selectAll();
  94. });
  95. $browser->with(new BatchActions(), function (Browser $browser) use ($number) {
  96. $browser->shown($number);
  97. $browser->open();
  98. $browser->choose(__('admin.delete'));
  99. });
  100. $browser->with(new BatchDelete(), function (Browser $browser) {
  101. $browser->waitForConfirmDialog();
  102. $browser->clickConfirmButton();
  103. $browser->waitForSucceeded();
  104. });
  105. $this->assertEquals(0, OperationLog::count());
  106. });
  107. }
  108. }