2014-10-08 14:33:40 -04:00
|
|
|
USING: accessors assocs combinators concurrency.promises
|
|
|
|
continuations fry io.sockets io.sockets.secure io.streams.string
|
|
|
|
kernel namespaces sequences smtp smtp.private smtp.server
|
|
|
|
sorting system tools.test ;
|
2008-03-01 17:00:45 -05:00
|
|
|
IN: smtp.tests
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2014-04-16 00:59:14 -04:00
|
|
|
: with-test-smtp-config ( quot -- )
|
|
|
|
[
|
|
|
|
<promise> "p" set
|
|
|
|
"p" get mock-smtp-server
|
|
|
|
|
|
|
|
default-smtp-config
|
|
|
|
"localhost" "p" get ?promise <inet> >>server
|
|
|
|
no-auth >>auth
|
|
|
|
os unix? [ t >>tls? ] when
|
|
|
|
\ smtp-config
|
|
|
|
] dip with-variable ; inline
|
|
|
|
|
2008-02-07 02:03:27 -05:00
|
|
|
{ 0 0 } [ [ ] with-smtp-connection ] must-infer-as
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-02-07 02:03:27 -05:00
|
|
|
[ "hello\nworld" validate-address ] must-fail
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 20:28:17 -04:00
|
|
|
{ "slava@factorcode.org" }
|
2008-02-07 02:03:27 -05:00
|
|
|
[ "slava@factorcode.org" validate-address ] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 20:28:17 -04:00
|
|
|
{ "aGVsbG8Kd29ybGQ=\r\n.\r\n" } [
|
2009-04-17 18:52:41 -04:00
|
|
|
T{ email { body "hello\nworld" } } [ send-body ] with-string-writer
|
2008-02-07 02:03:27 -05:00
|
|
|
] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-11-30 14:53:13 -05:00
|
|
|
[ { "500 syntax error" } <response> check-response ]
|
|
|
|
[ smtp-error? ] must-fail-with
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 20:28:17 -04:00
|
|
|
{ } [ { "220 success" } <response> check-response ] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 20:28:17 -04:00
|
|
|
{ T{ response f 220 { "220 success" } } } [
|
2008-02-15 23:20:31 -05:00
|
|
|
"220 success" [ receive-response ] with-string-reader
|
2008-02-07 02:03:27 -05:00
|
|
|
] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 20:28:17 -04:00
|
|
|
{
|
2008-11-30 14:53:13 -05:00
|
|
|
T{ response f 220 {
|
|
|
|
"220-a multiline response"
|
|
|
|
"250-another line"
|
|
|
|
"220 the end"
|
|
|
|
} }
|
2015-07-02 20:28:17 -04:00
|
|
|
} [
|
2008-02-10 04:12:44 -05:00
|
|
|
"220-a multiline response\r\n250-another line\r\n220 the end"
|
2008-02-15 23:20:31 -05:00
|
|
|
[ receive-response ] with-string-reader
|
2008-02-07 02:03:27 -05:00
|
|
|
] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2015-07-02 20:28:17 -04:00
|
|
|
{ } [
|
2008-02-10 04:12:44 -05:00
|
|
|
"220-a multiline response\r\n250-another line\r\n220 the end"
|
2008-02-15 23:20:31 -05:00
|
|
|
[ get-ok ] with-string-reader
|
2008-02-07 02:03:27 -05:00
|
|
|
] unit-test
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-02-07 02:03:27 -05:00
|
|
|
[
|
|
|
|
"Subject:\r\nsecurity hole" validate-header
|
|
|
|
] must-fail
|
|
|
|
|
2015-07-02 20:28:17 -04:00
|
|
|
{
|
2008-03-07 02:55:38 -05:00
|
|
|
{
|
2009-01-13 20:13:01 -05:00
|
|
|
{ "Content-Transfer-Encoding" "base64" }
|
2009-04-17 18:52:41 -04:00
|
|
|
{ "Content-Type" "text/plain; charset=UTF-8" }
|
2008-02-07 02:03:27 -05:00
|
|
|
{ "From" "Doug <erg@factorcode.org>" }
|
2009-01-13 20:13:01 -05:00
|
|
|
{ "MIME-Version" "1.0" }
|
2008-02-07 02:03:27 -05:00
|
|
|
{ "Subject" "Factor rules" }
|
2008-03-07 02:55:38 -05:00
|
|
|
{ "To" "Slava <slava@factorcode.org>, Ed <dharmatech@factorcode.org>" }
|
2008-02-07 02:03:27 -05:00
|
|
|
}
|
|
|
|
{ "slava@factorcode.org" "dharmatech@factorcode.org" }
|
|
|
|
"erg@factorcode.org"
|
2015-07-02 20:28:17 -04:00
|
|
|
} [
|
2008-08-16 18:20:18 -04:00
|
|
|
[
|
2008-03-07 02:55:38 -05:00
|
|
|
<email>
|
|
|
|
"Factor rules" >>subject
|
|
|
|
{
|
|
|
|
"Slava <slava@factorcode.org>"
|
|
|
|
"Ed <dharmatech@factorcode.org>"
|
|
|
|
} >>to
|
|
|
|
"Doug <erg@factorcode.org>" >>from
|
2014-09-23 18:46:47 -04:00
|
|
|
{
|
|
|
|
[
|
|
|
|
email>headers sort-keys [
|
|
|
|
drop { "Date" "Message-Id" } member? not
|
|
|
|
] assoc-filter
|
|
|
|
]
|
|
|
|
[ to>> [ extract-email ] map ]
|
|
|
|
[ from>> extract-email ]
|
|
|
|
! To get the smtp server to clean up itself
|
2014-10-08 14:33:40 -04:00
|
|
|
[ '[ _ send-email ] ignore-errors ]
|
2014-09-23 18:46:47 -04:00
|
|
|
} cleave
|
2014-04-16 00:59:14 -04:00
|
|
|
] with-test-smtp-config
|
|
|
|
] unit-test
|
|
|
|
|
2015-07-02 20:28:17 -04:00
|
|
|
{ } [
|
2014-04-16 00:59:14 -04:00
|
|
|
<secure-config> f >>verify [
|
|
|
|
[
|
|
|
|
<email>
|
|
|
|
"Hi guys\nBye guys" >>body
|
|
|
|
"Factor rules" >>subject
|
|
|
|
{
|
|
|
|
"Slava <slava@factorcode.org>"
|
|
|
|
"Ed <dharmatech@factorcode.org>"
|
|
|
|
} >>to
|
|
|
|
"Doug <erg@factorcode.org>" >>from
|
|
|
|
send-email
|
|
|
|
] with-test-smtp-config
|
2008-11-30 16:11:03 -05:00
|
|
|
] with-secure-context
|
2008-03-06 14:46:15 -05:00
|
|
|
] unit-test
|