| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-07 02:03:27 -05:00
										 |  |  | [ "slava@factorcode.org" ] | 
					
						
							|  |  |  | [ "slava@factorcode.org" validate-address ] unit-test | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-13 20:13:01 -05: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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-30 14:53:13 -05:00
										 |  |  | [ ] [ { "220 success" } <response> check-response ] unit-test | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-30 14:53:13 -05: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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-30 14:53:13 -05:00
										 |  |  | [ | 
					
						
							|  |  |  |     T{ response f 220 { | 
					
						
							|  |  |  |         "220-a multiline response" | 
					
						
							|  |  |  |         "250-another line" | 
					
						
							|  |  |  |         "220 the end" | 
					
						
							|  |  |  |     } } | 
					
						
							|  |  |  | ] [ | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-07 02:03:27 -05: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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ | 
					
						
							| 
									
										
										
										
											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" | 
					
						
							|  |  |  | ] [ | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ ] [ | 
					
						
							|  |  |  |     <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 |