fix(files): handling unlimited storage quota on home server

This commit is contained in:
Karol Sójko
2023-07-13 14:16:05 +02:00
parent fcfedaf7e7
commit 9be3517093
3 changed files with 26 additions and 2 deletions
@@ -49,7 +49,7 @@ export class ActivatePremiumFeatures implements UseCaseInterface<string> {
await this.subscriptionSettingService.applyDefaultSubscriptionSettingsForSubscription(
subscription,
new Map([[SettingName.NAMES.FileUploadBytesLimit, '0']]),
new Map([[SettingName.NAMES.FileUploadBytesLimit, '-1']]),
)
return Result.ok('Premium features activated.')
@@ -135,4 +135,27 @@ describe('FinishUploadSession', () => {
expect(fileUploader.finishUploadSession).not.toHaveBeenCalled()
expect(domainEventPublisher.publish).not.toHaveBeenCalled()
})
it('should ignore the storage quota if user has unlimited storage', async () => {
uploadRepository.retrieveUploadChunkResults = jest.fn().mockReturnValue([
{ tag: '123', chunkId: 1, chunkSize: 60 },
{ tag: '234', chunkId: 2, chunkSize: 10 },
{ tag: '345', chunkId: 3, chunkSize: 20 },
])
expect(
await createUseCase().execute({
resourceRemoteIdentifier: '2-3-4',
ownerUuid: '1-2-3',
ownerType: 'user',
uploadBytesLimit: -1,
uploadBytesUsed: 20,
}),
).toEqual({
success: true,
})
expect(fileUploader.finishUploadSession).toHaveBeenCalled()
expect(domainEventPublisher.publish).toHaveBeenCalled()
})
})
@@ -43,8 +43,9 @@ export class FinishUploadSession implements UseCaseInterface {
totalFileSize += uploadChunkResult.chunkSize
}
const userHasUnlimitedStorage = dto.uploadBytesLimit === -1
const remainingSpaceLeft = dto.uploadBytesLimit - dto.uploadBytesUsed
if (remainingSpaceLeft < totalFileSize) {
if (!userHasUnlimitedStorage && remainingSpaceLeft < totalFileSize) {
return {
success: false,
message: 'Could not finish upload session. You are out of space.',