fix(api): stop treating accounts pending deletion as already deleted (#1816)

This commit is contained in:
Hampus authored and GitHub committed 2026-08-21 20:31:32 +02:00
1 parent ffaf5119d8
commit 32afbf12d6
2 files changed
+23

No files matched your search

@@ -808,6 +808,9 @@ export class UserRelationshipService {
if (!user) { if (!user) {
return false; return false;
} }
if (user.pendingDeletionAt !== null) {
return false;
}
return (user.flags & UserFlags.DELETED) === UserFlags.DELETED; return (user.flags & UserFlags.DELETED) === UserFlags.DELETED;
} }
} }
@@ -19,6 +19,16 @@ import {
} from './RelationshipTestUtils'; } from './RelationshipTestUtils';
import {fetchUserMe} from './UserTestUtils'; import {fetchUserMe} from './UserTestUtils';
async function markUserScheduledForDeletion(harness: ApiTestHarness, userId: string): Promise<void> {
const pendingDeletionAt = new Date(Date.now() + 14 * 24 * 60 * 60 * 1000).toISOString();
await createBuilder(harness, '')
.post(`/test/users/${userId}/set-pending-deletion`)
.body({pending_deletion_at: pendingDeletionAt, set_self_deleted_flag: false})
.expect(HTTP_STATUS.OK)
.execute();
await markUserDeleted(harness, userId);
}
async function markUserDeleted(harness: ApiTestHarness, userId: string): Promise<void> { async function markUserDeleted(harness: ApiTestHarness, userId: string): Promise<void> {
await createBuilder(harness, '') await createBuilder(harness, '')
.patch(`/test/users/${userId}/flags`) .patch(`/test/users/${userId}/flags`)
@@ -221,6 +231,16 @@ describe('UserRelationshipStateTransitions', () => {
.expect(HTTP_STATUS.BAD_REQUEST, 'FRIEND_REQUEST_BLOCKED') .expect(HTTP_STATUS.BAD_REQUEST, 'FRIEND_REQUEST_BLOCKED')
.execute(); .execute();
}); });
test('can accept a friend request from a user scheduled for deletion', async () => {
const alice = await createTestAccount(harness);
const bob = await createTestAccount(harness);
await sendFriendRequest(harness, bob.token, alice.userId);
await markUserScheduledForDeletion(harness, bob.userId);
const {json: friendship} = await acceptFriendRequest(harness, alice.token, bob.userId);
assertRelationshipType(friendship, RelationshipTypes.FRIEND);
const {json: aliceAfter} = await listRelationships(harness, alice.token);
assertRelationshipType(findRelationship(aliceAfter, bob.userId)!, RelationshipTypes.FRIEND);
});
test('cannot send friend request to user who blocked you', async () => { test('cannot send friend request to user who blocked you', async () => {
const alice = await createTestAccount(harness); const alice = await createTestAccount(harness);
const bob = await createTestAccount(harness); const bob = await createTestAccount(harness);