summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2018-10-01 23:35:42 +0530
committerArun Isaac2018-10-01 23:35:42 +0530
commit761c0aead46e2c89648de21c26eca846cfd39690 (patch)
treea6985c720ea9bf6da131d27e93a6cc96e409ab9e
parent3f61bc4bf0999e9b6ac6a48e4fa525716bfaaaf3 (diff)
downloadguile-email-761c0aead46e2c89648de21c26eca846cfd39690.tar.gz
guile-email-761c0aead46e2c89648de21c26eca846cfd39690.tar.lz
guile-email-761c0aead46e2c89648de21c26eca846cfd39690.zip
tests: Add tests for (email email).
* tests/email.scm: New file.
* Makefile.am (SCM_TESTS): Register it.
-rw-r--r--Makefile.am1
-rw-r--r--tests/email.scm117
2 files changed, 118 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 9b999e1..a52d378 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -50,6 +50,7 @@ SOURCES =			\
 TEST_EXTENSIONS = .scm
 
 SCM_TESTS =			\
+  tests/email.scm		\
   tests/quoted-printable.scm
 
 TESTS = $(SCM_TESTS)
diff --git a/tests/email.scm b/tests/email.scm
new file mode 100644
index 0000000..f56baee
--- /dev/null
+++ b/tests/email.scm
@@ -0,0 +1,117 @@
+;;; guile-email --- Guile email parser
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;;
+;;; This file was adapted from guile-debbugs and is part of guile-email.
+;;;
+;;; guile-email is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU Affero General Public License as
+;;; published by the Free Software Foundation; either version 3 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; guile-email is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;; Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public
+;;; License along with guile-email.  If not, see
+;;; <http://www.gnu.org/licenses/>.
+;;;
+;;; This is an adaptation of "ext/rfc/test.scm" from Gauche Scheme.
+;;; The file is under the BSD-3 license, reproduced below:
+;;;
+;;;   Copyright (c) 2000-2017  Shiro Kawai  <shiro@acm.org>
+;;;
+;;;   Redistribution and use in source and binary forms, with or without
+;;;   modification, are permitted provided that the following conditions
+;;;   are met:
+;;;
+;;;    1. Redistributions of source code must retain the above copyright
+;;;       notice, this list of conditions and the following disclaimer.
+;;;
+;;;    2. Redistributions in binary form must reproduce the above copyright
+;;;       notice, this list of conditions and the following disclaimer in the
+;;;       documentation and/or other materials provided with the distribution.
+;;;
+;;;    3. Neither the name of the authors nor the names of its contributors
+;;;       may be used to endorse or promote products derived from this
+;;;       software without specific prior written permission.
+;;;
+;;;   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+;;;   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+;;;   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+;;;   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+;;;   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+;;;   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+;;;   TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+;;;   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+;;;   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+;;;   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+;;;   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(use-modules (email email)
+             (srfi srfi-19)
+             (srfi srfi-64))
+
+(test-begin "email")
+
+(test-equal "parse email headers"
+  (parse-email-headers
+   "Received: by foo.bar.com id ZZZ55555; Thu, 31 May 2001 16:38:04 -1000 (HST)
+Received: from ooo.ooo.com (ooo.ooo.com [1.2.3.4])
+\tby foo.bar.com (9.9.9+3.2W/3.7W-) with ESMTP id ZZZ55555
+\tfor <yoo@bar.com>; Thu, 31 May 2001 16:38:02 -1000 (HST)
+Received: from zzz ([1.2.3.5]) by ooo.ooo.com  with Maccrosoft SMTPSVC(5.5.1877.197.19);
+\t Thu, 31 May 2001 22:33:16 -0400
+Message-ID: <beefbeefbeefbeef@ooo.ooo.com>
+Subject: Bogus Tester
+From: Bogus Sender <bogus@ooo.com>
+To: You <you@bar.com>, Another <another@ooo.com>
+Date: Fri, 01 Jun 2001 02:37:31 +0530
+Mime-Version: 1.0
+Content-Type: text/html
+Content-Transfer-Encoding: quoted-printable
+X-MSMail-Priority: Normal
+X-mailer: FooMail 4.0 4.03 (SMT460B92F)
+Content-Length: 4349
+")
+  `((trace (received " by foo.bar.com id ZZZ55555"
+                     ,(make-date 0 4 38 16 31 5 2001 -36000))
+           (received " from ooo.ooo.com \tby foo.bar.com  with ESMTP id ZZZ55555\tfor <yoo@bar.com>"
+                     ,(make-date 0 2 38 16 31 5 2001 -36000))
+           (received " from zzz  by ooo.ooo.com  with Maccrosoft SMTPSVC"
+                     ,(make-date 0 16 33 22 31 5 2001 -14400)))
+    (message-id . "beefbeefbeefbeef@ooo.ooo.com")
+    (subject . "Bogus Tester")
+    (from ((name . "Bogus Sender")
+           (address . "bogus@ooo.com")))
+    (to ((name . "You")
+         (address . "you@bar.com"))
+        ((name . "Another")
+         (address . "another@ooo.com")))
+    (date . ,(make-date 0 31 37 2 1 6 2001 19800))
+    (mime-version . "1.0")
+    (content-type (type . text)
+                  (subtype . html)
+                  (charset . "utf-8"))
+    (content-transfer-encoding . quoted-printable)
+    (x-msmail-priority . "Normal")
+    (x-mailer . "FooMail 4.0 4.03 (SMT460B92F)")
+    (content-length . "4349")))
+
+(test-equal "handle truncated multipart message gracefully"
+  ((module-ref (resolve-module '(email email))
+               'body->mime-entities)
+   "--boundary
+Content-Type: text/plain
+
+foo
+"
+   "boundary")
+  (list "Content-Type: text/plain
+
+foo
+"))
+
+(test-end "email")