TF-3221 Handle mailto with additional cc and bcc
This commit is contained in:
@@ -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)
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user