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
@@ -1,174 +0,0 @@
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
- res['Content-Type'] = "text/html"
27
- res.code = 404
28
- res.body = '<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1></body></html>'
29
- end
30
- end
31
-
32
- class SimpleVideoServlet < WEBrick::HTTPServlet::AbstractServlet
33
- def do_GET(req, res)
34
- res['Content-Type'] = "video/quicktime"
35
- f = "files/sprint.mov"
36
- res.body = File.open("#{File.dirname(__FILE__)}/#{f}", 'rb') { |file|
37
- file.read
38
- }
39
- end
40
- end
41
-
42
- class Net::HTTP
43
-
44
- alias :old_do_start :do_start
45
-
46
- def do_start
47
- @started = true
48
- end
49
-
50
- SERVLETS = {
51
- '/simpleimage' => SimpleImageServlet,
52
- '/brokenimage' => BrokenImageServlet,
53
- '/simplevideo' => SimpleVideoServlet
54
- }
55
-
56
- alias :old_request :request
57
-
58
- def request(request, *data, &block)
59
- url = URI.parse(request.path)
60
- path = url.path.gsub('%20', ' ').match(/^\/[^\/]+/)[0]
61
- res = Response.new
62
- request.query = WEBrick::HTTPUtils.parse_query(url.query)
63
- SERVLETS[path].new({}).send("do_#{request.method}", request, res)
64
- res.code ||= "200"
65
- res
66
- end
67
- end
68
-
69
- class Net::HTTPRequest
70
- attr_accessor :query, :body, :cookies
71
- end
72
-
73
- class Response
74
- include Net::HTTPHeader
75
-
76
- attr_reader :code
77
- attr_accessor :body, :query, :cookies
78
-
79
- def code=(c)
80
- @code = c.to_s
81
- end
82
-
83
- alias :status :code
84
- alias :status= :code=
85
-
86
- def initialize
87
- @header = {}
88
- @body = ''
89
- @code = nil
90
- @query = nil
91
- @cookies = []
92
- end
93
-
94
- def read_body
95
- yield body
96
- end
97
-
98
- def value()
99
- return body if "200".eql?(@code)
100
- raise Net::HTTPError.new('400 Bad Request', 'Good Bye')
101
- end
102
- end
103
-
104
- class MMS2RSprintTest < Test::Unit::TestCase
105
- include MMS2R::TestHelper
106
-
107
- def setup
108
- @log = Logger.new(STDOUT)
109
- @log.level = Logger::DEBUG
110
- @log.datetime_format = "%H:%M:%S"
111
- end
112
-
113
- def teardown; end
114
-
115
- def test_simple_video
116
- mail = TMail::Mail.parse(load_mail('sprint-video-01.mail').join)
117
- mms = MMS2R::Media.create(mail)
118
- mms.process
119
-
120
- assert(mms.media.size == 1)
121
- assert_nil(mms.media['text/plain'])
122
- assert_nil(mms.media['text/html'])
123
- assert_not_nil(mms.media['video/quicktime'][0])
124
- assert_match(/000_0123a01234567895_1.mov$/, mms.media['video/quicktime'][0])
125
-
126
- assert_file_size(mms.media['video/quicktime'][0], 49063)
127
-
128
- assert_equal(nil, mms.get_subject, "Default Sprint subject not scrubbed.")
129
-
130
- mms.purge
131
- end
132
-
133
- def test_simple_image
134
- mail = TMail::Mail.parse(load_mail('sprint-image-01.mail').join)
135
- mms = MMS2R::Media.create(mail)
136
- mms.process
137
-
138
- assert(mms.media.size == 1)
139
- assert_nil(mms.media['text/plain'])
140
- assert_nil(mms.media['text/html'])
141
- assert_not_nil(mms.media['image/jpeg'][0])
142
- assert_match(/000_0123a01234567890_1.jpg$/, mms.media['image/jpeg'][0])
143
-
144
- assert_file_size(mms.media['image/jpeg'][0], 337)
145
-
146
- assert_equal(nil, mms.get_subject, "Default Sprint subject not scrubbed")
147
-
148
- mms.purge
149
- end
150
-
151
- def test_broken_image
152
- mail = TMail::Mail.parse(load_mail('sprint-image-02.mail').join)
153
- mms = MMS2R::Media.create(mail)
154
- mms.process
155
-
156
- assert(mms.media.size == 0)
157
-
158
- mms.purge
159
- end
160
-
161
- def test_simple_text
162
- mail = TMail::Mail.parse(load_mail('sprint-text-01.mail').join)
163
- mms = MMS2R::Media.create(mail)
164
- assert_equal(MMS2R::SprintMedia, mms.class, "expected a #{MMS2R::SprintMedia} and received a #{mms.class}")
165
- mms.process
166
- assert_not_nil(mms.media['text/plain'])
167
- file = mms.media['text/plain'][0]
168
- assert_not_nil(file)
169
- assert(File::exist?(file), "file #{file} does not exist")
170
- text = IO.readlines("#{file}").join
171
- assert_match(/hello world/, text)
172
- mms.purge
173
- end
174
- end
@@ -1,102 +0,0 @@
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 MMS2RVerizonTest < 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
- end
18
-
19
- def teardown; end
20
-
21
- def test_simple_video
22
- mail = TMail::Mail.parse(load_mail('verizon-video-01.mail').join)
23
- mms = MMS2R::Media.create(mail)
24
- mms.process
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['video/3gpp2'][0])
30
- assert_match(/012345_67890.3g2$/, mms.media['video/3gpp2'][0])
31
-
32
- assert_file_size(mms.media['video/3gpp2'][0], 16553)
33
-
34
- mms.purge
35
- end
36
-
37
- def test_simple_image
38
- mail = TMail::Mail.parse(load_mail('verizon-image-01.mail').join)
39
- mms = MMS2R::Media.create(mail)
40
- mms.process
41
-
42
- assert(mms.media.size == 1)
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(/IMAGE_00004.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_text
54
- mail = TMail::Mail.parse(load_mail('verizon-text-01.mail').join)
55
- mms = MMS2R::Media.create(mail)
56
- assert_equal(MMS2R::VerizonMedia, mms.class, "expected a #{MMS2R::VerizonMedia} and received a #{mms.class}")
57
- mms.process
58
- assert_not_nil(mms.media['text/plain'])
59
- file = mms.media['text/plain'][0]
60
- assert_not_nil(file)
61
- assert(File::exist?(file), "file #{file} does not exist")
62
- text = IO.readlines("#{file}").join
63
- assert_match(/hello world/, text)
64
- mms.purge
65
- end
66
-
67
- def test_simple_text_vtext
68
- mail = TMail::Mail.parse(load_mail('vtext-text-01.mail').join)
69
- mms = MMS2R::Media.create(mail)
70
- assert_equal(MMS2R::VerizonMedia, mms.class, "expected a #{MMS2R::VerizonMedia} and received a #{mms.class}")
71
- mms.process
72
- assert_not_nil(mms.media['text/plain'])
73
- file = mms.media['text/plain'][0]
74
- assert_not_nil(file)
75
- assert(File::exist?(file), "file #{file} does not exist")
76
- text = IO.readlines("#{file}").join
77
- assert_match(/hello world/, text)
78
- mms.purge
79
- end
80
-
81
- def test_image_with_body_text
82
- mail = TMail::Mail.parse(load_mail('verizon-image-02.mail').join)
83
- mms = MMS2R::Media.create(mail)
84
- mms.process
85
-
86
- assert(mms.media.size == 2)
87
- assert_not_nil(mms.media['text/plain'])
88
- assert_nil(mms.media['text/html'])
89
- assert_not_nil(mms.media['image/jpeg'][0])
90
- assert_match(/04-09-07_1114.jpg$/, mms.media['image/jpeg'][0])
91
-
92
- assert_file_size(mms.media['image/jpeg'][0], 337)
93
-
94
- file = mms.media['text/plain'][0]
95
- assert_not_nil(file)
96
- assert(File::exist?(file), "file #{file} does not exist")
97
- text = IO.readlines("#{file}").join
98
- assert_equal "? Weird", text
99
-
100
- mms.purge
101
- end
102
- end