]> BookStack Code Mirror - bookstack/blobdiff - tests/Actions/AuditLogTest.php
Added language list favourites sorting, updated styles
[bookstack] / tests / Actions / AuditLogTest.php
index 3bdfc3d1a18dc40d6ea33b7ab916021afae6e67e..d699724f5129d1936e5f39f88fb1ff4f648eab17 100644 (file)
@@ -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' => '<p>Updated content</p>',
+        ], [
+            'X-Forwarded-For' => '192.123.45.1',
+        ])->assertRedirect($page->refresh()->getUrl());
+
+        $this->actingAs($editor)->put($page->getUrl(), [
+            'name' => 'Updated page',
+            'html' => '<p>Updated content</p>',
+        ], [
+            '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' => '<p>Updated content</p>',
+        ], [
+            '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,
+        ]);
+    }
 }