diff --git a/app/Http/Controllers/AdminUserCleanupController.php b/app/Http/Controllers/AdminUserCleanupController.php
index 895dbadf..4c26796c 100644
--- a/app/Http/Controllers/AdminUserCleanupController.php
+++ b/app/Http/Controllers/AdminUserCleanupController.php
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\ShoppingUser;
use App\Models\ShoppingUserMemberLog;
use App\Models\UserCleanUpLog;
+use App\Services\UserUtil;
use App\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
@@ -137,7 +138,7 @@ class AdminUserCleanupController extends Controller
// Restore-Button für gelöschte User
if ($user->pre_deleted_at) {
- $html .= ' ';
+ $html .= ' ';
}
return $html;
diff --git a/tests/Feature/UserDeleteEmailPrefixTest.php b/tests/Feature/UserDeleteEmailPrefixTest.php
new file mode 100644
index 00000000..8440ff9e
--- /dev/null
+++ b/tests/Feature/UserDeleteEmailPrefixTest.php
@@ -0,0 +1,53 @@
+ $email,
+ 'password' => bcrypt('secret'),
+ 'lang' => 'de',
+ ]);
+}
+
+it('pseudonymises the email with the user id so a second deletion does not collide', function () {
+ $first = makeDeletableUser('lena.oetjen@googlemail.com');
+ UserUtil::deleteUser($first);
+
+ $second = makeDeletableUser('lena.oetjen@googlemail.com');
+ UserUtil::deleteUser($second);
+
+ expect($first->fresh()->email)->toBe('delete-'.$first->id.'-lena.oetjen@googlemail.com')
+ ->and($second->fresh()->email)->toBe('delete-'.$second->id.'-lena.oetjen@googlemail.com');
+});
+
+it('restores the original address from both prefix formats', function () {
+ expect(UserUtil::stripDeletePrefix('delete-1212-lena.oetjen@googlemail.com'))
+ ->toBe('lena.oetjen@googlemail.com')
+ ->and(UserUtil::stripDeletePrefix('delete-lena.oetjen@googlemail.com'))
+ ->toBe('lena.oetjen@googlemail.com')
+ ->and(UserUtil::stripDeletePrefix('lena.oetjen@googlemail.com'))
+ ->toBe('lena.oetjen@googlemail.com')
+ ->and(UserUtil::stripDeletePrefix(null))->toBe('');
+});
+
+it('does not double the prefix when a deleted user is deleted again', function () {
+ $user = makeDeletableUser('doppelt@example.com');
+ UserUtil::deleteUser($user);
+ UserUtil::deleteUser($user->fresh());
+
+ expect($user->fresh()->email)->toBe('delete-'.$user->id.'-doppelt@example.com');
+});
+
+it('keeps the pseudonymised email within the column limit', function () {
+ $user = makeDeletableUser(str_repeat('a', 240).'@example.com');
+ UserUtil::deleteUser($user);
+
+ expect(mb_strlen($user->fresh()->email))->toBeLessThanOrEqual(255);
+});