astrotrain 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +26 -0
- data/LICENSE +20 -0
- data/README +47 -0
- data/Rakefile +122 -0
- data/VERSION +1 -0
- data/astrotrain.gemspec +129 -0
- data/config/sample.rb +12 -0
- data/lib/astrotrain.rb +53 -0
- data/lib/astrotrain/api.rb +52 -0
- data/lib/astrotrain/logged_mail.rb +46 -0
- data/lib/astrotrain/mapping.rb +157 -0
- data/lib/astrotrain/mapping/http_post.rb +18 -0
- data/lib/astrotrain/mapping/jabber.rb +28 -0
- data/lib/astrotrain/mapping/transport.rb +55 -0
- data/lib/astrotrain/message.rb +330 -0
- data/lib/astrotrain/tmail.rb +58 -0
- data/lib/astrotrain/worker.rb +65 -0
- data/lib/vendor/rest-client/README.rdoc +104 -0
- data/lib/vendor/rest-client/Rakefile +84 -0
- data/lib/vendor/rest-client/bin/restclient +65 -0
- data/lib/vendor/rest-client/foo.diff +66 -0
- data/lib/vendor/rest-client/lib/rest_client.rb +188 -0
- data/lib/vendor/rest-client/lib/rest_client/net_http_ext.rb +23 -0
- data/lib/vendor/rest-client/lib/rest_client/payload.rb +185 -0
- data/lib/vendor/rest-client/lib/rest_client/request_errors.rb +75 -0
- data/lib/vendor/rest-client/lib/rest_client/resource.rb +103 -0
- data/lib/vendor/rest-client/rest-client.gemspec +18 -0
- data/lib/vendor/rest-client/spec/base.rb +5 -0
- data/lib/vendor/rest-client/spec/master_shake.jpg +0 -0
- data/lib/vendor/rest-client/spec/payload_spec.rb +71 -0
- data/lib/vendor/rest-client/spec/request_errors_spec.rb +44 -0
- data/lib/vendor/rest-client/spec/resource_spec.rb +52 -0
- data/lib/vendor/rest-client/spec/rest_client_spec.rb +219 -0
- data/test/api_test.rb +28 -0
- data/test/fixtures/apple_multipart.txt +100 -0
- data/test/fixtures/bad_content_type.txt +27 -0
- data/test/fixtures/basic.txt +14 -0
- data/test/fixtures/custom.txt +15 -0
- data/test/fixtures/fwd.txt +0 -0
- data/test/fixtures/gb2312_encoding.txt +16 -0
- data/test/fixtures/gb2312_encoding_invalid.txt +15 -0
- data/test/fixtures/html.txt +16 -0
- data/test/fixtures/iso-8859-1.txt +13 -0
- data/test/fixtures/mapped.txt +13 -0
- data/test/fixtures/multipart.txt +213 -0
- data/test/fixtures/multipart2.txt +213 -0
- data/test/fixtures/multiple.txt +13 -0
- data/test/fixtures/multiple_delivered_to.txt +14 -0
- data/test/fixtures/multiple_with_body_recipients.txt +15 -0
- data/test/fixtures/reply.txt +16 -0
- data/test/fixtures/utf-8.txt +13 -0
- data/test/logged_mail_test.rb +67 -0
- data/test/mapping_test.rb +129 -0
- data/test/message_test.rb +440 -0
- data/test/test_helper.rb +57 -0
- data/test/transport_test.rb +111 -0
- metadata +225 -0
@@ -0,0 +1,213 @@
|
|
1
|
+
Delivered-To: foo@example.com
|
2
|
+
Received: by ewy14 with SMTP id 14so339326ewy.0
|
3
|
+
for <foo@example.com>; Tue, 09 Dec 2008 15:03:18 -0800 (PST)
|
4
|
+
Message-ID: <ddf0a08f0812091503x4696425eid0fa5910ad39bce1@mail.examle.com>
|
5
|
+
Date: Tue, 9 Dec 2008 15:03:18 -0800
|
6
|
+
From: "Rick Olson" <rick@example.com>
|
7
|
+
To: foo@example.com
|
8
|
+
Subject: testing
|
9
|
+
MIME-Version: 1.0
|
10
|
+
Content-Type: multipart/mixed;
|
11
|
+
boundary="----=_Part_98510_7267541.1228863798546"
|
12
|
+
|
13
|
+
------=_Part_98510_7267541.1228863798546
|
14
|
+
Content-Type: multipart/alternative;
|
15
|
+
boundary="----=_Part_98511_30821043.1228863798546"
|
16
|
+
|
17
|
+
------=_Part_98511_30821043.1228863798546
|
18
|
+
Content-Type: text/plain; charset=ISO-8859-1
|
19
|
+
Content-Transfer-Encoding: 7bit
|
20
|
+
Content-Disposition: inline
|
21
|
+
|
22
|
+
Testing out rich emails with attachments!
|
23
|
+
This one has NO name property on Content-Type.
|
24
|
+
[state:hold responsible:rick]
|
25
|
+
|
26
|
+
------=_Part_98511_30821043.1228863798546
|
27
|
+
Content-Type: text/html; charset=ISO-8859-1
|
28
|
+
Content-Transfer-Encoding: 7bit
|
29
|
+
Content-Disposition: inline
|
30
|
+
|
31
|
+
Testing out <span class="Apple-style-span" style="font-weight: bold;">rich</span> emails with attachments!<div><br></div><div>[state:hold responsible:rick]</div>
|
32
|
+
|
33
|
+
------=_Part_98511_30821043.1228863798546--
|
34
|
+
|
35
|
+
------=_Part_98510_7267541.1228863798546
|
36
|
+
Content-Type: image/jpeg
|
37
|
+
Content-Transfer-Encoding: base64
|
38
|
+
X-Attachment-Id: f_foj5r58f0
|
39
|
+
Content-Disposition: attachment; filename=bandit.jpg
|
40
|
+
|
41
|
+
/9j/4AAQSkZJRgABAQAAAQABAAD/4hEsSUNDX1BST0ZJTEUAAQEAABEcYXBwbAIAAABtbnRyUkdC
|
42
|
+
IFhZWiAH2AAKAB4ADgAsABlhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAA
|
43
|
+
AADTLWFwcGzyFHiLXl6eOdbNyU72rSSJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5y
|
44
|
+
WFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0AAABaAAAABRjaGFkAAABfAAA
|
45
|
+
ACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52Y2d0AAAB2AAABhJuZGluAAAH
|
46
|
+
7AAABj5kZXNjAAAOLAAAAGRkc2NtAAAOkAAAAj5tbW9kAAAQ0AAAAChjcHJ0AAAQ+AAAACRYWVog
|
47
|
+
AAAAAAAAX3kAADZCAAAG6VhZWiAAAAAAAABvXQAAswsAABt5WFlaIAAAAAAAACgAAAAWzQAAsMNY
|
48
|
+
WVogAAAAAAAA81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAA
|
49
|
+
A9wAAMBsY3VydgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNn
|
50
|
+
dAAAAAAAAAAAAAMBAAACAAAAEQA6AHkAygEfAWsBwwInApgDFgOpBEkE+AW7BokHZwhTCUoKVAtu
|
51
|
+
DJANtQ7ZEAQRNBJnE6EU3RYfF2wYuRoLG2EcwB4dH38g5iJFI7wlOSayKC8ppysgLJQuBy92MOMy
|
52
|
+
TTOwNQ42aTe+ORI6YjutPPU+OT+JQNxCLEN1RL1F/0dASHpJtUroTBVNQU5oT4pQqlHHUuJT/VUV
|
53
|
+
Vi1XQ1haWXFagluXXKlduV7JX9dg5GHzYv5kCGUTZiBnKmg2aT5qRWsybBRs823VbrpvoHCGcXBy
|
54
|
+
XnNPdD91MnYndx54FXkOegl7BHv+fPR94X7Nf7qApYGPgneDYIRLhTOGG4cDh+uI1Im8iqWLjox2
|
55
|
+
jV+OVY92kOKSTZOwlRCWbJe7mP2aOpttnJidtZ7Jn9ig3aHgotyj06TKpcOm1KfsqQaqH6s3rE2t
|
56
|
+
Ya5wr3+wjrGXsp+zpbSrtay2r7exuKy5rLqlu4u8a71Mvi6/D7/twMzBr8KRw3PEWMU/xifHEsgA
|
57
|
+
yPDJ4crVy8nMss2KzmDPNNAG0NjRpdJw0zvUB9TU1Z/WbNc62ArY3tmy2ojbYdwi3MTdSt3L3lHe
|
58
|
+
2d9p3/rgkuEt4cribeMT47zkZuUT5cDmbOcY58Xoa+kM6aLqNurI61vr7uyK7Svt1e6P71jwNfEv
|
59
|
+
8k7zmfUY9vb5if0Q//8AAAALACYAUACGAMgBFAFlAcACKQKkAy8DzQR7BTkGBAbiB88IxQnICtcL
|
60
|
+
6gz9DhUPMRBQEXISnRPLFPsWNxd0GLIZ+RtHHJId4x82IIkh6SNVJLwmJieMKPIqVSu1LRYuby/I
|
61
|
+
MRwyazO1NPo2Pzd+OLo58TspPGs9sD7wQC5BZ0KcQ85E/0YtR1JIdEmTSq9LxUzZTetO+1ALURhS
|
62
|
+
JFMuVDdVQVZIV1JYWFldWmVbaVxsXXRedl93YHxhgmKDY4hkiGWIZnNnU2gwaQ9p8mrWa7tso22O
|
63
|
+
bnxvaXBZcUtyP3MzdCp1InYadxF4BXj0eeJ60Xu+fKp9lH5+f2yAVoE+giaDD4P5hOGFyYayh5qI
|
64
|
+
golxioiL4I00joCPzJESkk+ThJS1lduW+5gTmSSaMJs3nDqdOZ41nzCgNaFOonSjn6TEpeynEKgx
|
65
|
+
qU2qaauFrJutsK7Br9Kw4bHwsv20B7UStiG3NrhMuWO6e7uRvKO9tb7Kv9rA5sH0wv3EBcUKxg/H
|
66
|
+
EsgTyRHKDcsBy+rMz82xzpHPbtBH0R/R9dLJ06DUdNVJ1iDW99fV2LDZj9pw20/cJtz53cremd9p
|
67
|
+
4DrhC+Hc4q3jfuRP5SLl9ubL56Hod+lO6ibq/+vV7J7tXu4Z7srvefAn8NPxg/I38vHzt/SM9XP2
|
68
|
+
cveQ+Nb6YPwz/mP//wAAAAoAJABLAH0AuwEDATkBdQG4AgECWwK8AyYDnwQgBLAFSAXoBpYHTQgJ
|
69
|
+
CMQJgwpFCwkLzwyaDWkOOw8TD+0QyBGoEo0TcxRbFUUWLRclGCUZIBohGxwcGR0RHgwfBR/5IPAh
|
70
|
+
4SLQI70kpyWQJnYnWyg+KR4qDisBK/Es4C3MLrcvnzCGMWwyUDMvNA006DXCNpo3cjhHOR458TrD
|
71
|
+
O5Q8ZT02PgU+1j+mQHVBRUIUQuNDskSARUxGGUbnR7NIf0lJShJK0EuJTEBM+U21TnJPL0/vULJR
|
72
|
+
d1I6Uv9TxlSNVVRWHVblV61YdVk9Wgda01uhXG5dOl4FXtFfnmBrYTViAGLMY5hkYmUtZfhmwmeM
|
73
|
+
aFhpH2njaqZrZ2wqbOxtrG5obyNv3HCScUJx73KZcz5z4HSAdRt1tnZUdw531XijeXJ6Rnsbe/B8
|
74
|
+
x32ifoB/XYA7gRuB+4Lbg7yEnYV4hliHQohHiVSKYYtzjIKNjo6ej7GQw5HVkuqT/5UVliyXRJhe
|
75
|
+
mXeakJupnLmdvJ69n76gvaG9orujt6S4pbmmwKfHqNKp5Kr3rBGtLq5Or3SwmbHAsum0FLU/tm63
|
76
|
+
n7jVugy7RryCvb6/AMBEwYrCz8QYxV3GpsfvyULKpcwCzVTOpc/00VDSttQq1a/XVtkj2xXdRN+/
|
77
|
+
4pnl6Ooa75j33P//AABuZGluAAAAAAAABjYAAJh/AABX2wAAVCwAAJANAAAoXwAAFWAAAFANAABU
|
78
|
+
OQAB+uEAAePXAAEeuAADAQAAAgAAAC8AdwC8APsBOAFyAawB5AIdAlQCigLAAvcDMANrA6YD4gQf
|
79
|
+
BF0EmwTbBRsFWgWbBd0GHwZiBqQG6ActB3IHuAf+CEgIjgjUCRoJYgmrCfQKPwqLCtgLJwt3C8gM
|
80
|
+
GwxvDMUNHA12DdEOLw6ODvAPUw+4EB8QiBD0EWER0RI+EqsTGROKE/4UchTqFWUV4BZgFt8XYxfr
|
81
|
+
GHYZAhmSGiYavBtVG/Ecjh0uHdEedR8cH8QgbSEcIckieiMuI+QkmyVXJhIm0CeSKFYpGinfKqgr
|
82
|
+
cSw/LQ8t/C71L/Ew6THiMt0z1jTNNcI2ujexOKg5nzqYO488hz2CPn8/iECbQatCwEPYRPZGE0cw
|
83
|
+
SFRJekqhS8lM9U4hT09QgFGyUtJTwlSGVU1WF1bnV7hYi1liWkFbKFwUXQVd/17/YAthImI+Y2dk
|
84
|
+
lGXKZwpoTGmRarlr22z6bhxvQHBmcZByvnP0dSh2X3efeOF6J3tvfL5+DH9dgLmCEYNzhPiGhogT
|
85
|
+
iaGLOYzQjmOP+pGRkySUt5ZIl9SZXprnnG+d95+UoVajHqTspsCooaqIrHGuWrBIsjO0HrX/t+O5
|
86
|
+
wbucvh3BSMRQxzDJ78yXzynRrNQo1qHZIduj3knhM+Q25znqE+y27xXxN/MV9Lv2L/d9+K35p/qa
|
87
|
+
+1P8Dfyo/Sf9pv4l/sH/YP//AAAARwCVANoBGQFVAZAByQIBAjoCcgKqAuQDIANdA5sD2gQbBFwE
|
88
|
+
nQTgBSQFZwWrBfEGNwZ9BsMHCwdUB50H5wgzCH4IyAkRCV0JqQn2CkUKlQrmCzkLjgvjDDoMlAzu
|
89
|
+
DUsNqg4LDm4O1A88D6UQERB/EPARYxHXEkkSuhMuE6UUHRSYFRYVlhYZFp0XJBewGD8Y0RllGf4a
|
90
|
+
mhs5G9scfx0kHc4eeh8oH9kgiyFBIfYisCNsJCgk6CWrJmwnMyf9KMYpjypeKysr/yzRLbsusy+x
|
91
|
+
MK0xpzKkM6A0mjWSNo03hziBOXs6djtwPGs9aT5pP3BAgEGOQqBDtUTQRexHBkgnSUxKckuZTMNN
|
92
|
+
8E8eUE9Rg1KuU61Uf1VUVixXC1foWMpZsVqfW5Ncil2LXpFfn2C2YdNi+GQkZVNmjGfIaQVqMWtH
|
93
|
+
bFltaG5/b5NwrXHJcut0EnU5dmJ3k3jGef57N3x2fbV+9oA+gYeC0IQQhU6GkIfQiRCKVouijO2O
|
94
|
+
N4+IkOCSNZOUlPSWWpfCmS2anpwTnY2fEaCuolWkA6W5p3epQasPrOSut7CSsmi0QrYPt+G5rrt1
|
95
|
+
vVC/P8E0wzDFKcclySPLI80nzyjRKNMn1SfXJtkn2yTdK99c4a7kKOax6Ujrze438H7ykPRv9iD3
|
96
|
+
o/j++i77PPw3/Qf9zf7K//8AAABMAMEBKAGGAd4CNQKIAtwDNAOOA+sESgSqBQwFbgXSBjgGngcF
|
97
|
+
B28H2QhICLIJGgmHCfMKZArWC00LxAw/DL4NPg3EDk0O2g9rEAAQmBE1EdYSbhMHE6QURRTpFZIW
|
98
|
+
PhbtF6EYWxkYGdsaohttHD0dDh3mHsIfoSCDIWoiUSM+JCwlHiYTJwsoCSkIKgorECwcLS0uVi+I
|
99
|
+
MLgx5zMZNEc1czakN9Q5BTo5O2w8pD3fPx1AWkGUQtJEFEVbRqBH6Uk5SopL200zTotP6FFJUqhU
|
100
|
+
FFWIVwVYf1oAW45dIl7CYHViN2QQZfpn+2n3a5ZtIm6tcDBxs3M4dLh2M3eyeS96rXwtfa1/L4C9
|
101
|
+
gkaDuYUBhk2HmYjhii6LgIzPjhqPaZC6kgeTV5SnlfeXSJiXmeebOZyMneGfP6Czoiyjp6UlpqSo
|
102
|
+
KKmwqzKst64zr7GxLLKdtBG1e7bjuEq5rbsKvGy9zb8swIrB6sNIxKLF/cdUyKvKAMtUzKnN/c9N
|
103
|
+
0JzR69M51IrV1tcn2HrZydsa3Gjdp97d4B7haeK35AblWeah5+PpH+pT637sou207rnvsfCe8Yjy
|
104
|
+
XvMv8+/0pfVY9fn2mvc09734RvjP+T75rPoa+on64fs2+4v74Pw1/H38tPzr/SL9Wf2R/cj9//43
|
105
|
+
/nD+qf7i/xv/VP+N/8b//wAAZGVzYwAAAAAAAAAKQ29sb3IgTENEAAAAAAAAAAAAAAAAAAAAAAAA
|
106
|
+
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
107
|
+
AAAAAG1sdWMAAAAAAAAAEgAAAAxuYk5PAAAAEgAAAOhwdFBUAAAAFgAAAPpzdlNFAAAAEAAAARBm
|
108
|
+
aUZJAAAAEAAAASBkYURLAAAAHAAAATB6aENOAAAADAAAAUxmckZSAAAAEgAAAVhqYUpQAAAADgAA
|
109
|
+
AWplblVTAAAAEgAAAXhwbFBMAAAAEgAAAYpwdEJSAAAAGAAAAZxlc0VTAAAAEgAAAbR6aFRXAAAA
|
110
|
+
DgAAAcZydVJVAAAAJAAAAdRrb0tSAAAADAAAAfhkZURFAAAAEAAAAgRubE5MAAAAFgAAAhRpdElU
|
111
|
+
AAAAFAAAAioARgBhAHIAZwBlAC0ATABDAEQATABDAEQAIABhACAAQwBvAHIAZQBzAEYA5AByAGcA
|
112
|
+
LQBMAEMARABWAOQAcgBpAC0ATABDAEQATABDAEQALQBmAGEAcgB2AGUAcwBrAOYAcgBtX2mCcgAg
|
113
|
+
AEwAQwBEAMkAYwByAGEAbgAgAEwAQwBEMKsw6TD8ACAATABDAEQAQwBvAGwAbwByACAATABDAEQA
|
114
|
+
SwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ATABDAEQAIABjAG8AbABv
|
115
|
+
AHJfaYJybbJmdphveTpWaAQmBDIENQRCBD0EPgQ5ACAEFgQaAC0ENAQ4BEEEPwQ7BDUEOc7st+wA
|
116
|
+
IABMAEMARABGAGEAcgBiAC0ATABDAEQASwBsAGUAdQByAGUAbgAtAEwAQwBEAEwAQwBEACAAYwBv
|
117
|
+
AGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnIUAAAAAxHyvAAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAA
|
118
|
+
AENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAwOAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAAB
|
119
|
+
AAAAGgAAAAAAAqACAAQAAAABAAAAS6ADAAQAAAABAAAASwAAAAD/2wBDAAIBAQEBAQIBAQECAgIC
|
120
|
+
AgQDAgICAgUDBAMEBgUGBgYFBQUGBwkIBgcIBwUFCAsICAkJCgoKBgcLDAsKDAkKCgr/2wBDAQIC
|
121
|
+
AgICAgUDAwUKBgUGCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
|
122
|
+
CgoKCgr/wAARCABLAEsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL
|
123
|
+
/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2Jy
|
124
|
+
ggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
|
125
|
+
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo
|
126
|
+
6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQD
|
127
|
+
BAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom
|
128
|
+
JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaX
|
129
|
+
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
|
213
|
+
------=_Part_98510_7267541.1228863798546--
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Delivered-To: processor@astrotrain.com
|
2
|
+
Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
|
3
|
+
Date: Thu, 16 Oct 2008 10:14:18 -0700
|
4
|
+
From: user@example.com, boss@example.com
|
5
|
+
To: other@example.com, processor@astrotrain.com
|
6
|
+
Subject: Fwd: blah blah
|
7
|
+
MIME-Version: 1.0
|
8
|
+
Content-Type: text/plain; charset=ISO-8859-1
|
9
|
+
Content-Transfer-Encoding: 7bit
|
10
|
+
Content-Disposition: inline
|
11
|
+
|
12
|
+
---------- Forwarded message ----------
|
13
|
+
blah blah
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Delivered-To: processor-reply-57@custom.com
|
2
|
+
Delivered-To: processor-delivered@astrotrain.com
|
3
|
+
Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
|
4
|
+
Date: Thu, 16 Oct 2008 10:14:18 -0700
|
5
|
+
From: user@example.com, boss@example.com
|
6
|
+
To: processor@astrotrain.com
|
7
|
+
Subject: Fwd: blah blah
|
8
|
+
MIME-Version: 1.0
|
9
|
+
Content-Type: text/plain; charset=ISO-8859-1
|
10
|
+
Content-Transfer-Encoding: 7bit
|
11
|
+
Content-Disposition: inline
|
12
|
+
|
13
|
+
---------- Forwarded message ----------
|
14
|
+
blah blah
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Delivered-To: processor@astrotrain.com
|
2
|
+
Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
|
3
|
+
Date: Thu, 16 Oct 2008 10:14:18 -0700
|
4
|
+
From: user@example.com, boss@example.com
|
5
|
+
To: other@example.com, processor@astrotrain.com
|
6
|
+
Subject: blah blah
|
7
|
+
MIME-Version: 1.0
|
8
|
+
Content-Type: text/plain; charset=ISO-8859-1
|
9
|
+
Content-Transfer-Encoding: 7bit
|
10
|
+
Content-Disposition: inline
|
11
|
+
|
12
|
+
blah blah
|
13
|
+
|
14
|
+
ISSUE #: <processor%2Bfoobar@astrotrain.com>
|
15
|
+
ISSUE #: <processor+blah@astrotrain.com>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Delivered-To: processor@astrotrain.com
|
2
|
+
Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
|
3
|
+
Date: Thu, 16 Oct 2008 10:14:18 -0700
|
4
|
+
From: user@example.com
|
5
|
+
To: processor@astrotrain.com
|
6
|
+
Subject: Fwd: blah blah
|
7
|
+
MIME-Version: 1.0
|
8
|
+
Content-Type: text/plain; charset=ISO-8859-1
|
9
|
+
Content-Transfer-Encoding: 7bit
|
10
|
+
Content-Disposition: inline
|
11
|
+
|
12
|
+
blah blah
|
13
|
+
|
14
|
+
=====
|
15
|
+
|
16
|
+
blah!
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Delivered-To: "Processor" <processor@astrotrain.com>
|
2
|
+
Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
|
3
|
+
Date: Thu, 16 Oct 2008 10:14:18 -0700
|
4
|
+
From: =?utf-8?Q?isnard_naik=c3=a9?= <user@example.com>
|
5
|
+
To: Processor <processor@astrotrain.com>
|
6
|
+
Subject: Fwd: blah blah
|
7
|
+
MIME-Version: 1.0
|
8
|
+
Content-Type: text/plain; charset=ISO-8859-1
|
9
|
+
Content-Transfer-Encoding: 7bit
|
10
|
+
Content-Disposition: inline
|
11
|
+
|
12
|
+
---------- Forwarded message ----------
|
13
|
+
blah blah
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_helper")
|
2
|
+
|
3
|
+
class Astrotrain::LoggedMailTest < Astrotrain::TestCase
|
4
|
+
describe "being created from Message" do
|
5
|
+
before :all do
|
6
|
+
Astrotrain::Mapping.all.destroy!
|
7
|
+
@mapping = Astrotrain::Mapping.create!(:email_user => '*')
|
8
|
+
@raw = mail(:custom)
|
9
|
+
@message = Astrotrain::Message.parse(@raw)
|
10
|
+
@logged = Astrotrain::LoggedMail.from(@message, 'foo/bar') do |l|
|
11
|
+
l.recipient = @message.recipients(%w(delivered_to)).first
|
12
|
+
l.mapping = @mapping
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it "sets recipient" do
|
17
|
+
assert_equal @message.recipients(%w(delivered_to)).first, @logged.recipient
|
18
|
+
end
|
19
|
+
|
20
|
+
it "sets mail_file" do
|
21
|
+
assert_equal 'foo/bar', @logged.mail_file
|
22
|
+
end
|
23
|
+
|
24
|
+
it "sets sender" do
|
25
|
+
assert_equal 'user@example.com', @logged.sender
|
26
|
+
end
|
27
|
+
|
28
|
+
it "sets subject" do
|
29
|
+
assert_equal @message.subject, @logged.subject
|
30
|
+
end
|
31
|
+
|
32
|
+
it "sets mapping" do
|
33
|
+
assert_equal @mapping, @logged.mapping
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "attempted creation with badly encoded message" do
|
38
|
+
before :all do
|
39
|
+
Astrotrain::Mapping.all.destroy!
|
40
|
+
@mapping = Astrotrain::Mapping.create!(:email_user => '*')
|
41
|
+
@raw = mail(:custom)
|
42
|
+
@subject = "=?gb2312?B?usO80rXnubrO78341b68urjEsOajrLfJwPvG1tfu0MKxqLzbo6jUsbmkvNuj?= =?gb2312?B?qQ==?="
|
43
|
+
@raw.sub! /Subject\: Fwd\: blah blah/, "Subject: #{@subject}"
|
44
|
+
@message = Astrotrain::Message.parse(@raw)
|
45
|
+
@logged = Astrotrain::LoggedMail.from(@message) do |l|
|
46
|
+
l.recipient = @message.recipients(%w(delivered_to)).first
|
47
|
+
l.mapping = @mapping
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it "sets recipient" do
|
52
|
+
assert_equal @message.recipients(%w(delivered_to)).first, @logged.recipient
|
53
|
+
end
|
54
|
+
|
55
|
+
it "sets subject" do
|
56
|
+
assert_equal @subject, @logged.subject
|
57
|
+
end
|
58
|
+
|
59
|
+
it "sets sender" do
|
60
|
+
assert_equal 'user@example.com', @logged.sender
|
61
|
+
end
|
62
|
+
|
63
|
+
it "sets mapping" do
|
64
|
+
assert_equal @mapping, @logged.mapping
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_helper")
|
2
|
+
|
3
|
+
class Astrotrain::MappingTest < Astrotrain::TestCase
|
4
|
+
it "defaults #email_domain to Mapping.default_domain" do
|
5
|
+
assert_equal Astrotrain::Mapping.default_domain, Astrotrain::Mapping.new.email_domain
|
6
|
+
end
|
7
|
+
|
8
|
+
it "defaults #transport to 'http_post" do
|
9
|
+
assert_equal 'http_post', Astrotrain::Mapping.new.transport
|
10
|
+
end
|
11
|
+
|
12
|
+
it "knows http_post transport uses urls" do
|
13
|
+
assert Astrotrain::Mapping.new(:transport => 'http_post').destination_uses_url?
|
14
|
+
end
|
15
|
+
|
16
|
+
it "knows jabber transport uses emails" do
|
17
|
+
assert Astrotrain::Mapping.new(:transport => 'jabber').destination_uses_email?
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "matching" do
|
21
|
+
before :all do
|
22
|
+
Astrotrain::Mapping.transaction do
|
23
|
+
Astrotrain::Mapping.all.destroy!
|
24
|
+
@mapping1 = Astrotrain::Mapping.create!(:email_user => '*')
|
25
|
+
@mapping2 = Astrotrain::Mapping.create!(:email_user => 'abc*')
|
26
|
+
@mapping3 = Astrotrain::Mapping.create!(:email_user => 'abc')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it "matches email user" do
|
31
|
+
assert_equal [@mapping3, "abc@#{Astrotrain::Mapping.default_domain}"],
|
32
|
+
Astrotrain::Mapping.match(["abc@#{Astrotrain::Mapping.default_domain}"])
|
33
|
+
end
|
34
|
+
|
35
|
+
it "matches email partial wildcard" do
|
36
|
+
assert_equal [@mapping2, "abc1@#{Astrotrain::Mapping.default_domain}"],
|
37
|
+
Astrotrain::Mapping.match(["abc1@#{Astrotrain::Mapping.default_domain}"])
|
38
|
+
end
|
39
|
+
|
40
|
+
it "matches email full wildcard" do
|
41
|
+
assert_equal [@mapping1, "def@#{Astrotrain::Mapping.default_domain}"],
|
42
|
+
Astrotrain::Mapping.match(["def@#{Astrotrain::Mapping.default_domain}"])
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "finding reply text" do
|
47
|
+
delim = "xyz"
|
48
|
+
|
49
|
+
before :all do
|
50
|
+
@mapping = Astrotrain::Mapping.new :separator => delim
|
51
|
+
end
|
52
|
+
|
53
|
+
{
|
54
|
+
"foo bar\n\n#{delim}\nfoo" => "foo bar",
|
55
|
+
"foo bar\n\nOn 13-Jan-09, at 9:17 AM, ENTP Support wrote:\n\n\n#{delim}\nfoo" => "foo bar",
|
56
|
+
"foo bar\n\nOn Jan 13, 2009 at 2:20 PM, ENTP Support wrote:\n\n\n#{delim}\nfoo" => "foo bar",
|
57
|
+
"foo bar\n\nAm Tuesday 02 December 2008 schrieb Ricky Bobby:\n\n\n#{delim}\nfoo" => "foo bar",
|
58
|
+
"foo bar\n\nLe 18 sept. 08 à 09:08, theRemix a écrit :\n\n\n#{delim}\nfoo" => "foo bar",
|
59
|
+
"foo\n bar\nbaz\n\n\n> #{delim}" => "foo\n bar\nbaz",
|
60
|
+
"foo\n\nbar\nbaz\n#{delim}" => "foo",
|
61
|
+
"foo\n bar\nbaz2\n\n\n\n" => "foo\n bar\nbaz2",
|
62
|
+
">> #{delim}\n foo bar" => ""
|
63
|
+
}.each do |before, after|
|
64
|
+
it "parses #{after.inspect} from #{before.inspect}" do
|
65
|
+
assert_equal after, @mapping.find_reply_from(before)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "validation" do
|
71
|
+
before :all do
|
72
|
+
Astrotrain::Mapping.all.destroy!
|
73
|
+
@mapping = Astrotrain::Mapping.create!(:email_user => 'xyz')
|
74
|
+
end
|
75
|
+
|
76
|
+
%w(abc abc_def abc-123 abc+def abc%def foo* *).each do |valid|
|
77
|
+
it "allows #email_user == #{valid.inspect}" do
|
78
|
+
assert valid_mapping(:email_user => valid).valid?
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
%w(a\ b abc! abc? foo*bar *foo).each do |valid|
|
83
|
+
it "rejects #email_user == #{valid.inspect}" do
|
84
|
+
assert !valid_mapping(:email_user => valid).valid?
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
%w(abc abc_def abc-123 abc.def).each do |valid|
|
89
|
+
it "allows #email_domain == #{valid.inspect}" do
|
90
|
+
assert valid_mapping(:email_domain => valid).valid?
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
%w(a\ b abc! abc? abc+def abc%def).each do |valid|
|
95
|
+
it "rejects #email_domain == #{valid.inspect}" do
|
96
|
+
assert !valid_mapping(:email_domain => valid).valid?
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
%w(http://example.com https://example.com http://example.com/ http://example.com/foo http://rick:monkey@example.com http://example.com:4567/foo http://localhost:3000/foo http://localhost/foo http://example.com/foo/bar.html http://example.com/foo?blah[baz]=1).each do |valid|
|
101
|
+
it "allows #destination == #{valid.inspect} for http_post transport" do
|
102
|
+
assert valid_mapping(:destination => valid, :transport => 'http_post').valid?
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
%w(foo@bar.com).each do |valid|
|
107
|
+
it "allows #destination == #{valid.inspect} for jabber transport" do
|
108
|
+
assert valid_mapping(:destination => valid, :transport => 'jabber').valid?
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
it "rejects duplicate email_user/email_domain" do
|
113
|
+
assert !valid_mapping(:email_user => @mapping.email_user).valid?
|
114
|
+
end
|
115
|
+
|
116
|
+
it "accepts unique email_user" do
|
117
|
+
assert valid_mapping.valid?
|
118
|
+
end
|
119
|
+
|
120
|
+
it "accepts unique email_user + email_domain" do
|
121
|
+
assert valid_mapping(:email_user => @mapping.email_user, :email_domain => 'example.com').valid?
|
122
|
+
end
|
123
|
+
|
124
|
+
protected
|
125
|
+
def valid_mapping(options = {})
|
126
|
+
Astrotrain::Mapping.new({:destination => 'http://foo.com', :email_user => 'sample', :transport => 'http_post'}.update(options))
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|