mms2r 1.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. data/History.txt +19 -1
  2. data/Manifest.txt +38 -19
  3. data/README.txt +40 -8
  4. data/Rakefile +2 -2
  5. data/conf/mms2r_cingular_me_media_subject.yml +3 -0
  6. data/conf/{mms2r_cingularmedia_transform.yml → mms2r_cingular_me_media_transform.yml} +1 -0
  7. data/conf/mms2r_dobson_media_ignore.yml +4 -0
  8. data/conf/mms2r_media_ignore.yml +4 -0
  9. data/conf/mms2r_media_subject.yml +3 -0
  10. data/conf/mms2r_my_cingular_media_subject.yml +3 -0
  11. data/conf/mms2r_nextel_media_ignore.yml +11 -0
  12. data/conf/mms2r_sprint_media_ignore.yml +5 -0
  13. data/conf/mms2r_sprint_media_subject.yml +3 -0
  14. data/conf/{mms2r_tmobilemedia_ignore.yml → mms2r_t_mobile_media_ignore.yml} +2 -5
  15. data/conf/mms2r_verizon_media_ignore.yml +4 -0
  16. data/conf/mms2r_verizon_media_transform.yml +6 -0
  17. data/dev_tools/debug_sprint_hpricot_parsing.rb +82 -0
  18. data/lib/mms2r.rb +61 -0
  19. data/lib/mms2r/cingular_me_media.rb +23 -0
  20. data/lib/mms2r/dobson_media.rb +4 -5
  21. data/lib/mms2r/{mmode_media.rb → m_mode_media.rb} +4 -4
  22. data/lib/mms2r/media.rb +283 -160
  23. data/lib/mms2r/my_cingular_media.rb +15 -0
  24. data/lib/mms2r/nextel_media.rb +9 -3
  25. data/lib/mms2r/sprint_media.rb +137 -29
  26. data/lib/mms2r/sprint_pcs_media.rb +16 -0
  27. data/lib/mms2r/t_mobile_media.rb +21 -0
  28. data/lib/mms2r/verizon_media.rb +11 -3
  29. data/lib/mms2r/vtext_media.rb +16 -0
  30. data/test/files/cingularme-text-02.mail +14 -0
  31. data/test/files/hello_world_empty_text.mail +6 -0
  32. data/test/files/hello_world_mail_multipart.mail +7 -0
  33. data/test/files/{cingular-image-01.mail → mycingular-image-01.mail} +0 -0
  34. data/test/files/simple-with-two-images-two-texts.mail +49 -0
  35. data/test/files/{sprint-image-02.mail → sprint-broken-image-01.mail} +1 -1
  36. data/test/files/sprint-image-01.mail +1 -1
  37. data/test/files/sprint-pcs-text-01.mail +8 -0
  38. data/test/files/sprint-text-01.mail +195 -8
  39. data/test/files/sprint-two-images-01.mail +198 -0
  40. data/test/files/sprint-video-01.mail +1 -1
  41. data/test/files/verizon-image-02.mail +1 -1
  42. data/test/files/vtext-text-01.mail +1 -1
  43. data/test/test_mms2r_cingular_me_media.rb +51 -0
  44. data/test/test_mms2r_dobson_media.rb +46 -0
  45. data/test/{test_mms2r_mmode.rb → test_mms2r_m_mode_media.rb} +1 -1
  46. data/test/test_mms2r_media.rb +160 -74
  47. data/test/test_mms2r_my_cingular_media.rb +31 -0
  48. data/test/test_mms2r_nextel_media.rb +100 -0
  49. data/test/test_mms2r_sprint_media.rb +221 -0
  50. data/test/test_mms2r_sprint_pcs_media.rb +27 -0
  51. data/test/{test_mms2r_tmobile.rb → test_mms2r_t_mobile_media.rb} +13 -13
  52. data/test/test_mms2r_verizon_media.rb +96 -0
  53. data/test/test_mms2r_vtext_media.rb +28 -0
  54. data/vendor/plugins/mms2r/lib/autotest/discover.rb +3 -0
  55. data/vendor/plugins/mms2r/lib/autotest/mms2r.rb +33 -0
  56. metadata +62 -37
  57. data/conf/mms2r_nextelmedia_ignore.yml +0 -10
  58. data/conf/mms2r_sprintmedia_ignore.yml +0 -10
  59. data/conf/mms2r_verizonmedia_ignore.yml +0 -3
  60. data/conf/mms2r_verizonmedia_transform.yml +0 -3
  61. data/lib/mms2r/cingular_media.rb +0 -11
  62. data/lib/mms2r/tmobile_media.rb +0 -11
  63. data/lib/mms2r/version.rb +0 -12
  64. data/test/test_mms2r_cingular.rb +0 -58
  65. data/test/test_mms2r_dobson.rb +0 -36
  66. data/test/test_mms2r_nextel.rb +0 -132
  67. data/test/test_mms2r_sprint.rb +0 -174
  68. data/test/test_mms2r_verizon.rb +0 -102
@@ -0,0 +1,31 @@
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
+ class MMS2R::MyCingularMediaTest < Test::Unit::TestCase
11
+ include MMS2R::TestHelper
12
+
13
+ def test_image
14
+ mail = TMail::Mail.parse(load_mail('mycingular-image-01.mail').join)
15
+ mms = MMS2R::Media.create(mail)
16
+ assert_equal(MMS2R::MyCingularMedia, mms.class, "expected a #{MMS2R::MyCingularMedia} and received a #{mms.class}")
17
+ mms.process
18
+
19
+ assert_equal 2, mms.media.size, "Size is #{mms.media.size}"
20
+ assert_not_nil mms.media['text/plain']
21
+ assert_not_nil mms.media['image/jpeg'][0]
22
+ assert_match(/04-18-07_1723.jpg$/, mms.media['image/jpeg'][0])
23
+
24
+ assert_equal "", mms.get_subject, "Default Cingular subject not stripped"
25
+ assert_file_size mms.media['image/jpeg'][0], 337
26
+
27
+ assert_equal "Water", IO.readlines(mms.get_text.path).join
28
+
29
+ mms.purge
30
+ end
31
+ end
@@ -0,0 +1,100 @@
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
+ class MMS2R::NextelMediaTest < Test::Unit::TestCase
11
+ include MMS2R::TestHelper
12
+
13
+ def test_simple_get_text_is_nil
14
+ mail = TMail::Mail.parse(load_mail('nextel-image-01.mail').join)
15
+ mms = MMS2R::Media.create(mail)
16
+ mms.process
17
+
18
+ assert_nil mms.get_text
19
+
20
+ mms.purge
21
+ end
22
+
23
+ def test_simple_get_media
24
+ mail = TMail::Mail.parse(load_mail('nextel-image-01.mail').join)
25
+ mms = MMS2R::Media.create(mail)
26
+ mms.process
27
+
28
+ file = mms.get_media
29
+ assert_file_size file, 337
30
+ assert_equal 'Jan15_0001.jpg', file.original_filename
31
+ assert_equal 337, file.size
32
+ assert_match(/Jan15_0001.jpg$/, file.local_path)
33
+
34
+ mms.purge
35
+ end
36
+
37
+ def test_simple_image1
38
+ mail = TMail::Mail.parse(load_mail('nextel-image-01.mail').join)
39
+ mms = MMS2R::Media.create(mail)
40
+ mms.process
41
+
42
+ assert_equal 1, mms.media.size
43
+ assert_nil mms.media['text/plain']
44
+ assert_nil mms.media['text/html']
45
+ assert_not_nil mms.media['image/jpeg'][0]
46
+ assert_match(/Jan15_0001.jpg$/, mms.media['image/jpeg'][0])
47
+
48
+ assert_file_size mms.media['image/jpeg'][0], 337
49
+
50
+ mms.purge
51
+ end
52
+
53
+ def test_simple_image2
54
+ mail = TMail::Mail.parse(load_mail('nextel-image-02.mail').join)
55
+ mms = MMS2R::Media.create(mail)
56
+ mms.process
57
+
58
+ assert_equal 1, mms.media.size
59
+ assert_nil mms.media['text/plain']
60
+ assert_nil mms.media['text/html']
61
+ assert_not_nil mms.media['image/jpeg'][0]
62
+ assert_match(/Mar12_0001.jpg$/, mms.media['image/jpeg'][0])
63
+
64
+ assert_file_size mms.media['image/jpeg'][0], 337
65
+
66
+ mms.purge
67
+ end
68
+
69
+ def test_simple_image3
70
+ mail = TMail::Mail.parse(load_mail('nextel-image-03.mail').join)
71
+ mms = MMS2R::Media.create(mail)
72
+ mms.process
73
+
74
+ assert_equal 1, mms.media.size
75
+ assert_nil mms.media['text/plain']
76
+ assert_nil mms.media['text/html']
77
+ assert_not_nil mms.media['image/jpeg'][0]
78
+ assert_match(/Apr01_0001.jpg$/, mms.media['image/jpeg'][0])
79
+
80
+ assert_file_size mms.media['image/jpeg'][0], 337
81
+
82
+ mms.purge
83
+ end
84
+
85
+ def test_simple_image4
86
+ mail = TMail::Mail.parse(load_mail('nextel-image-04.mail').join)
87
+ mms = MMS2R::Media.create(mail)
88
+ mms.process
89
+
90
+ assert_equal 1, mms.media.size
91
+ assert_nil mms.media['text/plain']
92
+ assert_nil mms.media['text/html']
93
+ assert_not_nil mms.media['image/jpeg'][0]
94
+ assert_match(/Mar20_0001.jpg$/, mms.media['image/jpeg'][0])
95
+
96
+ assert_file_size mms.media['image/jpeg'][0], 337
97
+
98
+ mms.purge
99
+ end
100
+ end
@@ -0,0 +1,221 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+ require File.dirname(__FILE__) + "/test_helper"
3
+ require 'test/unit'
4
+ require 'webrick'
5
+ require 'net/http'
6
+ require 'rubygems'
7
+ require 'mms2r'
8
+ require 'mms2r/media'
9
+ require 'tmail/mail'
10
+ require 'logger'
11
+
12
+ # this style of test was inspired by WWW::Mechanize
13
+
14
+ class SimpleImageServlet < WEBrick::HTTPServlet::AbstractServlet
15
+ def do_GET(req, res)
16
+ res['Content-Type'] = "image/jpeg"
17
+ f = "files/dot.jpg"
18
+ res.body = File.open("#{File.dirname(__FILE__)}/#{f}", 'rb') { |file|
19
+ file.read
20
+ }
21
+ end
22
+ end
23
+
24
+ class BrokenImageServlet < WEBrick::HTTPServlet::AbstractServlet
25
+ def do_GET(req, res)
26
+ raise
27
+ #res['Content-Type'] = "text/html"
28
+ #res.code = 404
29
+ #res.body = '<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1></body></html>'
30
+ end
31
+ end
32
+
33
+ class SimpleVideoServlet < WEBrick::HTTPServlet::AbstractServlet
34
+ def do_GET(req, res)
35
+ res['Content-Type'] = "video/quicktime"
36
+ f = "files/sprint.mov"
37
+ res.body = File.open("#{File.dirname(__FILE__)}/#{f}", 'rb') { |file|
38
+ file.read
39
+ }
40
+ end
41
+ end
42
+
43
+ class Net::HTTP
44
+
45
+ alias :old_do_start :do_start
46
+
47
+ def do_start
48
+ @started = true
49
+ end
50
+
51
+ SERVLETS = {
52
+ '/mmps' => SimpleImageServlet,
53
+ '/simpleimage' => SimpleImageServlet,
54
+ '/brokenimage' => BrokenImageServlet,
55
+ '/simplevideo' => SimpleVideoServlet
56
+ }
57
+
58
+ alias :old_request :request
59
+
60
+ def request(request, *data, &block)
61
+ url = URI.parse(request.path)
62
+ path = url.path.gsub('%20', ' ').match(/^\/[^\/]+/)[0]
63
+ res = Response.new
64
+ request.query = WEBrick::HTTPUtils.parse_query(url.query)
65
+ servlet = case
66
+ when request.query['HACK'].eql?('VIDEO')
67
+ SimpleVideoServlet
68
+ when request.query['HACK'].eql?('IMAGE')
69
+ SimpleImageServlet
70
+ when request.query['HACK'].eql?('BROKEN')
71
+ BrokenImageServlet
72
+ else
73
+ SERVLETS[path]
74
+ end
75
+ servlet.new({}).send("do_#{request.method}", request, res)
76
+ res.code ||= "200"
77
+ res
78
+ end
79
+ end
80
+
81
+ class Net::HTTPRequest
82
+ attr_accessor :query, :body, :cookies
83
+ end
84
+
85
+ class Response
86
+ include Net::HTTPHeader
87
+
88
+ attr_reader :code
89
+ attr_accessor :body, :query, :cookies
90
+
91
+ def code=(c)
92
+ @code = c.to_s
93
+ end
94
+
95
+ alias :status :code
96
+ alias :status= :code=
97
+
98
+ def initialize
99
+ @header = {}
100
+ @body = ''
101
+ @code = nil
102
+ @query = nil
103
+ @cookies = []
104
+ end
105
+
106
+ def read_body
107
+ yield body
108
+ end
109
+
110
+ def value()
111
+ return body if "200".eql?(@code)
112
+ raise Net::HTTPError.new('400 Bad Request', 'Good Bye')
113
+ end
114
+ end
115
+
116
+ class MMS2R::SprintMediaTest < Test::Unit::TestCase
117
+ include MMS2R::TestHelper
118
+
119
+ def setup
120
+ @log = Logger.new(STDOUT)
121
+ @log.level = Logger::DEBUG
122
+ @log.datetime_format = "%H:%M:%S"
123
+ end
124
+
125
+ def teardown; end
126
+
127
+ def test_mms_should_have_text
128
+ mail = TMail::Mail.parse(load_mail('sprint-text-01.mail').join)
129
+ mms = MMS2R::Media.create(mail)
130
+ mms.process
131
+ assert_equal 1, mms.media.size
132
+ assert_equal 1, mms.media['text/plain'].size
133
+ assert_equal 7, mms.get_text.size
134
+ text = IO.readlines("#{mms.get_text.path}").join
135
+ assert_match(/Tea Pot/, text)
136
+ mms.purge
137
+ end
138
+
139
+ def test_mms_should_have_a_phone_number
140
+ mail = TMail::Mail.parse(load_mail('sprint-image-01.mail').join)
141
+ mms = MMS2R::Media.create(mail)
142
+ mms.process
143
+ assert_equal '2068509247', mms.get_number
144
+ mms.purge
145
+ end
146
+
147
+ def test_should_have_simple_video
148
+ mail = TMail::Mail.parse(load_mail('sprint-video-01.mail').join)
149
+ mms = MMS2R::Media.create(mail)
150
+ mms.process
151
+
152
+ assert_equal 1, mms.media.size
153
+ assert_nil mms.media['text/plain']
154
+ assert_nil mms.media['text/html']
155
+ assert_not_nil mms.media['video/quicktime'][0]
156
+ assert_match(/000_0123a01234567895_1-0.mov$/, mms.media['video/quicktime'][0])
157
+
158
+ assert_file_size mms.media['video/quicktime'][0], 49063
159
+
160
+ assert_equal "", mms.get_subject, "Default Sprint subject not scrubbed."
161
+
162
+ mms.purge
163
+ end
164
+
165
+ def test_should_have_simple_image
166
+ mail = TMail::Mail.parse(load_mail('sprint-image-01.mail').join)
167
+ mms = MMS2R::Media.create(mail)
168
+ mms.process
169
+
170
+ assert_equal 1, mms.media.size
171
+ assert_nil mms.media['text/plain']
172
+ assert_nil mms.media['text/html']
173
+ assert_not_nil mms.media['image/jpeg'][0]
174
+ assert_match(/000_0123a01234567890_1-0.jpg$/, mms.media['image/jpeg'][0])
175
+
176
+ assert_file_size mms.media['image/jpeg'][0], 337
177
+
178
+ assert_equal "", mms.get_subject, "Default Sprint subject not scrubbed"
179
+
180
+ mms.purge
181
+ end
182
+
183
+ def test_should_have_two_images
184
+ mail = TMail::Mail.parse(load_mail('sprint-two-images-01.mail').join)
185
+ mms = MMS2R::Media.create(mail)
186
+ mms.process
187
+
188
+ assert_equal 1, mms.media.size
189
+ assert_nil mms.media['text/plain']
190
+ assert_nil mms.media['text/html']
191
+ assert_equal 2, mms.media['image/jpeg'].size
192
+ assert_not_nil mms.media['image/jpeg'][0]
193
+ assert_not_nil mms.media['image/jpeg'][1]
194
+ assert_match(/000_0123a01234567890_1-0.jpg$/, mms.media['image/jpeg'][0])
195
+ assert_match(/000_0123a01234567890_1-1.jpg$/, mms.media['image/jpeg'][1])
196
+
197
+ assert_file_size mms.media['image/jpeg'][0], 337
198
+ assert_file_size mms.media['image/jpeg'][1], 337
199
+
200
+ assert_equal "", mms.get_subject, "Default Sprint subject not scrubbed"
201
+
202
+ mms.purge
203
+ end
204
+
205
+ def test_image_should_be_missing
206
+ mail = TMail::Mail.parse(load_mail('sprint-broken-image-01.mail').join)
207
+ mms = MMS2R::Media.create(mail)
208
+ mms.process
209
+
210
+ assert_equal 0, mms.media.size
211
+
212
+ mms.purge
213
+ end
214
+
215
+ def test_get_body_should_return_empty_string_when_there_is_no_user_text
216
+ mail = TMail::Mail.parse(load_mail('sprint-image-01.mail').join)
217
+ mms = MMS2R::Media.create(mail)
218
+ mms.process
219
+ assert_equal("", mms.get_body)
220
+ end
221
+ end
@@ -0,0 +1,27 @@
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
+ class MMS2R::SprintPcsMediaTest < Test::Unit::TestCase
11
+ include MMS2R::TestHelper
12
+
13
+ def test_simple_text
14
+ mail = TMail::Mail.parse(load_mail('sprint-pcs-text-01.mail').join)
15
+ mms = MMS2R::Media.create(mail)
16
+ assert_equal MMS2R::SprintPcsMedia, mms.class, "expected a #{MMS2R::SprintPcsMedia} and received a #{mms.class}"
17
+ mms.process
18
+ assert_not_nil mms.media['text/plain']
19
+ file = mms.media['text/plain'][0]
20
+ assert_not_nil file
21
+ assert File::exist?(file), "file #{file} does not exist"
22
+ text = IO.readlines("#{file}").join
23
+ assert_match(/hello world/, text)
24
+ mms.purge
25
+ end
26
+
27
+ end
@@ -7,7 +7,7 @@ require 'mms2r/media'
7
7
  require 'tmail/mail'
8
8
  require 'logger'
9
9
 
10
- class MMS2RTMobileTest < Test::Unit::TestCase
10
+ class MMS2R::TMobileMediaTest < Test::Unit::TestCase
11
11
  include MMS2R::TestHelper
12
12
 
13
13
  def setup
@@ -23,13 +23,13 @@ class MMS2RTMobileTest < Test::Unit::TestCase
23
23
  mms = MMS2R::Media.create(mail)
24
24
  mms.process
25
25
 
26
- assert(mms.media.size == 1)
27
- assert_nil(mms.media['text/plain'])
28
- assert_nil(mms.media['text/html'])
29
- assert_not_nil(mms.media['image/jpeg'][0])
26
+ assert_equal 1, mms.media.size
27
+ assert_nil mms.media['text/plain']
28
+ assert_nil mms.media['text/html']
29
+ assert_not_nil mms.media['image/jpeg'][0]
30
30
  assert_match(/12-01-06_1234.jpg$/, mms.media['image/jpeg'][0])
31
31
 
32
- assert_file_size(mms.media['image/jpeg'][0], 337)
32
+ assert_file_size mms.media['image/jpeg'][0], 337
33
33
 
34
34
  mms.purge
35
35
  end
@@ -39,17 +39,17 @@ class MMS2RTMobileTest < Test::Unit::TestCase
39
39
  mms = MMS2R::Media.create(mail)
40
40
  mms.process
41
41
 
42
- assert(mms.media.size == 2)
43
- assert_not_nil(mms.media['text/plain'])
44
- assert_nil(mms.media['text/html'])
45
- assert_not_nil(mms.media['image/jpeg'][0])
42
+ assert_equal 2, mms.media.size
43
+ assert_not_nil mms.media['text/plain']
44
+ assert_nil mms.media['text/html']
45
+ assert_not_nil mms.media['image/jpeg'][0]
46
46
  assert_match(/07-25-05_0935.jpg$/, mms.media['image/jpeg'][0])
47
47
 
48
- assert_file_size(mms.media['image/jpeg'][0], 337)
48
+ assert_file_size mms.media['image/jpeg'][0], 337
49
49
 
50
50
  file = mms.media['text/plain'][0]
51
- assert_not_nil(file)
52
- assert(File::exist?(file), "file #{file} does not exist")
51
+ assert_not_nil file
52
+ assert File::exist?(file), "file #{file} does not exist"
53
53
  text = IO.readlines("#{file}").join
54
54
  assert_equal "Lillies", text.strip
55
55
 
@@ -0,0 +1,96 @@
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
+ class MMS2R::VerizonMediaTest < Test::Unit::TestCase
11
+ include MMS2R::TestHelper
12
+
13
+ def setup
14
+ @log = Logger.new(STDOUT)
15
+ @log.level = Logger::DEBUG
16
+ @log.datetime_format = "%H:%M:%S"
17
+ @ad = "This message was sent using PIX-FLIX Messaging service from Verizon Wireless!\nTo learn how you can snap pictures with your wireless phone visit\nwww.verizonwireless.com/getitnow/getpix."
18
+ @greet = "This message was sent using PIX-FLIX Messaging service from Verizon Wireless!"
19
+ end
20
+
21
+ def teardown; end
22
+
23
+ def test_simple_video
24
+ mail = TMail::Mail.parse(load_mail('verizon-video-01.mail').join)
25
+ mms = MMS2R::Media.create(mail)
26
+ mms.process
27
+
28
+ assert_equal 1, mms.media.size
29
+ assert_nil mms.media['text/plain']
30
+ assert_nil mms.media['text/html']
31
+ assert_not_nil mms.media['video/3gpp2'][0]
32
+ assert_match(/012345_67890.3g2$/, mms.media['video/3gpp2'][0])
33
+
34
+ assert_file_size mms.media['video/3gpp2'][0], 16553
35
+
36
+ mms.purge
37
+ end
38
+
39
+ def test_simple_image
40
+ mail = TMail::Mail.parse(load_mail('verizon-image-01.mail').join)
41
+ mms = MMS2R::Media.create(mail)
42
+ mms.process
43
+ assert_equal MMS2R::VerizonMedia, mms.class, "expected a #{MMS2R::VerizonMedia} and received a #{mms.class}"
44
+
45
+ assert_equal 1, mms.media.size
46
+ assert_nil mms.media['text/plain']
47
+ assert_nil mms.media['text/html']
48
+ assert_not_nil mms.media['image/jpeg'][0]
49
+ assert_match(/IMAGE_00004.jpg$/, mms.media['image/jpeg'][0])
50
+
51
+ assert_file_size mms.media['image/jpeg'][0], 337
52
+
53
+ mms.purge
54
+ end
55
+
56
+ def test_simple_text
57
+ mail = TMail::Mail.parse(load_mail('verizon-text-01.mail').join)
58
+ mms = MMS2R::Media.create(mail)
59
+ assert_equal MMS2R::VerizonMedia, mms.class, "expected a #{MMS2R::VerizonMedia} and received a #{mms.class}"
60
+ mms.process
61
+ assert_equal 1, mms.media.size
62
+ assert_not_nil mms.media['text/plain']
63
+ file = mms.media['text/plain'][0]
64
+ assert_not_nil file
65
+ assert File::exist?(file), "file #{file} does not exist"
66
+ text = IO.readlines("#{file}").join
67
+ assert_match(/hello world/, text)
68
+ mms.purge
69
+ end
70
+
71
+ def test_image_with_body_text
72
+ mail = TMail::Mail.parse(load_mail('verizon-image-02.mail').join)
73
+ mms = MMS2R::Media.create(mail)
74
+ mms.process
75
+
76
+ assert_equal 2, mms.media.size
77
+ assert_not_nil mms.media['text/plain']
78
+ assert_nil mms.media['text/html']
79
+ assert_not_nil mms.media['image/jpeg'][0]
80
+ assert_match(/04-09-07_1114.jpg$/, mms.media['image/jpeg'][0])
81
+
82
+ assert_file_size mms.media['image/jpeg'][0], 337
83
+
84
+ file = mms.media['text/plain'][0]
85
+ assert_not_nil file
86
+ assert File::exist?(file), "file #{file} does not exist"
87
+ text = IO.readlines("#{file}").join
88
+ assert !text.match(@ad), "found ad in text"
89
+ assert !text.match(@greet), "found ad in text"
90
+ assert_equal "? Weird", text
91
+
92
+ mms.purge
93
+ end
94
+
95
+
96
+ end