X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/90797001701017bb7ecce11ae39bff1411fbdc35..refs/pull/3598/head:/tests/Actions/AuditLogTest.php diff --git a/tests/Actions/AuditLogTest.php b/tests/Actions/AuditLogTest.php index 3bdfc3d1a..d699724f5 100644 --- a/tests/Actions/AuditLogTest.php +++ b/tests/Actions/AuditLogTest.php @@ -2,6 +2,7 @@ namespace Tests\Actions; +use function app; use BookStack\Actions\Activity; use BookStack\Actions\ActivityLogger; use BookStack\Actions\ActivityType; @@ -11,9 +12,8 @@ use BookStack\Entities\Models\Page; use BookStack\Entities\Repos\PageRepo; use BookStack\Entities\Tools\TrashCan; use Carbon\Carbon; -use Tests\TestCase; -use function app; use function config; +use Tests\TestCase; class AuditLogTest extends TestCase { @@ -56,7 +56,7 @@ class AuditLogTest extends TestCase $resp->assertSeeText($page->name); $resp->assertSeeText('page_create'); $resp->assertSeeText($activity->created_at->toDateTimeString()); - $resp->assertElementContains('.table-user-item', $admin->name); + $this->withHtml($resp)->assertElementContains('.table-user-item', $admin->name); } public function test_shows_name_for_deleted_items() @@ -169,6 +169,32 @@ class AuditLogTest extends TestCase $resp->assertSee('192.123.45.1'); } + public function test_ip_address_is_searchable() + { + config()->set('app.proxies', '*'); + $editor = $this->getEditor(); + /** @var Page $page */ + $page = Page::query()->first(); + + $this->actingAs($editor)->put($page->getUrl(), [ + 'name' => 'Updated page', + 'html' => '
Updated content
', + ], [ + 'X-Forwarded-For' => '192.123.45.1', + ])->assertRedirect($page->refresh()->getUrl()); + + $this->actingAs($editor)->put($page->getUrl(), [ + 'name' => 'Updated page', + 'html' => 'Updated content
', + ], [ + 'X-Forwarded-For' => '192.122.45.1', + ])->assertRedirect($page->refresh()->getUrl()); + + $resp = $this->asAdmin()->get('/settings/audit?&ip=192.123'); + $resp->assertSee('192.123.45.1'); + $resp->assertDontSee('192.122.45.1'); + } + public function test_ip_address_not_logged_in_demo_mode() { config()->set('app.proxies', '*'); @@ -192,4 +218,27 @@ class AuditLogTest extends TestCase 'entity_id' => $page->id, ]); } + + public function test_ip_address_respects_precision_setting() + { + config()->set('app.proxies', '*'); + config()->set('app.ip_address_precision', 2); + $editor = $this->getEditor(); + /** @var Page $page */ + $page = Page::query()->first(); + + $this->actingAs($editor)->put($page->getUrl(), [ + 'name' => 'Updated page', + 'html' => 'Updated content
', + ], [ + 'X-Forwarded-For' => '192.123.45.1', + ])->assertRedirect($page->refresh()->getUrl()); + + $this->assertDatabaseHas('activities', [ + 'type' => ActivityType::PAGE_UPDATE, + 'ip' => '192.123.x.x', + 'user_id' => $editor->id, + 'entity_id' => $page->id, + ]); + } }