mime-types 1.15 → 1.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,356 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # MIME::Types
4
+ # A Ruby implementation of a MIME Types information library. Based in spirit
5
+ # on the Perl MIME::Types information library by Mark Overmeer.
6
+ # http://rubyforge.org/projects/mime-types/
7
+ #
8
+ # Licensed under the Ruby disjunctive licence with the GNU GPL or the Perl
9
+ # Artistic licence. See Licence.txt for more information.
10
+ #
11
+ # Copyright 2003 - 2009 Austin Ziegler
12
+ #++
13
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
14
+
15
+ require 'mime/types'
16
+ require 'test/unit' unless defined? $ZENTEST and $ZENTEST
17
+
18
+ module TestMIME
19
+ class TestType < Test::Unit::TestCase #:nodoc:
20
+ def setup
21
+ @zip = MIME::Type.new('x-appl/x-zip') { |t| t.extensions = ['zip', 'zp'] }
22
+ end
23
+
24
+ def test_class_from_array
25
+ assert_nothing_raised do
26
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit', 'linux')
27
+ end
28
+ assert_instance_of(MIME::Type, @yaml)
29
+ assert_equal('text/yaml', @yaml.simplified)
30
+ end
31
+
32
+ def test_class_from_hash
33
+ assert_nothing_raised do
34
+ @yaml = MIME::Type.from_hash('Content-Type' => 'text/x-yaml',
35
+ 'Content-Transfer-Encoding' => '8bit',
36
+ 'System' => 'linux',
37
+ 'Extensions' => %w(yaml yml))
38
+ end
39
+ assert_instance_of(MIME::Type, @yaml)
40
+ assert_equal('text/yaml', @yaml.simplified)
41
+ end
42
+
43
+ def test_class_from_mime_type
44
+ assert_nothing_raised do
45
+ @zip2 = MIME::Type.from_mime_type(@zip)
46
+ end
47
+ assert_instance_of(MIME::Type, @zip)
48
+ assert_equal('appl/zip', @zip.simplified)
49
+ assert_not_equal(@zip.object_id, @zip2.object_id)
50
+ end
51
+
52
+ def test_class_simplified
53
+ assert_equal(MIME::Type.simplified('text/plain'), 'text/plain')
54
+ assert_equal(MIME::Type.simplified('image/jpeg'), 'image/jpeg')
55
+ assert_equal(MIME::Type.simplified('application/x-msword'), 'application/msword')
56
+ assert_equal(MIME::Type.simplified('text/vCard'), 'text/vcard')
57
+ assert_equal(MIME::Type.simplified('application/pkcs7-mime'), 'application/pkcs7-mime')
58
+ assert_equal(@zip.simplified, 'appl/zip')
59
+ assert_equal(MIME::Type.simplified('x-xyz/abc'), 'xyz/abc')
60
+ end
61
+
62
+ def test_CMP # '<=>'
63
+ assert(MIME::Type.new('text/plain') == MIME::Type.new('text/plain'))
64
+ assert(MIME::Type.new('text/plain') != MIME::Type.new('image/jpeg'))
65
+ assert(MIME::Type.new('text/plain') == 'text/plain')
66
+ assert(MIME::Type.new('text/plain') != 'image/jpeg')
67
+ assert(MIME::Type.new('text/plain') > MIME::Type.new('text/html'))
68
+ assert(MIME::Type.new('text/plain') > 'text/html')
69
+ assert(MIME::Type.new('text/html') < MIME::Type.new('text/plain'))
70
+ assert(MIME::Type.new('text/html') < 'text/plain')
71
+ assert('text/html' == MIME::Type.new('text/html'))
72
+ assert('text/html' < MIME::Type.new('text/plain'))
73
+ assert('text/plain' > MIME::Type.new('text/html'))
74
+ end
75
+
76
+ def test_ascii_eh
77
+ assert(MIME::Type.new('text/plain').ascii?)
78
+ assert(!MIME::Type.new('image/jpeg').ascii?)
79
+ assert(!MIME::Type.new('application/x-msword').ascii?)
80
+ assert(MIME::Type.new('text/vCard').ascii?)
81
+ assert(!MIME::Type.new('application/pkcs7-mime').ascii?)
82
+ assert(!@zip.ascii?)
83
+ end
84
+
85
+ def test_binary_eh
86
+ assert(!MIME::Type.new('text/plain').binary?)
87
+ assert(MIME::Type.new('image/jpeg').binary?)
88
+ assert(MIME::Type.new('application/x-msword').binary?)
89
+ assert(!MIME::Type.new('text/vCard').binary?)
90
+ assert(MIME::Type.new('application/pkcs7-mime').binary?)
91
+ assert(@zip.binary?)
92
+ end
93
+
94
+ def test_complete_eh
95
+ assert_nothing_raised do
96
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit',
97
+ 'linux')
98
+ end
99
+ assert(@yaml.complete?)
100
+ assert_nothing_raised { @yaml.extensions = nil }
101
+ assert(!@yaml.complete?)
102
+ end
103
+
104
+ def test_content_type
105
+ assert_equal(MIME::Type.new('text/plain').content_type, 'text/plain')
106
+ assert_equal(MIME::Type.new('image/jpeg').content_type, 'image/jpeg')
107
+ assert_equal(MIME::Type.new('application/x-msword').content_type, 'application/x-msword')
108
+ assert_equal(MIME::Type.new('text/vCard').content_type, 'text/vCard')
109
+ assert_equal(MIME::Type.new('application/pkcs7-mime').content_type, 'application/pkcs7-mime')
110
+ assert_equal(@zip.content_type, 'x-appl/x-zip');
111
+ end
112
+
113
+ def test_encoding
114
+ assert_equal(MIME::Type.new('text/plain').encoding, 'quoted-printable')
115
+ assert_equal(MIME::Type.new('image/jpeg').encoding, 'base64')
116
+ assert_equal(MIME::Type.new('application/x-msword').encoding, 'base64')
117
+ assert_equal(MIME::Type.new('text/vCard').encoding, 'quoted-printable')
118
+ assert_equal(MIME::Type.new('application/pkcs7-mime').encoding, 'base64')
119
+ assert_nothing_raised do
120
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit',
121
+ 'linux')
122
+ end
123
+ assert_equal(@yaml.encoding, '8bit')
124
+ assert_nothing_raised { @yaml.encoding = 'base64' }
125
+ assert_equal(@yaml.encoding, 'base64')
126
+ assert_nothing_raised { @yaml.encoding = :default }
127
+ assert_equal(@yaml.encoding, 'quoted-printable')
128
+ assert_raises(ArgumentError) { @yaml.encoding = 'binary' }
129
+ assert_equal(@zip.encoding, 'base64')
130
+ end
131
+
132
+ def _test_default_encoding
133
+ raise NotImplementedError, 'Need to write test_default_encoding'
134
+ end
135
+
136
+ def _test_docs
137
+ raise NotImplementedError, 'Need to write test_docs'
138
+ end
139
+
140
+ def _test_docs_equals
141
+ raise NotImplementedError, 'Need to write test_docs_equals'
142
+ end
143
+
144
+ def test_eql?
145
+ assert(MIME::Type.new('text/plain').eql?(MIME::Type.new('text/plain')))
146
+ assert(!MIME::Type.new('text/plain').eql?(MIME::Type.new('image/jpeg')))
147
+ assert(!MIME::Type.new('text/plain').eql?('text/plain'))
148
+ assert(!MIME::Type.new('text/plain').eql?('image/jpeg'))
149
+ end
150
+
151
+ def _test_encoding
152
+ raise NotImplementedError, 'Need to write test_encoding'
153
+ end
154
+
155
+ def _test_encoding_equals
156
+ raise NotImplementedError, 'Need to write test_encoding_equals'
157
+ end
158
+
159
+ def test_extensions
160
+ assert_nothing_raised do
161
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit',
162
+ 'linux')
163
+ end
164
+ assert_equal(@yaml.extensions, %w(yaml yml))
165
+ assert_nothing_raised { @yaml.extensions = 'yaml' }
166
+ assert_equal(@yaml.extensions, ['yaml'])
167
+ assert_equal(@zip.extensions.size, 2)
168
+ assert_equal(@zip.extensions, ['zip', 'zp'])
169
+ end
170
+
171
+ def _test_extensions_equals
172
+ raise NotImplementedError, 'Need to write test_extensions_equals'
173
+ end
174
+
175
+ def test_like_eh
176
+ assert(MIME::Type.new('text/plain').like?(MIME::Type.new('text/plain')))
177
+ assert(MIME::Type.new('text/plain').like?(MIME::Type.new('text/x-plain')))
178
+ assert(!MIME::Type.new('text/plain').like?(MIME::Type.new('image/jpeg')))
179
+ assert(MIME::Type.new('text/plain').like?('text/plain'))
180
+ assert(MIME::Type.new('text/plain').like?('text/x-plain'))
181
+ assert(!MIME::Type.new('text/plain').like?('image/jpeg'))
182
+ end
183
+
184
+ def test_media_type
185
+ assert_equal(MIME::Type.new('text/plain').media_type, 'text')
186
+ assert_equal(MIME::Type.new('image/jpeg').media_type, 'image')
187
+ assert_equal(MIME::Type.new('application/x-msword').media_type, 'application')
188
+ assert_equal(MIME::Type.new('text/vCard').media_type, 'text')
189
+ assert_equal(MIME::Type.new('application/pkcs7-mime').media_type, 'application')
190
+ assert_equal(MIME::Type.new('x-chemical/x-pdb').media_type, 'chemical')
191
+ assert_equal(@zip.media_type, 'appl')
192
+ end
193
+
194
+ def _test_obsolete_eh
195
+ raise NotImplementedError, 'Need to write test_obsolete_eh'
196
+ end
197
+
198
+ def _test_obsolete_equals
199
+ raise NotImplementedError, 'Need to write test_obsolete_equals'
200
+ end
201
+
202
+ def test_platform_eh
203
+ assert_nothing_raised do
204
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit',
205
+ 'oddbox')
206
+ end
207
+ assert(!@yaml.platform?)
208
+ assert_nothing_raised { @yaml.system = nil }
209
+ assert(!@yaml.platform?)
210
+ assert_nothing_raised { @yaml.system = /#{RUBY_PLATFORM}/ }
211
+ assert(@yaml.platform?)
212
+ end
213
+
214
+ def test_raw_media_type
215
+ assert_equal(MIME::Type.new('text/plain').raw_media_type, 'text')
216
+ assert_equal(MIME::Type.new('image/jpeg').raw_media_type, 'image')
217
+ assert_equal(MIME::Type.new('application/x-msword').raw_media_type, 'application')
218
+ assert_equal(MIME::Type.new('text/vCard').raw_media_type, 'text')
219
+ assert_equal(MIME::Type.new('application/pkcs7-mime').raw_media_type, 'application')
220
+
221
+ assert_equal(MIME::Type.new('x-chemical/x-pdb').raw_media_type, 'x-chemical')
222
+ assert_equal(@zip.raw_media_type, 'x-appl')
223
+ end
224
+
225
+ def test_raw_sub_type
226
+ assert_equal(MIME::Type.new('text/plain').raw_sub_type, 'plain')
227
+ assert_equal(MIME::Type.new('image/jpeg').raw_sub_type, 'jpeg')
228
+ assert_equal(MIME::Type.new('application/x-msword').raw_sub_type, 'x-msword')
229
+ assert_equal(MIME::Type.new('text/vCard').raw_sub_type, 'vCard')
230
+ assert_equal(MIME::Type.new('application/pkcs7-mime').raw_sub_type, 'pkcs7-mime')
231
+ assert_equal(@zip.raw_sub_type, 'x-zip')
232
+ end
233
+
234
+ def test_registered_eh
235
+ assert(MIME::Type.new('text/plain').registered?)
236
+ assert(MIME::Type.new('image/jpeg').registered?)
237
+ assert(!MIME::Type.new('application/x-msword').registered?)
238
+ assert(MIME::Type.new('text/vCard').registered?)
239
+ assert(MIME::Type.new('application/pkcs7-mime').registered?)
240
+ assert(!@zip.registered?)
241
+ end
242
+
243
+ def _test_registered_equals
244
+ raise NotImplementedError, 'Need to write test_registered_equals'
245
+ end
246
+
247
+ def test_signature_eh
248
+ assert(!MIME::Type.new('text/plain').signature?)
249
+ assert(!MIME::Type.new('image/jpeg').signature?)
250
+ assert(!MIME::Type.new('application/x-msword').signature?)
251
+ assert(MIME::Type.new('text/vCard').signature?)
252
+ assert(MIME::Type.new('application/pkcs7-mime').signature?)
253
+ end
254
+
255
+ def test_simplified
256
+ assert_equal(MIME::Type.new('text/plain').simplified, 'text/plain')
257
+ assert_equal(MIME::Type.new('image/jpeg').simplified, 'image/jpeg')
258
+ assert_equal(MIME::Type.new('application/x-msword').simplified, 'application/msword')
259
+ assert_equal(MIME::Type.new('text/vCard').simplified, 'text/vcard')
260
+ assert_equal(MIME::Type.new('application/pkcs7-mime').simplified, 'application/pkcs7-mime')
261
+ assert_equal(MIME::Type.new('x-chemical/x-pdb').simplified, 'chemical/pdb')
262
+ end
263
+
264
+ def test_sub_type
265
+ assert_equal(MIME::Type.new('text/plain').sub_type, 'plain')
266
+ assert_equal(MIME::Type.new('image/jpeg').sub_type, 'jpeg')
267
+ assert_equal(MIME::Type.new('application/x-msword').sub_type, 'msword')
268
+ assert_equal(MIME::Type.new('text/vCard').sub_type, 'vcard')
269
+ assert_equal(MIME::Type.new('application/pkcs7-mime').sub_type, 'pkcs7-mime')
270
+ assert_equal(@zip.sub_type, 'zip')
271
+ end
272
+
273
+ def test_system_equals
274
+ assert_nothing_raised do
275
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit',
276
+ 'linux')
277
+ end
278
+ assert_equal(@yaml.system, %r{linux})
279
+ assert_nothing_raised { @yaml.system = /win32/ }
280
+ assert_equal(@yaml.system, %r{win32})
281
+ assert_nothing_raised { @yaml.system = nil }
282
+ assert_nil(@yaml.system)
283
+ end
284
+
285
+ def test_system_eh
286
+ assert_nothing_raised do
287
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit',
288
+ 'linux')
289
+ end
290
+ assert(@yaml.system?)
291
+ assert_nothing_raised { @yaml.system = nil }
292
+ assert(!@yaml.system?)
293
+ end
294
+
295
+ def test_to_a
296
+ assert_nothing_raised do
297
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit',
298
+ 'linux')
299
+ end
300
+ assert_equal(@yaml.to_a, ['text/x-yaml', %w(yaml yml), '8bit',
301
+ /linux/, nil, nil, nil, false])
302
+ end
303
+
304
+ def test_to_hash
305
+ assert_nothing_raised do
306
+ @yaml = MIME::Type.from_array('text/x-yaml', %w(yaml yml), '8bit',
307
+ 'linux')
308
+ end
309
+ assert_equal(@yaml.to_hash,
310
+ { 'Content-Type' => 'text/x-yaml',
311
+ 'Content-Transfer-Encoding' => '8bit',
312
+ 'Extensions' => %w(yaml yml),
313
+ 'System' => /linux/,
314
+ 'Registered' => false,
315
+ 'URL' => nil,
316
+ 'Obsolete' => nil,
317
+ 'Docs' => nil })
318
+ end
319
+
320
+ def test_to_s
321
+ assert_equal("#{MIME::Type.new('text/plain')}", 'text/plain')
322
+ end
323
+
324
+ def test_class_constructors
325
+ assert_not_nil(@zip)
326
+ yaml = MIME::Type.new('text/x-yaml') do |y|
327
+ y.extensions = %w(yaml yml)
328
+ y.encoding = '8bit'
329
+ y.system = 'linux'
330
+ end
331
+ assert_instance_of(MIME::Type, yaml)
332
+ assert_raises(MIME::InvalidContentType) { MIME::Type.new('apps') }
333
+ assert_raises(MIME::InvalidContentType) { MIME::Type.new(nil) }
334
+ end
335
+
336
+ def _test_to_str
337
+ raise NotImplementedError, 'Need to write test_to_str'
338
+ end
339
+
340
+ def _test_url
341
+ raise NotImplementedError, 'Need to write test_url'
342
+ end
343
+
344
+ def _test_url_equals
345
+ raise NotImplementedError, 'Need to write test_url_equals'
346
+ end
347
+
348
+ def _test_urls
349
+ raise NotImplementedError, 'Need to write test_urls'
350
+ end
351
+
352
+ def __test_use_instead
353
+ raise NotImplementedError, 'Need to write test_use_instead'
354
+ end
355
+ end
356
+ end
@@ -0,0 +1,122 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # MIME::Types
4
+ # A Ruby implementation of a MIME Types information library. Based in spirit
5
+ # on the Perl MIME::Types information library by Mark Overmeer.
6
+ # http://rubyforge.org/projects/mime-types/
7
+ #
8
+ # Licensed under the Ruby disjunctive licence with the GNU GPL or the Perl
9
+ # Artistic licence. See Licence.txt for more information.
10
+ #
11
+ # Copyright 2003 - 2009 Austin Ziegler
12
+ #++
13
+ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib") if __FILE__ == $0
14
+
15
+ require 'mime/types'
16
+ require 'test/unit' unless defined? $ZENTEST and $ZENTEST
17
+
18
+ module TestMIME
19
+ class TestTypes < Test::Unit::TestCase #:nodoc:
20
+ def test_class_index_1
21
+ text_plain = MIME::Type.new('text/plain') do |t|
22
+ t.encoding = '8bit'
23
+ t.extensions = %w(asc txt c cc h hh cpp hpp dat hlp)
24
+ end
25
+ text_plain_vms = MIME::Type.new('text/plain') do |t|
26
+ t.encoding = '8bit'
27
+ t.extensions = %w(doc)
28
+ t.system = 'vms'
29
+ end
30
+
31
+ assert_equal(MIME::Types['text/plain'], [text_plain, text_plain_vms])
32
+ end
33
+
34
+ def test_class_index_2
35
+ tst_bmp = MIME::Types["image/x-bmp"] +
36
+ MIME::Types["image/vnd.wap.wbmp"] + MIME::Types["image/x-win-bmp"]
37
+
38
+ assert_equal(tst_bmp.sort, MIME::Types[/bmp$/].sort)
39
+
40
+ assert_nothing_raised {
41
+ MIME::Types['image/bmp'][0].system = RUBY_PLATFORM
42
+ }
43
+
44
+ assert_equal([MIME::Type.from_array('image/x-bmp', ['bmp'])],
45
+ MIME::Types[/bmp$/, { :platform => true }])
46
+ end
47
+
48
+ def test_class_index_3
49
+ assert(MIME::Types['text/vnd.fly', { :complete => true }].empty?)
50
+ assert(!MIME::Types['text/plain', { :complete => true} ].empty?)
51
+ end
52
+
53
+ def _test_class_index_extensions
54
+ raise NotImplementedError, 'Need to write test_class_index_extensions'
55
+ end
56
+
57
+ def _test_class_add
58
+ assert_nothing_raised do
59
+ @eruby = MIME::Type.new("application/x-eruby") do |t|
60
+ t.extensions = "rhtml"
61
+ t.encoding = "8bit"
62
+ end
63
+
64
+ MIME::Types.add(@eruby)
65
+ end
66
+
67
+ assert_equal(MIME::Types['application/x-eruby'], [@eruby])
68
+ end
69
+
70
+ def _test_class_add_type_variant
71
+ raise NotImplementedError, 'Need to write test_class_add_type_variant'
72
+ end
73
+
74
+ def test_class_type_for
75
+ assert_equal(MIME::Types.type_for('xml').sort, [ MIME::Types['text/xml'], MIME::Types['application/xml'] ].sort)
76
+ assert_equal(MIME::Types.type_for('gif'), MIME::Types['image/gif'])
77
+ assert_nothing_raised do
78
+ MIME::Types['image/gif'][0].system = RUBY_PLATFORM
79
+ end
80
+ assert_equal(MIME::Types.type_for('gif', true), MIME::Types['image/gif'])
81
+ assert(MIME::Types.type_for('zzz').empty?)
82
+ end
83
+
84
+ def test_class_of
85
+ assert_equal(MIME::Types.of('xml').sort, [ MIME::Types['text/xml'], MIME::Types['application/xml'] ].sort)
86
+ assert_equal(MIME::Types.of('gif'), MIME::Types['image/gif'])
87
+ assert_nothing_raised do
88
+ MIME::Types['image/gif'][0].system = RUBY_PLATFORM
89
+ end
90
+ assert_equal(MIME::Types.of('gif', true), MIME::Types['image/gif'])
91
+ assert(MIME::Types.of('zzz').empty?)
92
+ end
93
+
94
+ def _test_add
95
+ raise NotImplementedError, 'Need to write test_add'
96
+ end
97
+
98
+ def _test_add_type_variant
99
+ raise NotImplementedError, 'Need to write test_add_type_variant'
100
+ end
101
+
102
+ def _test_data_version
103
+ raise NotImplementedError, 'Need to write test_data_version'
104
+ end
105
+
106
+ def _test_index
107
+ raise NotImplementedError, 'Need to write test_index'
108
+ end
109
+
110
+ def _test_index_extensions
111
+ raise NotImplementedError, 'Need to write test_index_extensions'
112
+ end
113
+
114
+ def _test_of
115
+ raise NotImplementedError, 'Need to write test_of'
116
+ end
117
+
118
+ def _test_type_for
119
+ raise NotImplementedError, 'Need to write test_type_for'
120
+ end
121
+ end
122
+ end