Skip to content

Commit

Permalink
TF-2983 Fix download EML with special character
Browse files Browse the repository at this point in the history
  • Loading branch information
tddang-linagora authored and hoangdat committed Sep 27, 2024
1 parent f8bcb96 commit cf67fda
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 1 deletion.
2 changes: 1 addition & 1 deletion model/lib/email/attachment.dart
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class Attachment with EquatableMixin {
'name' : name ?? '',
'type' : type?.mimeType ?? '',
});
return Uri.decodeFull(downloadUri);
return downloadUri;
}

String generateFileName() {
Expand Down
67 changes: 67 additions & 0 deletions model/test/email/attachment_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:http_parser/http_parser.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:model/email/attachment.dart';

void main() {
final accountId = AccountId(Id('1'));
const baseDownloadUrl = 'http://localhost/download/{accountId}/{blobId}/{name}?name={name}&type={type}';

group('attachment test:', () {
group('getDownloadUrl:', () {
test(
'should return download url with blobId, name and type',
() {
// arrange
final attachment = Attachment(
blobId: Id('some-blob-id'),
name: 'some-name',
type: MediaType.parse('application/octet-stream'),
);

// act
final result = attachment.getDownloadUrl(baseDownloadUrl, accountId);

// assert
expect(result, 'http://localhost/download/1/some-blob-id/some-name?name=some-name&type=application%2Foctet-stream');
});

test(
'should return download url with blobId, name and type '
'when attachment name contains question mark character',
() {
// arrange
final attachment = Attachment(
blobId: Id('some-blob-id'),
name: 'some-name?',
type: MediaType.parse('application/octet-stream'),
);

// act
final result = attachment.getDownloadUrl(baseDownloadUrl, accountId);

// assert
expect(result, 'http://localhost/download/1/some-blob-id/some-name%3F?name=some-name%3F&type=application%2Foctet-stream');
});

test(
'should return download url with blobId, name and type '
'when attachment name is Vietnamese',
() {
// arrange
final attachment = Attachment(
blobId: Id('some-blob-id'),
name: 'tiêu đề attachment',
type: MediaType.parse('application/octet-stream'),
);

// act
final result = attachment.getDownloadUrl(baseDownloadUrl, accountId);

// assert
expect(result, 'http://localhost/download/1/some-blob-id/ti%C3%AAu%20%C4%91%E1%BB%81%20attachment?name=ti%C3%AAu%20%C4%91%E1%BB%81%20attachment&type=application%2Foctet-stream');
});
});
});
}

0 comments on commit cf67fda

Please sign in to comment.