TF-3514 Add test case processing 100 base64 images in HtmlAnalyzer unit test

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-03-07 15:08:24 +07:00
committed by Dat H. Pham
parent 769bca0dda
commit ac746b0301
@@ -190,6 +190,41 @@ void main() {
verify(mockFileUploader.uploadAttachment(any, any, uploadUri)).called(2); verify(mockFileUploader.uploadAttachment(any, any, uploadUri)).called(2);
}); });
test(
'When processing 100 base64 images,\n'
'should replace each with a unique CID and add corresponding attachments',
() async {
int countImage = 100;
final htmlContent = '''
${List.generate(countImage, (index) => '<img src="data:image/jpeg;base64,/9j/4AAQSkZJRg==">').join(' ')}
''';
final inlineAttachments = <String, Attachment>{};
final uploadUri = Uri.parse('https://example.com/upload');
when(mockUuid.v1()).thenAnswer((_) => 'uuid1');
when(mockFileUploader.uploadAttachment(any, any, any))
.thenAnswer((_) async => Attachment(
blobId: Id('blob123'),
type: MediaType('image', 'png'),
disposition: ContentDisposition.inline,
));
final result = await htmlAnalyzer.replaceImageBase64ToImageCID(
emailContent: htmlContent,
inlineAttachments: inlineAttachments,
uploadUri: uploadUri,
);
final document = parse(result.value1);
final imgTags = document.querySelectorAll('img');
expect(imgTags.length, countImage);
expect(imgTags.every((img) => img.attributes['src']!.contains('cid:')), isTrue);
expect(result.value2.length, countImage);
verify(mockUuid.v1()).called(countImage);
verify(mockFileUploader.uploadAttachment(any, any, uploadUri)).called(countImage);
});
test( test(
'When one image upload throws an exception out of multiple base64 images,\n' 'When one image upload throws an exception out of multiple base64 images,\n'
'should replace successful upload with CID and keep original src for failed one', 'should replace successful upload with CID and keep original src for failed one',