mms2r 1.0.7 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +19 -1
- data/Manifest.txt +38 -19
- data/README.txt +40 -8
- data/Rakefile +2 -2
- data/conf/mms2r_cingular_me_media_subject.yml +3 -0
- data/conf/{mms2r_cingularmedia_transform.yml → mms2r_cingular_me_media_transform.yml} +1 -0
- data/conf/mms2r_dobson_media_ignore.yml +4 -0
- data/conf/mms2r_media_ignore.yml +4 -0
- data/conf/mms2r_media_subject.yml +3 -0
- data/conf/mms2r_my_cingular_media_subject.yml +3 -0
- data/conf/mms2r_nextel_media_ignore.yml +11 -0
- data/conf/mms2r_sprint_media_ignore.yml +5 -0
- data/conf/mms2r_sprint_media_subject.yml +3 -0
- data/conf/{mms2r_tmobilemedia_ignore.yml → mms2r_t_mobile_media_ignore.yml} +2 -5
- data/conf/mms2r_verizon_media_ignore.yml +4 -0
- data/conf/mms2r_verizon_media_transform.yml +6 -0
- data/dev_tools/debug_sprint_hpricot_parsing.rb +82 -0
- data/lib/mms2r.rb +61 -0
- data/lib/mms2r/cingular_me_media.rb +23 -0
- data/lib/mms2r/dobson_media.rb +4 -5
- data/lib/mms2r/{mmode_media.rb → m_mode_media.rb} +4 -4
- data/lib/mms2r/media.rb +283 -160
- data/lib/mms2r/my_cingular_media.rb +15 -0
- data/lib/mms2r/nextel_media.rb +9 -3
- data/lib/mms2r/sprint_media.rb +137 -29
- data/lib/mms2r/sprint_pcs_media.rb +16 -0
- data/lib/mms2r/t_mobile_media.rb +21 -0
- data/lib/mms2r/verizon_media.rb +11 -3
- data/lib/mms2r/vtext_media.rb +16 -0
- data/test/files/cingularme-text-02.mail +14 -0
- data/test/files/hello_world_empty_text.mail +6 -0
- data/test/files/hello_world_mail_multipart.mail +7 -0
- data/test/files/{cingular-image-01.mail → mycingular-image-01.mail} +0 -0
- data/test/files/simple-with-two-images-two-texts.mail +49 -0
- data/test/files/{sprint-image-02.mail → sprint-broken-image-01.mail} +1 -1
- data/test/files/sprint-image-01.mail +1 -1
- data/test/files/sprint-pcs-text-01.mail +8 -0
- data/test/files/sprint-text-01.mail +195 -8
- data/test/files/sprint-two-images-01.mail +198 -0
- data/test/files/sprint-video-01.mail +1 -1
- data/test/files/verizon-image-02.mail +1 -1
- data/test/files/vtext-text-01.mail +1 -1
- data/test/test_mms2r_cingular_me_media.rb +51 -0
- data/test/test_mms2r_dobson_media.rb +46 -0
- data/test/{test_mms2r_mmode.rb → test_mms2r_m_mode_media.rb} +1 -1
- data/test/test_mms2r_media.rb +160 -74
- data/test/test_mms2r_my_cingular_media.rb +31 -0
- data/test/test_mms2r_nextel_media.rb +100 -0
- data/test/test_mms2r_sprint_media.rb +221 -0
- data/test/test_mms2r_sprint_pcs_media.rb +27 -0
- data/test/{test_mms2r_tmobile.rb → test_mms2r_t_mobile_media.rb} +13 -13
- data/test/test_mms2r_verizon_media.rb +96 -0
- data/test/test_mms2r_vtext_media.rb +28 -0
- data/vendor/plugins/mms2r/lib/autotest/discover.rb +3 -0
- data/vendor/plugins/mms2r/lib/autotest/mms2r.rb +33 -0
- metadata +62 -37
- data/conf/mms2r_nextelmedia_ignore.yml +0 -10
- data/conf/mms2r_sprintmedia_ignore.yml +0 -10
- data/conf/mms2r_verizonmedia_ignore.yml +0 -3
- data/conf/mms2r_verizonmedia_transform.yml +0 -3
- data/lib/mms2r/cingular_media.rb +0 -11
- data/lib/mms2r/tmobile_media.rb +0 -11
- data/lib/mms2r/version.rb +0 -12
- data/test/test_mms2r_cingular.rb +0 -58
- data/test/test_mms2r_dobson.rb +0 -36
- data/test/test_mms2r_nextel.rb +0 -132
- data/test/test_mms2r_sprint.rb +0 -174
- data/test/test_mms2r_verizon.rb +0 -102
@@ -0,0 +1,198 @@
|
|
1
|
+
Message-ID: <01264567.13213243210987.JavaMail.jrewqreos@lalal09>
|
2
|
+
From: "someuser@pm.sprint.com" <someuser@pm.sprint.com>
|
3
|
+
To: tommytutone@example.com
|
4
|
+
Subject: You have new Picture Mail!
|
5
|
+
MIME-Version: 1.0
|
6
|
+
Content-Type: multipart/alternative;
|
7
|
+
boundary="----=_Part_012345_67890123.4567890123456"
|
8
|
+
X-Priority: 3
|
9
|
+
X-MSMail-Priority: Normal
|
10
|
+
Importance: Normal
|
11
|
+
|
12
|
+
------=_Part_012345_67890123.4567890123456
|
13
|
+
Content-Type: text/plain; charset=us-ascii
|
14
|
+
Content-Transfer-Encoding: 7bit
|
15
|
+
|
16
|
+
You have new Picture Mail!
|
17
|
+
|
18
|
+
Click Go/View to see now.
|
19
|
+
http://pictures.sprintpcs.com/?mivt=helloworld0123456789&shareName=MMS
|
20
|
+
|
21
|
+
_abcedef
|
22
|
+
|
23
|
+
|
24
|
+
------=_Part_012345_67890123.4567890123456
|
25
|
+
Content-Type: text/html
|
26
|
+
Content-Transfer-Encoding: 7bit
|
27
|
+
|
28
|
+
<html>
|
29
|
+
<head><title>You have new Picture Mail!</title>
|
30
|
+
<!-- lsPictureMail-Share-helloworld0123456789-comment
|
31
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
32
|
+
<shareMessage>
|
33
|
+
<messageContents type="PICTURE">
|
34
|
+
<messageText></messageText>
|
35
|
+
<mediaItems>
|
36
|
+
<mediaItem id="1">
|
37
|
+
<title></title>
|
38
|
+
&lt;url&gt;http://pictures.sprintpcs.com/getMMBOXMessageMedia?id=Xw1004H8sLv6S3x76lVPYvc9HWuygho0mqG1a5IEKWLR8s8O0GEqXAmk5gW%2FZUWGqyw0fwJJvr7U%0AtWtQs5%2FZA7tmYNq7KKkBMqlL64JVNH%2BGkNKbb8WqPL%2FsrHZdYUVet3SRzN1GfrfUo%2BpWfjCBBg%3D%3D%0A&lt;/url&gt;
|
39
|
+
|
40
|
+
<urlExpiration>2007-03-11T21:14:27Z</urlExpiration>
|
41
|
+
</mediaItem>
|
42
|
+
</mediaItems>
|
43
|
+
</messageContents>
|
44
|
+
</shareMessage>
|
45
|
+
|
46
|
+
-->
|
47
|
+
<!-- lsPictureMail-UserInfo-helloworld0123456789-comment
|
48
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
49
|
+
<UserInfo timestamp="2007-03-04T21:14:27.96+00:00" originating_from_address="someuser@pm.sprint.com"><credential name="MDN">2068509247</credential></UserInfo>
|
50
|
+
-->
|
51
|
+
</head>
|
52
|
+
<body marginheight="0" marginwidth="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
|
53
|
+
<table border="0" width="100%" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" >
|
54
|
+
<tr>
|
55
|
+
<td VALIGN="top" colspan="2" width="100%">
|
56
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#FFE100">
|
57
|
+
<tr>
|
58
|
+
<td><a href="http://www.sprintpcs.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/images/logos/togetherWithNextel.gif" alt="" border="0" /></a></td>
|
59
|
+
</tr>
|
60
|
+
</table>
|
61
|
+
</td>
|
62
|
+
</tr>
|
63
|
+
<tr>
|
64
|
+
<td VALIGN="top" colspan="2">
|
65
|
+
<table border="0" cellpadding="0" cellspacing="0" width="590" bgcolor="#FFFFFF">
|
66
|
+
<tr>
|
67
|
+
<td><br/><p><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="10"/><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>You have a Picture Mail from someuser@pm.sprint.com</b></font><br/><br/></p></td>
|
68
|
+
</tr>
|
69
|
+
</table>
|
70
|
+
</td>
|
71
|
+
</tr>
|
72
|
+
<tr>
|
73
|
+
<td colspan="2">
|
74
|
+
<table border="0" width="590" cellpadding="0" cellspacing="0">
|
75
|
+
<tr>
|
76
|
+
<td width="10"> </td>
|
77
|
+
<td width="280" valign="top">
|
78
|
+
<table border="0" cellpadding="0" style="border:1px solid #9C9A9C;">
|
79
|
+
<tr>
|
80
|
+
<td>
|
81
|
+
<table border="0" bgcolor="#ffffff" cellpadding="0" cellspacing="7" style="table-layout:fixed">
|
82
|
+
<tr>
|
83
|
+
<td align="center">
|
84
|
+
<img src="http://localhost:99163/mmps/RECIPIENT/000_0123a01234567890_1/2.2?inviteToken=helloworld0123456789&limitsize=258,258&outquality=90&squareoutput=255,255,255&ext=.jpg&iconifyVideo=true&wm=1&HACK=IMAGE"/>
|
85
|
+
</td>
|
86
|
+
<td align="center">
|
87
|
+
<img src="http://localhost:99163/mmps/RECIPIENT/000_0123a01234567890_1/2.3?inviteToken=helloworld0123456789&limitsize=258,258&outquality=90&squareoutput=255,255,255&ext=.jpg&iconifyVideo=true&wm=1&HACK=IMAGE"/>
|
88
|
+
</td>
|
89
|
+
</tr>
|
90
|
+
</table>
|
91
|
+
</td>
|
92
|
+
</tr>
|
93
|
+
</table>
|
94
|
+
</td>
|
95
|
+
<td width="20"> </td>
|
96
|
+
<td VALIGN="top" align="right" width="280">
|
97
|
+
<table border="0" cellpadding="0" cellspacing="0" width="280" style="table-layout:fixed">
|
98
|
+
<tr>
|
99
|
+
<td><p><font face="trebuchet ms, Helvetica, Arial, Verdana" size="2"><b>Message:</b></font></p></td>
|
100
|
+
</tr>
|
101
|
+
<tr>
|
102
|
+
<td><pre style="overflow:auto; font:normal 10pt trebuchet ms; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"></pre></td>
|
103
|
+
</tr>
|
104
|
+
<tr>
|
105
|
+
<td><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="15"/></td>
|
106
|
+
</tr>
|
107
|
+
<tr>
|
108
|
+
<td width="280">
|
109
|
+
<div style="padding-left:10px; padding-top:4px; padding-bottom:4px; color:white; background-color:#59639C; font: bold 10pt trebuchet ms" width="280">
|
110
|
+
Options
|
111
|
+
</div>
|
112
|
+
<div style="padding:10px; background-color:#f1f1f1; font: normal 10pt trebuchet ms" width="280">
|
113
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=MMS&messageState=RETRIEVED">View Picture</a><br/>
|
114
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=PRINT">Order Prints and Gifts</a><br/>
|
115
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=REPLY">Reply to Sender</a><br/>
|
116
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=REPLYTOALL">Reply to All</a><br/>
|
117
|
+
<a target="_blank" style="color: #148AB2;" href="http://pictures.sprintpcs.com/share.do?invite=helloworld0123456789&shareName=FORWARD">Forward</a><br/><br/>
|
118
|
+
Send and receive Pictures and Videos through Picture Mail<sup>SM</sup>. For more information go to <a target="_blank" style="color: #148AB2;" href="http://www.sprint.com/picturemail">www.sprint.com/picturemail.</a>
|
119
|
+
</div>
|
120
|
+
</td>
|
121
|
+
</tr>
|
122
|
+
</table>
|
123
|
+
</td>
|
124
|
+
</tr>
|
125
|
+
</table>
|
126
|
+
</td>
|
127
|
+
</tr>
|
128
|
+
<tr>
|
129
|
+
<td colspan="2">
|
130
|
+
<img src="http://pictures.sprintpcs.com/images/x.gif" width="5" height="15"/>
|
131
|
+
</td>
|
132
|
+
</tr>
|
133
|
+
<tr>
|
134
|
+
<td align="left" colspan="2" width="590">
|
135
|
+
<table cellpadding="0" cellspacing="0" align="left" bgcolor="#FFFFFF">
|
136
|
+
<tr>
|
137
|
+
<td width="10"> </td>
|
138
|
+
<td width="580">
|
139
|
+
<table cellpadding="0" cellspacing="0" align="center" border="0" bgcolor="#FFFFFF">
|
140
|
+
<tr>
|
141
|
+
<!-- AdJuggler 5.0 request
|
142
|
+
Ad Spot: email_picture-mail-invitation_1_120x85
|
143
|
+
Channel: Undefined
|
144
|
+
Ad Dimension: 120x85
|
145
|
+
Category: Undefined
|
146
|
+
Sub-category: Undefined
|
147
|
+
-->
|
148
|
+
<td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/361/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/361/0/viewCGI?zone=1&dim=135" border="0"/></a></td>
|
149
|
+
<td width="30"></td>
|
150
|
+
<!-- AdJuggler 5.0 request
|
151
|
+
Ad Spot: email_picture-mail-invitation_2_120x85
|
152
|
+
Channel: Undefined
|
153
|
+
Ad Dimension: 120x85
|
154
|
+
Category: Undefined
|
155
|
+
Sub-category: Undefined
|
156
|
+
-->
|
157
|
+
<td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/362/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/362/0/viewCGI?zone=1&dim=135" border="0"/></a></td>
|
158
|
+
<td width="30"></td>
|
159
|
+
<!-- AdJuggler 5.0 request
|
160
|
+
Ad Spot: email_picture-mail-invitation_3_120x85
|
161
|
+
Channel: Undefined
|
162
|
+
Ad Dimension: 120x85
|
163
|
+
Category: Undefined
|
164
|
+
Sub-category: Undefined
|
165
|
+
-->
|
166
|
+
<td width="120"><a href="http://banners.pictures.sprintpcs.com/servlet/ajrotator/363/0/clickCGI?zone=1"><img src="http://banners.pictures.sprintpcs.com/servlet/ajrotator/363/0/viewCGI?zone=1&dim=135" border="0"/></a></td>
|
167
|
+
</tr>
|
168
|
+
</table>
|
169
|
+
</td>
|
170
|
+
</tr>
|
171
|
+
</table>
|
172
|
+
</td>
|
173
|
+
</tr>
|
174
|
+
<tr>
|
175
|
+
<td VALIGN="top" colspan="2" width="590">
|
176
|
+
<img src="http://pictures.sprintpcs.com/images/x.gif" height="5"/>
|
177
|
+
</td>
|
178
|
+
</tr>
|
179
|
+
<tr>
|
180
|
+
<td VALIGN="top" colspan="2" width="100%">
|
181
|
+
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
182
|
+
<tr>
|
183
|
+
<td bgcolor="#f1f1f1" align="left"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="385" height="15"/><span style="font-family:trebuchet ms, Helvetica, Arial, Verdana; Font-size: 11px; Color: #000000">© 2007 Sprint Nextel. All rights reserved.</span></td>
|
184
|
+
</tr>
|
185
|
+
<tr>
|
186
|
+
<td bgcolor="#f1f1f1" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" width="20" height="5"/><a href="http://www.verisign.com"><img src="http://pictures.sprintpcs.com/retailers/PCSNEXTEL/images/logos/verisign.jpg" alt="VeriSign's Home Page" border="0" /></a></td>
|
187
|
+
</tr>
|
188
|
+
<tr>
|
189
|
+
<td bgcolor="#f1f1f1" width="100%"><img src="http://pictures.sprintpcs.com/images/x.gif" border="0" height="10"/></td>
|
190
|
+
</tr>
|
191
|
+
</table>
|
192
|
+
</td>
|
193
|
+
</tr>
|
194
|
+
</table>
|
195
|
+
</body>
|
196
|
+
</html><!-- picture_mail_arrived -->
|
197
|
+
|
198
|
+
------=_Part_012345_67890123.4567890123456--
|
@@ -81,7 +81,7 @@ Content-Transfer-Encoding: 7bit
|
|
81
81
|
<table border="0" bgcolor="#ffffff" cellpadding="0" cellspacing="7" style="table-layout:fixed">
|
82
82
|
<tr>
|
83
83
|
<td align="center">
|
84
|
-
<img src="http://localhost:99163/
|
84
|
+
<img src="http://localhost:99163/mmps/RECIPIENT/000_0123a01234567895_1/2?inviteToken=helloworld0123456789&iconifyVideo=true&wm=1&limitsize=125,125&outquality=90&squareoutput=255,255,255&ext=.jpg&iconifyVideo=true&wm=1&HACK=VIDEO"/>
|
85
85
|
</td>
|
86
86
|
</tr>
|
87
87
|
</table>
|
@@ -30,7 +30,7 @@ www.verizonwireless.com/getitnow/getpix.
|
|
30
30
|
|
31
31
|
To learn how you can record videos with your wireless phone visit www.verizonwireless.com/getitnow/getflix.
|
32
32
|
|
33
|
-
To play video messages sent to email, QuickTime� 6.5 or higher is required. Visit www.apple.com/quicktime/download to download the free player or upgrade your existing QuickTime� Player. Note: During the download
|
33
|
+
To play video messages sent to email, QuickTime� 6.5 or higher is required. Visit www.apple.com/quicktime/download to download the free player or upgrade your existing QuickTime� Player. Note: During the download
|
34
34
|
process when asked to choose an installation type (Minimum, Recommended or Custom), select Minimum for faster download.
|
35
35
|
|
36
36
|
--__CONTENT_77888_PART_BOUNDARY__99922233__
|
@@ -2,7 +2,7 @@ Date: Sat, 24 Feb 2007 13:25:29 -0500 (EST)
|
|
2
2
|
Message-ID: <01234567.8901234567890.JavaMail.fooo@njbd-lalal3>
|
3
3
|
From: 2068675309@vtext.com
|
4
4
|
To: tommytutone@example.com
|
5
|
-
Subject:
|
5
|
+
Subject: hello world
|
6
6
|
Mime-Version: 1.0
|
7
7
|
Content-Type: text/plain; charset=utf-8
|
8
8
|
Content-Transfer-Encoding: 7bit
|
@@ -0,0 +1,51 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
require File.dirname(__FILE__) + "/test_helper"
|
3
|
+
require 'test/unit'
|
4
|
+
require 'rubygems'
|
5
|
+
require 'mms2r'
|
6
|
+
require 'mms2r/media'
|
7
|
+
require 'tmail/mail'
|
8
|
+
require 'logger'
|
9
|
+
|
10
|
+
|
11
|
+
class MMS2R::CingularMeMediaTest < Test::Unit::TestCase
|
12
|
+
include MMS2R::TestHelper
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@ad = "\n--\n===============================================\nBrought to you by, Cingular Wireless Messaging\nhttp://www.CingularMe.COM/"
|
16
|
+
@greet = "Brought to you by, Cingular Wireless Messaging"
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_clean_text_ad1
|
20
|
+
mail = TMail::Mail.parse(load_mail('cingularme-text-01.mail').join)
|
21
|
+
mms = MMS2R::Media.create(mail)
|
22
|
+
assert_equal MMS2R::CingularMeMedia, mms.class, "expected a #{MMS2R::CingularMeMedia} and received a #{mms.class}"
|
23
|
+
mms.process
|
24
|
+
assert_not_nil mms.media['text/plain']
|
25
|
+
file = mms.media['text/plain'][0]
|
26
|
+
assert_not_nil file
|
27
|
+
assert File::exist?(file), "file #{file} does not exist"
|
28
|
+
text = IO.readlines("#{file}").join
|
29
|
+
assert !text.match(@ad), "found ad in text"
|
30
|
+
assert !text.match(@greet), "found ad in text"
|
31
|
+
assert_equal "hello world", text
|
32
|
+
mms.purge
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_clean_text_ad2
|
36
|
+
mail = TMail::Mail.parse(load_mail('cingularme-text-02.mail').join)
|
37
|
+
mms = MMS2R::Media.create(mail)
|
38
|
+
assert_equal MMS2R::CingularMeMedia, mms.class, "expected a #{MMS2R::CingularMeMedia} and received a #{mms.class}"
|
39
|
+
mms.process
|
40
|
+
assert_not_nil mms.media['text/plain']
|
41
|
+
file = mms.media['text/plain'][0]
|
42
|
+
assert_not_nil file
|
43
|
+
assert File::exist?(file), "file #{file} does not exist"
|
44
|
+
text = IO.readlines("#{file}").join
|
45
|
+
assert !text.match(@ad), "found ad in text"
|
46
|
+
assert !text.match(@greet), "found ad in text"
|
47
|
+
assert_equal "hello world\nfoo bar", text
|
48
|
+
mms.purge
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
|
+
require File.dirname(__FILE__) + "/test_helper"
|
3
|
+
require 'test/unit'
|
4
|
+
require 'rubygems'
|
5
|
+
require 'mms2r'
|
6
|
+
require 'mms2r/media'
|
7
|
+
require 'tmail/mail'
|
8
|
+
require 'logger'
|
9
|
+
|
10
|
+
|
11
|
+
class MMS2R::DobsonMediaTest < Test::Unit::TestCase
|
12
|
+
include MMS2R::TestHelper
|
13
|
+
|
14
|
+
def test_dobson_image
|
15
|
+
mail = TMail::Mail.parse(load_mail('dobson-image-01.mail').join)
|
16
|
+
mms = MMS2R::Media.create(mail)
|
17
|
+
assert_equal mms.class, MMS2R::DobsonMedia
|
18
|
+
|
19
|
+
mms.process
|
20
|
+
|
21
|
+
assert_equal 2, mms.media.size, "Size is #{mms.media.size}"
|
22
|
+
assert_not_nil mms.media['text/plain']
|
23
|
+
assert_equal nil, mms.media['application/smil'] # dobson phones have weird SMIL that can be ignored.
|
24
|
+
assert_not_nil mms.media['image/jpeg'][0]
|
25
|
+
assert_match(/04-18-07_1723.jpg$/, mms.media['image/jpeg'][0])
|
26
|
+
|
27
|
+
assert_file_size mms.media['image/jpeg'][0], 337
|
28
|
+
|
29
|
+
file = mms.media['text/plain'][0]
|
30
|
+
assert_not_nil file
|
31
|
+
assert File::exist?(file), "file #{file} does not exist"
|
32
|
+
text = IO.readlines("#{file}").join
|
33
|
+
assert_equal "Body", text.strip
|
34
|
+
mms.purge
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_get_body_should_return_user_text
|
38
|
+
mail = TMail::Mail.parse(load_mail('dobson-image-01.mail').join)
|
39
|
+
mms = MMS2R::Media.create(mail)
|
40
|
+
mms.process
|
41
|
+
|
42
|
+
assert_equal 'Body', mms.get_body
|
43
|
+
|
44
|
+
mms.purge
|
45
|
+
end
|
46
|
+
end
|
data/test/test_mms2r_media.rb
CHANGED
@@ -5,11 +5,10 @@ require 'rubygems'
|
|
5
5
|
require 'yaml'
|
6
6
|
require 'fileutils'
|
7
7
|
require 'mms2r'
|
8
|
-
require 'mms2r/media'
|
9
8
|
require 'tmail/mail'
|
10
9
|
require 'logger'
|
11
10
|
|
12
|
-
class
|
11
|
+
class MMS2R::MediaTest < Test::Unit::TestCase
|
13
12
|
include MMS2R::TestHelper
|
14
13
|
|
15
14
|
class MMS2R::FakeCarrier < MMS2R::Media; end
|
@@ -19,16 +18,16 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
19
18
|
|
20
19
|
CARRIER_TO_CLASS = {
|
21
20
|
'mms2r.media' => MMS2R::Media,
|
22
|
-
'
|
23
|
-
'
|
21
|
+
'cingularme.com' => MMS2R::CingularMeMedia,
|
22
|
+
'mms.dobson.net' => MMS2R::DobsonMedia,
|
24
23
|
'mmode.com' => MMS2R::MModeMedia,
|
24
|
+
'mms.mycingular.com' => MMS2R::MyCingularMedia,
|
25
25
|
'messaging.nextel.com' => MMS2R::NextelMedia,
|
26
26
|
'pm.sprint.com' => MMS2R::SprintMedia,
|
27
|
-
'messaging.sprintpcs.com' => MMS2R::
|
27
|
+
'messaging.sprintpcs.com' => MMS2R::SprintPcsMedia,
|
28
28
|
'tmomail.net' => MMS2R::TMobileMedia,
|
29
|
-
'vtext.com' => MMS2R::
|
30
|
-
'vzwpix.com' => MMS2R::VerizonMedia
|
31
|
-
'mms.dobson.net' => MMS2R::DobsonMedia
|
29
|
+
'vtext.com' => MMS2R::VtextMedia,
|
30
|
+
'vzwpix.com' => MMS2R::VerizonMedia
|
32
31
|
}
|
33
32
|
|
34
33
|
def use_temp_dirs
|
@@ -57,21 +56,25 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
57
56
|
MMS2R::Media.conf_dir = @oldconfdir
|
58
57
|
end
|
59
58
|
|
59
|
+
def test_version
|
60
|
+
assert MMS2R::Media::VERSION > '0.0.1'
|
61
|
+
end
|
62
|
+
|
60
63
|
def test_collect_text_multipart_alternative
|
61
64
|
mail = TMail::Mail.parse(load_mail('simple_multipart_alternative.mail').join)
|
62
65
|
mms = MMS2R::Media.create(mail)
|
63
66
|
mms.process
|
64
|
-
assert_not_nil
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
67
|
+
assert_not_nil mms.media['text/plain']
|
68
|
+
assert_equal 3, mms.media.size
|
69
|
+
assert_equal 1, mms.media['text/plain'].size
|
70
|
+
assert_equal 1, mms.media['text/html'].size
|
71
|
+
assert_equal 1, mms.media['image/gif'].size
|
69
72
|
|
70
73
|
file = mms.media['text/plain'][0]
|
71
|
-
assert_not_nil
|
72
|
-
assert
|
74
|
+
assert_not_nil file
|
75
|
+
assert File::exist?(file), "file #{file} does not exist"
|
73
76
|
text = IO.readlines("#{file}").join
|
74
|
-
|
77
|
+
assert_equal "This is an MMS message. Hello World.", text
|
75
78
|
mms.purge
|
76
79
|
end
|
77
80
|
|
@@ -79,26 +82,39 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
79
82
|
mail = TMail::Mail.parse(load_mail('simple_image.mail').join)
|
80
83
|
mms = MMS2R::Media.create(mail)
|
81
84
|
mms.process
|
82
|
-
assert_not_nil
|
83
|
-
|
84
|
-
file = mms.media['image/gif']
|
85
|
-
assert_not_nil
|
86
|
-
assert
|
87
|
-
assert
|
85
|
+
assert_not_nil mms.media['image/gif']
|
86
|
+
assert_equal 1, mms.media.size
|
87
|
+
file = mms.media['image/gif'].first
|
88
|
+
assert_not_nil file
|
89
|
+
assert File::exist?(file), "file #{file} does not exist"
|
90
|
+
assert File.basename(file) =~ /spacer\.gif/, "file #{file} does not exist"
|
88
91
|
mms.purge
|
89
92
|
end
|
90
93
|
|
94
|
+
def test_collect_simple_image_using_block
|
95
|
+
mail = TMail::Mail.parse(load_mail('simple_image.mail').join)
|
96
|
+
mms = MMS2R::Media.create(mail)
|
97
|
+
file_array = nil
|
98
|
+
mms.process do |k, v|
|
99
|
+
file_array = v if (k == 'image/gif')
|
100
|
+
assert_not_nil(file = file_array.first)
|
101
|
+
assert(File::exist?(file), "file #{file} does not exist")
|
102
|
+
assert(File.basename(file) =~ /spacer\.gif/, "file #{file} does not exist")
|
103
|
+
end
|
104
|
+
assert !File.exist?(file_array.first)
|
105
|
+
end
|
106
|
+
|
91
107
|
def test_collect_text_plain
|
92
108
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
93
109
|
mms = MMS2R::Media.create(mail)
|
94
110
|
mms.process
|
95
|
-
assert_not_nil
|
96
|
-
|
111
|
+
assert_not_nil mms.media['text/plain']
|
112
|
+
assert_equal 1, mms.media.size
|
97
113
|
file = mms.media['text/plain'][0]
|
98
|
-
assert_not_nil
|
99
|
-
assert
|
114
|
+
assert_not_nil file
|
115
|
+
assert File::exist?(file), "file #{file} does not exist"
|
100
116
|
text = IO.readlines("#{file}").join
|
101
|
-
|
117
|
+
assert_equal "hello world", text
|
102
118
|
mms.purge
|
103
119
|
end
|
104
120
|
|
@@ -106,13 +122,14 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
106
122
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_multipart.mail').join)
|
107
123
|
mms = MMS2R::Media.create(mail)
|
108
124
|
mms.process
|
109
|
-
assert_not_nil
|
110
|
-
|
125
|
+
assert_not_nil mms.media['text/plain']
|
126
|
+
assert_not_nil mms.media['application/smil']
|
127
|
+
assert_equal 2, mms.media.size
|
111
128
|
file = mms.media['text/plain'][0]
|
112
|
-
assert_not_nil
|
113
|
-
assert
|
129
|
+
assert_not_nil file
|
130
|
+
assert File::exist?(file), "file #{file} does not exist"
|
114
131
|
text = IO.readlines("#{file}").join
|
115
|
-
|
132
|
+
assert_equal "hello world", text
|
116
133
|
mms.purge
|
117
134
|
end
|
118
135
|
|
@@ -124,9 +141,9 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
124
141
|
mms = MMS2R::Media.create(mail)
|
125
142
|
mms.process
|
126
143
|
file = mms.media['text/plain'][0]
|
127
|
-
assert
|
144
|
+
assert File::exist?(file), "file #{file} does not exist"
|
128
145
|
mms.purge
|
129
|
-
assert
|
146
|
+
assert !File::exist?(file), "file #{file} should not exist!"
|
130
147
|
end
|
131
148
|
|
132
149
|
def test_custom_media_carrier
|
@@ -136,7 +153,7 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
136
153
|
mail = TMail::Mail.new
|
137
154
|
mail.from = ["#{JENNYSNUMER}@#{host}"]
|
138
155
|
mms = MMS2R::Media.create(mail)
|
139
|
-
assert_equal
|
156
|
+
assert_equal cls, mms.class, "expected a #{cls} and received a #{mms.class}"
|
140
157
|
end
|
141
158
|
|
142
159
|
def test_create
|
@@ -144,10 +161,10 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
144
161
|
mail = TMail::Mail.new
|
145
162
|
mail.from = ["#{JENNYSNUMER}@#{car}"]
|
146
163
|
mms = MMS2R::Media.create(mail)
|
147
|
-
assert_equal
|
164
|
+
assert_equal cls, mms.class, "expected a #{cls} and received a #{mms.class}"
|
148
165
|
mms = MMS2R::Media.create(mail)
|
149
|
-
assert_equal
|
150
|
-
assert_equal
|
166
|
+
assert_equal cls, mms.class, "expected a #{cls} and received a #{mms.class}"
|
167
|
+
assert_equal car, mms.carrier, "expected a #{car} and received a #{mms.carrier}"
|
151
168
|
}
|
152
169
|
end
|
153
170
|
|
@@ -156,20 +173,20 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
156
173
|
mail = TMail::Mail.new
|
157
174
|
mail.from = ["#{JENNYSNUMER}@#{car}"]
|
158
175
|
mms = MMS2R::Media.create(mail,@log)
|
159
|
-
assert_equal
|
176
|
+
assert_equal cls, mms.class, "expected a #{cls} and received a #{mms.class}"
|
160
177
|
}
|
161
178
|
end
|
162
179
|
|
163
180
|
def test_tmp_dir
|
164
181
|
use_temp_dirs()
|
165
182
|
MMS2R::Media.tmp_dir = @tmpdir
|
166
|
-
assert
|
183
|
+
assert MMS2R::Media.tmp_dir.eql?(@tmpdir)
|
167
184
|
end
|
168
185
|
|
169
186
|
def test_conf_dir
|
170
187
|
use_temp_dirs()
|
171
188
|
MMS2R::Media.conf_dir = @confdir
|
172
|
-
assert
|
189
|
+
assert MMS2R::Media.conf_dir.eql?(@confdir)
|
173
190
|
end
|
174
191
|
|
175
192
|
def test_transform_text
|
@@ -183,18 +200,72 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
183
200
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
184
201
|
mms = MMS2R::Media.create(mail)
|
185
202
|
mms.process
|
186
|
-
assert_not_nil
|
203
|
+
assert_not_nil mms.media['text/plain']
|
187
204
|
file = mms.media['text/plain'][0]
|
188
|
-
assert_not_nil
|
189
|
-
assert
|
205
|
+
assert_not_nil file
|
206
|
+
assert File::exist?(file), "file #{file} does not exist"
|
207
|
+
text = IO.readlines("#{file}").join
|
208
|
+
assert_equal "foo bar", text
|
209
|
+
mms.purge
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_transform_text_for_application_smil
|
213
|
+
use_temp_dirs()
|
214
|
+
t={"Water" => "Juice"}
|
215
|
+
h={'application/smil' => t}
|
216
|
+
f = File.join(MMS2R::Media.conf_dir, 'mms2r_media_transform.yml')
|
217
|
+
File.open(f, 'w') do |out|
|
218
|
+
YAML.dump(h, out)
|
219
|
+
end
|
220
|
+
mail = TMail::Mail.parse(load_mail('hello_world_mail_multipart.mail').join)
|
221
|
+
mms = MMS2R::Media.create(mail)
|
222
|
+
mms.process
|
223
|
+
assert_not_nil mms.media['application/smil']
|
224
|
+
file = mms.media['application/smil'][0]
|
225
|
+
assert_not_nil file
|
226
|
+
assert File::exist?(file), "file #{file} does not exist"
|
190
227
|
text = IO.readlines("#{file}").join
|
191
|
-
|
228
|
+
assert_equal "Juice", text
|
229
|
+
mms.purge
|
230
|
+
end
|
231
|
+
|
232
|
+
def test_mms_with_two_images_should_get_media_to_largest_file
|
233
|
+
mail = TMail::Mail.parse(load_mail('simple-with-two-images-two-texts.mail').join)
|
234
|
+
mms = MMS2R::Media.create(mail)
|
235
|
+
mms.process
|
236
|
+
file = mms.get_media
|
237
|
+
assert_equal 'big.jpg', file.original_filename
|
238
|
+
mms.purge
|
239
|
+
end
|
240
|
+
|
241
|
+
def test_mms_with_two_texts_should_get_text_to_largest_file
|
242
|
+
mail = TMail::Mail.parse(load_mail('simple-with-two-images-two-texts.mail').join)
|
243
|
+
mms = MMS2R::Media.create(mail)
|
244
|
+
mms.process
|
245
|
+
file = mms.get_text
|
246
|
+
assert_equal 'big.txt', file.original_filename
|
247
|
+
mms.purge
|
248
|
+
end
|
249
|
+
|
250
|
+
def test_mms_should_have_a_phone_number
|
251
|
+
mail = TMail::Mail.parse(load_mail('hello_world_empty_text.mail').join)
|
252
|
+
mms = MMS2R::Media.create(mail)
|
253
|
+
mms.process
|
254
|
+
assert_equal '2068675309', mms.get_number
|
255
|
+
mms.purge
|
256
|
+
end
|
257
|
+
|
258
|
+
def test_transform_text_should_ignore_empty_text_parts
|
259
|
+
mail = TMail::Mail.parse(load_mail('hello_world_empty_text.mail').join)
|
260
|
+
mms = MMS2R::Media.create(mail)
|
261
|
+
mms.process
|
262
|
+
assert_equal 0, mms.media.size
|
192
263
|
mms.purge
|
193
264
|
end
|
194
265
|
|
195
266
|
def test_ignore_text
|
196
267
|
use_temp_dirs()
|
197
|
-
a=[
|
268
|
+
a=[/^hello world$/]
|
198
269
|
h={'text/plain' => a}
|
199
270
|
f = File.join(MMS2R::Media.conf_dir, 'mms2r_media_ignore.yml')
|
200
271
|
File.open(f, 'w') do |out|
|
@@ -203,8 +274,8 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
203
274
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
204
275
|
mms = MMS2R::Media.create(mail)
|
205
276
|
mms.process
|
206
|
-
assert
|
207
|
-
|
277
|
+
assert mms.media['text/plain'].nil?
|
278
|
+
assert_equal 0, mms.media.size
|
208
279
|
mms.purge
|
209
280
|
end
|
210
281
|
|
@@ -219,8 +290,8 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
219
290
|
mail = TMail::Mail.parse(load_mail('simple_image.mail').join)
|
220
291
|
mms = MMS2R::Media.create(mail)
|
221
292
|
mms.process
|
222
|
-
assert
|
223
|
-
|
293
|
+
assert mms.media['image/gif'].nil?
|
294
|
+
assert_equal 0, mms.media.size
|
224
295
|
mms.purge
|
225
296
|
end
|
226
297
|
|
@@ -235,8 +306,8 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
235
306
|
mail = TMail::Mail.parse(load_mail('simple_image.mail').join)
|
236
307
|
mms = MMS2R::Media.create(mail)
|
237
308
|
mms.process
|
238
|
-
|
239
|
-
|
309
|
+
assert_equal 1, mms.media['image/gif'].size
|
310
|
+
assert_equal 1, mms.media.size
|
240
311
|
mms.purge
|
241
312
|
end
|
242
313
|
|
@@ -245,66 +316,81 @@ class MMS2RMediaTest < Test::Unit::TestCase
|
|
245
316
|
mid1_a="1234abcd"
|
246
317
|
mid2_b="<01234567.0123456789012.JavaMail.fooba@foo-bars999>"
|
247
318
|
mid2_a="012345670123456789012JavaMailfoobafoo-bars999"
|
248
|
-
assert
|
249
|
-
assert
|
319
|
+
assert MMS2R::Media.safe_message_id(mid1_b).eql?(mid1_a)
|
320
|
+
assert MMS2R::Media.safe_message_id(mid2_b).eql?(mid2_a)
|
250
321
|
end
|
251
322
|
|
252
323
|
def default_ext
|
253
|
-
assert
|
254
|
-
assert
|
255
|
-
assert
|
256
|
-
assert
|
324
|
+
assert MMS2R::Media.default_ext('text').nil?
|
325
|
+
assert MMS2R::Media.default_ext('text/plain').eql?('plain')
|
326
|
+
assert MMS2R::Media.default_ext('image/jpeg').eql?('jpeg')
|
327
|
+
assert MMS2R::Media.default_ext('video/mp4').eql?('mp4')
|
257
328
|
end
|
258
329
|
|
259
330
|
def test_part_type
|
260
331
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
261
|
-
assert
|
332
|
+
assert MMS2R::Media.part_type?(mail).eql?('text/plain')
|
262
333
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_with_content_type.mail').join)
|
263
|
-
assert
|
334
|
+
assert MMS2R::Media.part_type?(mail).eql?('text/plain')
|
264
335
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_multipart.mail').join)
|
265
|
-
assert
|
336
|
+
assert MMS2R::Media.part_type?(mail.parts[0]).eql?('text/plain')
|
266
337
|
mail = TMail::Mail.parse(load_mail('simple_image.mail').join)
|
267
|
-
assert
|
338
|
+
assert MMS2R::Media.part_type?(mail.parts[0]).eql?('image/gif')
|
268
339
|
end
|
269
340
|
|
270
341
|
def test_main_type
|
271
342
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
272
|
-
assert
|
343
|
+
assert MMS2R::Media.main_type?(mail).eql?('text')
|
273
344
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_with_content_type.mail').join)
|
274
|
-
assert
|
345
|
+
assert MMS2R::Media.main_type?(mail).eql?('text')
|
275
346
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_multipart.mail').join)
|
276
|
-
assert
|
347
|
+
assert MMS2R::Media.main_type?(mail.parts[0]).eql?('text')
|
277
348
|
mail = TMail::Mail.parse(load_mail('simple_image.mail').join)
|
278
|
-
assert
|
349
|
+
assert MMS2R::Media.main_type?(mail.parts[0]).eql?('image')
|
279
350
|
end
|
280
351
|
|
281
352
|
def test_sub_type
|
282
353
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
283
|
-
assert
|
354
|
+
assert MMS2R::Media.sub_type?(mail).eql?('plain')
|
284
355
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_with_content_type.mail').join)
|
285
|
-
assert
|
356
|
+
assert MMS2R::Media.sub_type?(mail).eql?('plain')
|
286
357
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_multipart.mail').join)
|
287
|
-
assert
|
358
|
+
assert MMS2R::Media.sub_type?(mail.parts[0]).eql?('plain')
|
288
359
|
mail = TMail::Mail.parse(load_mail('simple_image.mail').join)
|
289
|
-
assert
|
360
|
+
assert MMS2R::Media.sub_type?(mail.parts[0]).eql?('gif')
|
290
361
|
end
|
291
362
|
|
292
363
|
def test_get_subject
|
293
|
-
subjects = [nil, '', '
|
364
|
+
subjects = [nil, '', '(no subject)']
|
294
365
|
|
366
|
+
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
295
367
|
subjects.each{|s|
|
296
|
-
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
297
368
|
mail.subject = s
|
298
369
|
mms = MMS2R::Media.create(mail)
|
299
370
|
mms.process
|
300
|
-
assert_equal
|
371
|
+
assert_equal '', mms.get_subject, "Default subject not scrubbed."
|
301
372
|
mms.purge
|
302
373
|
}
|
303
374
|
|
304
375
|
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
305
376
|
mms = MMS2R::Media.create(mail)
|
306
377
|
mms.process
|
307
|
-
assert_equal
|
378
|
+
assert_equal 'text only', mms.get_subject
|
308
379
|
mms.purge
|
309
380
|
end
|
381
|
+
|
382
|
+
def test_get_body
|
383
|
+
mail = TMail::Mail.parse(load_mail('hello_world_mail_plain_no_content_type.mail').join)
|
384
|
+
mms = MMS2R::Media.create(mail)
|
385
|
+
mms.process
|
386
|
+
assert_equal 'hello world', mms.get_body
|
387
|
+
mms.purge
|
388
|
+
end
|
389
|
+
|
390
|
+
def test_yaml_file_name
|
391
|
+
assert_equal 'mms2r_my_cingular_media_subject.yml', MMS2R::Media.yaml_file_name(MMS2R::MyCingularMedia,:subject)
|
392
|
+
assert_equal 'mms2r_t_mobile_media_subject.yml', MMS2R::Media.yaml_file_name(MMS2R::TMobileMedia,:subject)
|
393
|
+
assert_equal 'mms2r_media_ignore.yml', MMS2R::Media.yaml_file_name(MMS2R::MyCingularMedia.superclass,:ignore)
|
394
|
+
assert_equal 'mms2r_media_transform.yml', MMS2R::Media.yaml_file_name(MMS2R::Media,:transform)
|
395
|
+
end
|
310
396
|
end
|