]> BookStack Code Mirror - bookstack/commitdiff
Updated user avatar reset to clear relation id in database
authorDan Brown <redacted>
Thu, 26 Jan 2023 17:15:09 +0000 (17:15 +0000)
committerDan Brown <redacted>
Thu, 26 Jan 2023 17:15:09 +0000 (17:15 +0000)
Added test to cover.
For #3977

app/Http/Controllers/UserController.php
tests/Settings/SettingsTest.php
tests/User/UserManagementTest.php

index f69f00cf79e602217e4971e4db0992721b87760b..2fcfa4289e20ec31f47f1aa5dd52f8e461d73508 100644 (file)
@@ -164,6 +164,8 @@ class UserController extends Controller
         // Delete the profile image if reset option is in request
         if ($request->has('profile_image_reset')) {
             $this->imageRepo->destroyImage($user->avatar);
+            $user->image_id = 0;
+            $user->save();
         }
 
         $redirectUrl = userCan('users-manage') ? '/settings/users' : "/settings/users/{$user->id}";
index 1161a466ee95d4c56e78bbd087156200a13aa088..f4db6f1c8d73f5a315dc9b2a2f29abb0db5ed7e0 100644 (file)
@@ -2,7 +2,6 @@
 
 namespace Tests\Settings;
 
-use Illuminate\Support\Facades\Storage;
 use Tests\TestCase;
 use Tests\Uploads\UsesImages;
 
index 1c5c040da726bf16cc84f0180a33cc8475daa880..38447d29323adf5474078b276f00e15d4f35a1df 100644 (file)
@@ -6,14 +6,18 @@ use BookStack\Actions\ActivityType;
 use BookStack\Auth\Access\UserInviteService;
 use BookStack\Auth\Role;
 use BookStack\Auth\User;
+use BookStack\Uploads\Image;
 use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Str;
 use Mockery\MockInterface;
 use RuntimeException;
 use Tests\TestCase;
+use Tests\Uploads\UsesImages;
 
 class UserManagementTest extends TestCase
 {
+    use UsesImages;
+
     public function test_user_creation()
     {
         /** @var User $user */
@@ -274,4 +278,33 @@ class UserManagementTest extends TestCase
         $resp->assertSessionHasErrors(['language' => 'The language may not be greater than 15 characters.']);
         $resp->assertSessionHasErrors(['language' => 'The language may only contain letters, numbers, dashes and underscores.']);
     }
+
+    public function test_user_avatar_update_and_reset()
+    {
+        $user = $this->users->viewer();
+        $avatarFile = $this->getTestImage('avatar-icon.png');
+
+        $this->assertEquals(0, $user->image_id);
+
+        $upload = $this->asAdmin()->call('PUT', "/settings/users/{$user->id}", [
+            'name' => 'Barry Scott',
+        ], [], ['profile_image' => $avatarFile], []);
+        $upload->assertRedirect('/settings/users');
+
+        $user->refresh();
+        $this->assertNotEquals(0, $user->image_id);
+        /** @var Image $image */
+        $image = Image::query()->findOrFail($user->image_id);
+        $this->assertFileExists(public_path($image->path));
+
+        $reset = $this->put("/settings/users/{$user->id}", [
+            'name' => 'Barry Scott',
+            'profile_image_reset' => 'true',
+        ]);
+        $upload->assertRedirect('/settings/users');
+
+        $user->refresh();
+        $this->assertFileDoesNotExist(public_path($image->path));
+        $this->assertEquals(0, $user->image_id);
+    }
 }