summaryrefslogtreecommitdiffstats
path: root/tests/test_boundaries.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_boundaries.rs')
-rw-r--r--tests/test_boundaries.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/test_boundaries.rs b/tests/test_boundaries.rs
new file mode 100644
index 0000000..f898d2a
--- /dev/null
+++ b/tests/test_boundaries.rs
@@ -0,0 +1,49 @@
+// Copyright 2019 Alexandros Frantzis
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at https://mozilla.org/MPL/2.0/.
+//
+// SPDX-License-Identifier: MPL-2.0
+
+use mda::{Email, EmailRegex};
+
+static TEST_EMAIL_FAKE_BOUNDARY: &'static str = r#"Return-Path: <me@source.com>
+To: Destination <someone.else@destination.com>
+Content-type: multipart/alternative; boundary="QWFCYkN"
+
+--QWFCYkN
+Content-transfer-encoding: base64
+
+--QWFCYkNj
+
+--QWFCYkN
+"#;
+
+static TEST_EMAIL_BOUNDARY_BEGIN_AFTER_END: &'static str = r#"Return-Path: <me@source.com>
+To: Destination <someone.else@destination.com>
+Content-type: multipart/alternative; boundary="XtT01VFrJIenjlg+ZCXSSWq4"
+
+--XtT01VFrJIenjlg+ZCXSSWq4--
+
+--XtT01VFrJIenjlg+ZCXSSWq4
+"#;
+
+#[test]
+fn only_exact_boundary_lines_are_parsed() {
+ // The "--QWFCYkNj" line should be parsed as part of the body not as a boundary.
+ let email =
+ Email::from_vec(
+ TEST_EMAIL_FAKE_BOUNDARY.to_string().into_bytes()
+ ).unwrap();
+ assert!(email.body().search("AaBbCc").unwrap());
+}
+
+#[test]
+fn boundary_begin_after_end_is_parsed() {
+ assert!(
+ Email::from_vec(
+ TEST_EMAIL_BOUNDARY_BEGIN_AFTER_END.to_string().into_bytes()
+ ).is_ok()
+ );
+}