$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); });