TF-3221 Handle mailto with additional cc and bcc

This commit is contained in:
DatDang
2024-10-25 11:28:59 +07:00
committed by Dat H. Pham
parent 51a4a1b9b7
commit 45581e4177
9 changed files with 292 additions and 59 deletions
+141
View File
@@ -83,5 +83,146 @@ void main() {
expect(result[RouteUtils.paramMailtoAddress], containsAll(['test@example.com', 'test2@example.com', 'test3@example.com']));
expect(result[RouteUtils.paramSubject], equals('Hello'));
});
test(
'should parse a valid mailto URI encoded contains every possible parameters',
() {
// arrange
const to1 = 'to1@example.com';
const to2 = 'to2@example.com';
const to3 = 'to3@example.com';
const cc1 = 'cc1@example.com';
const cc2 = 'cc2@example.com';
const bcc1 = 'bcc1@example.com';
const bcc2 = 'bcc2@example.com';
const subject = 'Hello';
const body = 'Bye';
const mailtoSchemeUri = 'mailto:$to1,$to2'
'?to=$to2,$to3'
'&cc=$cc1,$cc2'
'&bcc=$bcc1,$bcc2'
'&subject=$subject'
'&body=$body';
const mailtoPathUri = 'https://example.com/mailto'
'?uri=$to1,$to2'
'&to=$to2,$to3'
'&cc=$cc1,$cc2'
'&bcc=$bcc1,$bcc2'
'&subject=$subject'
'&body=$body';
const mailtoPathWithNestedMailtoUri = 'https://example.com/mailto/'
'?uri=mailto:$to1,$to2'
'&to=$to2,$to3'
'&cc=$cc1,$cc2'
'&bcc=$bcc1,$bcc2'
'&subject=$subject'
'&body=$body';
// act
final mailtoSchemeResult = RouteUtils.parseMapMailtoFromUri(
Uri.encodeFull(mailtoSchemeUri));
final mailtoPathResult = RouteUtils.parseMapMailtoFromUri(
Uri.encodeFull(mailtoPathUri));
final mailtoPathWithNestedMailtoResult = RouteUtils.parseMapMailtoFromUri(
Uri.encodeFull(mailtoPathWithNestedMailtoUri));
// assert
expect(mailtoSchemeResult, equals(mailtoPathResult));
expect(mailtoSchemeResult, equals(mailtoPathWithNestedMailtoResult));
expect(mailtoPathResult, equals(mailtoPathWithNestedMailtoResult));
expect(
mailtoSchemeResult[RouteUtils.paramMailtoAddress],
containsAll([to1, to2, to3,])
);
expect(
mailtoSchemeResult[RouteUtils.paramCc],
containsAll([cc1, cc2])
);
expect(
mailtoSchemeResult[RouteUtils.paramBcc],
containsAll([bcc1, bcc2])
);
expect(
mailtoSchemeResult[RouteUtils.paramSubject],
equals(subject)
);
expect(
mailtoSchemeResult[RouteUtils.paramBody],
equals(body)
);
});
test(
'should parse a valid mailto URI contains every possible parameters',
() {
// arrange
const to1 = 'to1@example.com';
const to2 = 'to2@example.com';
const to3 = 'to3@example.com';
const cc1 = 'cc1@example.com';
const cc2 = 'cc2@example.com';
const bcc1 = 'bcc1@example.com';
const bcc2 = 'bcc2@example.com';
const subject = 'Hello';
const body = 'Bye';
const mailtoSchemeUri = 'mailto:$to1,$to2'
'?to=$to2,$to3'
'&cc=$cc1,$cc2'
'&bcc=$bcc1,$bcc2'
'&subject=$subject'
'&body=$body';
const mailtoPathUri = 'https://example.com/mailto'
'?uri=$to1,$to2'
'&to=$to2,$to3'
'&cc=$cc1,$cc2'
'&bcc=$bcc1,$bcc2'
'&subject=$subject'
'&body=$body';
const mailtoPathWithNestedMailtoUri = 'https://example.com/mailto/'
'?uri=mailto:$to1,$to2'
'&to=$to2,$to3'
'&cc=$cc1,$cc2'
'&bcc=$bcc1,$bcc2'
'&subject=$subject'
'&body=$body';
// act
final mailtoSchemeResult = RouteUtils.parseMapMailtoFromUri(
mailtoSchemeUri);
final mailtoPathResult = RouteUtils.parseMapMailtoFromUri(mailtoPathUri);
final mailtoPathWithNestedMailtoResult = RouteUtils.parseMapMailtoFromUri(
mailtoPathWithNestedMailtoUri);
// assert
expect(mailtoSchemeResult, equals(mailtoPathResult));
expect(mailtoSchemeResult, equals(mailtoPathWithNestedMailtoResult));
expect(mailtoPathResult, equals(mailtoPathWithNestedMailtoResult));
expect(
mailtoSchemeResult[RouteUtils.paramMailtoAddress],
containsAll([to1, to2, to3,])
);
expect(
mailtoSchemeResult[RouteUtils.paramCc],
containsAll([cc1, cc2])
);
expect(
mailtoSchemeResult[RouteUtils.paramBcc],
containsAll([bcc1, bcc2])
);
expect(
mailtoSchemeResult[RouteUtils.paramSubject],
equals(subject)
);
expect(
mailtoSchemeResult[RouteUtils.paramBody],
equals(body)
);
});
});
}