fix(server): reject invalid or deleted user when creating a partner (#30431)

This commit is contained in:
Gueye Papa Djadji 2026-08-03 10:56:00 +00:00 committed by GitHub
parent da7d8c2e12
commit 04453b7206
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 0 deletions

View file

@ -54,6 +54,7 @@ describe(PartnerService.name, () => {
const auth = AuthFactory.create({ id: user1.id });
mocks.partner.get.mockResolvedValue(void 0);
mocks.user.get.mockResolvedValue(user2);
mocks.partner.create.mockResolvedValue(getForPartner(partner));
await expect(sut.create(auth, { sharedWithId: user2.id })).resolves.toBeDefined();
@ -76,6 +77,19 @@ describe(PartnerService.name, () => {
expect(mocks.partner.create).not.toHaveBeenCalled();
});
it('should throw an error when sharedWithId does not resolve to an existing (non-deleted) user', async () => {
const user1 = UserFactory.create();
const user2 = UserFactory.create();
const auth = AuthFactory.create({ id: user1.id });
mocks.partner.get.mockResolvedValue(void 0);
mocks.user.get.mockResolvedValue(void 0);
await expect(sut.create(auth, { sharedWithId: user2.id })).rejects.toBeInstanceOf(BadRequestException);
expect(mocks.partner.create).not.toHaveBeenCalled();
});
});
describe('remove', () => {

View file

@ -16,6 +16,12 @@ export class PartnerService extends BaseService {
throw new BadRequestException(`Partner already exists`);
}
const user = await this.userRepository.get(sharedWithId, {});
if (!user) {
this.logger.debug('Partner creation failed: user not found');
throw new BadRequestException('Invalid user');
}
const partner = await this.partnerRepository.create(partnerId);
return this.mapPartner(partner, PartnerDirection.SharedBy);
}