Skip to content

Commit 4fc4d96

Browse files
committed
Improve email validation testing
Currently, one test fails due to johnstonskj/rust-email_address#41.
1 parent 0b637f0 commit 4fc4d96

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

backend/api/validation.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,16 +231,20 @@ mod tests {
231231
use super::*;
232232

233233
#[test]
234-
fn user_email_validation() {
234+
fn invalid_user_emails() {
235235
let invalid_emails = [
236236
"invalid",
237+
"invalid@@example.com",
237238
"invalid@invalid@example.com",
238239
"user@example-.com",
239240
"user@[127.0.0.1]",
240241
"user@[::1]",
241242
"more-than-64-characters-in-the-local-part-is-toooooooooooooo-long@example.com",
242243
"more-than-254-characters-total-is-tooo-long@example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.example.com",
243244
"user with spaces@example.com",
245+
".leading-dot@example.com",
246+
"trailing-dot.@example.com",
247+
"adjacent..dots@example.com",
244248
"\"\"@example.com",
245249
"\"user-with\nline-break\"@example.com",
246250
"\"user-with-unbalanced\"quotes\"@example.com",
@@ -267,27 +271,33 @@ mod tests {
267271
];
268272

269273
for email in invalid_emails {
270-
email
271-
.parse::<UserEmail>()
272-
.expect_err("user email should be invalid");
274+
assert!(
275+
email.parse::<UserEmail>().is_err(),
276+
"user email {email:?} should be invalid",
277+
);
273278
}
274279
}
275280

276281
#[test]
277-
fn weird_user_emails_allowed() {
282+
fn valid_user_emails() {
278283
let valid_emails = [
279284
"user-of-a-mail-server-on-a-tld@com",
280285
"64-characters-in-the-local-part-is-fiiiiiiiiiiiiiiiiiiiiiiiiiine@example.com",
281286
"\"unnecessarily.quoted.user\"@example.com",
287+
"\"quoted @ sign\"@example.com",
282288
"\"quoted user with unnecessary \\escapes\"@example.com",
283289
"\"quoted user with unnecessary\\ escapes on special characters\"@example.com",
284290
"\"quoted user with spaces and \\\" escapes\"@example.com",
291+
// While not allowed by RFC 5321 or RFC 5322, the below forms are allowed with the
292+
// SMTPUTF8 extension specified by RFC 6531.
293+
"non-ASCII-in-user-📂🌱@example.com",
294+
"non-ASCII-in-domain@📂🌱.example.com",
285295
];
286296

287297
for email in valid_emails {
288298
email
289299
.parse::<UserEmail>()
290-
.expect("user email should be valid");
300+
.unwrap_or_else(|error| panic!("user email {email:?} should be valid: {error}"));
291301
}
292302
}
293303

0 commit comments

Comments
 (0)