el_finder 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,362 @@
1
+ require 'el_finder_test_case'
2
+
3
+ class TestElFinder < Test::Unit::TestCase
4
+
5
+ include ElFinderTestCase
6
+
7
+ ################################################################################
8
+
9
+ def test_default_permissions
10
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
11
+
12
+ assert_equal true, r[:cwd][:read]
13
+ assert_equal true, r[:cwd][:write]
14
+ assert_equal false, r[:cwd][:rm]
15
+
16
+ r[:cdc].each do |e|
17
+ assert_equal true, e[:read]
18
+ assert_equal true, e[:write]
19
+ assert_equal true, e[:rm]
20
+ end
21
+ end
22
+
23
+ def test_custom_permissions_on_root
24
+ @elfinder.options = {
25
+ :perms => {
26
+ '.' => {:read => false},
27
+ }
28
+ }
29
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
30
+ assert_match(/access denied/i, r[:error])
31
+ end
32
+
33
+ def test_custom_permissions
34
+ @elfinder.options = {
35
+ :perms => {
36
+ 'foo' => {:rm => false},
37
+ /.*.png$/ => {:rm => false},
38
+ /^pjkh/ => {:read => false},
39
+ 'README.txt' => {:write => false},
40
+ }
41
+ }
42
+
43
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
44
+
45
+ r[:cdc].each do |e|
46
+ case e[:name]
47
+ when 'elfinder.png'
48
+ assert_equal true, e[:read]
49
+ assert_equal true, e[:write]
50
+ assert_equal false, e[:rm]
51
+ when 'foo'
52
+ assert_equal true, e[:read]
53
+ assert_equal true, e[:write]
54
+ assert_equal false, e[:rm]
55
+ when 'pjkh.png'
56
+ assert_equal false, e[:read]
57
+ assert_equal true, e[:write]
58
+ assert_equal false, e[:rm]
59
+ when 'README.txt'
60
+ assert_equal true, e[:read]
61
+ assert_equal false, e[:write]
62
+ assert_equal true, e[:rm]
63
+ end
64
+ end
65
+ end
66
+
67
+ def test_custom_permissions_multiple_matches_prefers_false
68
+ @elfinder.options = {
69
+ :perms => {
70
+ 'pjkh.png' => {:read => false},
71
+ /pjkh/ => {:read => true},
72
+ }
73
+ }
74
+
75
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
76
+
77
+ r[:cdc].each do |e|
78
+ case e[:name]
79
+ when 'pjkh.png'
80
+ assert_equal false, e[:read]
81
+ assert_equal true, e[:write]
82
+ assert_equal true, e[:rm]
83
+ else
84
+ assert_equal true, e[:read]
85
+ assert_equal true, e[:write]
86
+ assert_equal true, e[:rm]
87
+ end
88
+ end
89
+ end
90
+
91
+ def test_custom_permissions_in_subdirectories
92
+ @elfinder.options = {
93
+ :perms => {
94
+ %r{foo/s.*} => {:read => false}
95
+ }
96
+ }
97
+
98
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
99
+ h, r = @elfinder.run(:cmd => 'open', :target => r[:cdc].find{|e| e[:name] == 'foo'}[:hash])
100
+
101
+ r[:cdc].each do |e|
102
+ case e[:name]
103
+ when 'sandy.txt', 'sam.txt'
104
+ assert_equal false, e[:read]
105
+ else
106
+ assert_equal true, e[:read]
107
+ end
108
+ end
109
+ end
110
+
111
+ def test_open_permissions
112
+ @elfinder.options = {
113
+ :perms => {
114
+ 'foo' => {:read => false}
115
+ }
116
+ }
117
+
118
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
119
+ target = r[:cdc].find{|e| e[:name] == 'foo'}
120
+ h1, r = @elfinder.run(:cmd => 'open', :target => target[:hash])
121
+ assert_match(/access denied/i, r[:error])
122
+ end
123
+
124
+ def test_mkdir_permissions
125
+ @elfinder.options = {
126
+ :perms => {
127
+ 'foo' => {:write => false}
128
+ }
129
+ }
130
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
131
+ target = r[:cdc].find{|e| e[:name] == 'foo'}
132
+ h1, r = @elfinder.run(:cmd => 'open', :target => target[:hash])
133
+
134
+ h, r = @elfinder.run(:cmd => 'mkdir', :current => r[:cwd][:hash], :name => 'dir1')
135
+ assert !File.directory?(File.join(@vroot, 'foo', 'dir1'))
136
+ assert_nil r[:select]
137
+ assert_match(/access denied/i, r[:error])
138
+ end
139
+
140
+ def test_mkfile_permissions
141
+ @elfinder.options = {
142
+ :perms => {
143
+ 'foo' => {:write => false}
144
+ }
145
+ }
146
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
147
+ target = r[:cdc].find{|e| e[:name] == 'foo'}
148
+ h1, r = @elfinder.run(:cmd => 'open', :target => target[:hash])
149
+
150
+ h, r = @elfinder.run(:cmd => 'mkfile', :current => r[:cwd][:hash], :name => 'file1')
151
+ assert !File.file?(File.join(@vroot, 'foo', 'file1'))
152
+ assert_nil r[:select]
153
+ assert_match(/access denied/i, r[:error])
154
+ end
155
+
156
+ def test_rename_permissions_file_rm_false
157
+ @elfinder.options = {
158
+ :perms => {
159
+ 'README.txt' => {:rm => false}
160
+ }
161
+ }
162
+
163
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
164
+ target = r[:cdc].find{|e| e[:name] == 'README.txt'}
165
+ h1, r = @elfinder.run(:cmd => 'rename', :target => target[:hash], :current => r[:cwd][:hash], :name => 'file1')
166
+ assert File.file?(File.join(@vroot, 'README.txt'))
167
+ assert !File.file?(File.join(@vroot, 'file1'))
168
+ assert_nil r[:select]
169
+ assert_match(/access denied/i, r[:error])
170
+ end
171
+
172
+ def test_rename_permissions_dir_write_false
173
+ @elfinder.options = {
174
+ :perms => {
175
+ '.' => {:write => false}
176
+ }
177
+ }
178
+
179
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
180
+ target = r[:cdc].find{|e| e[:name] == 'README.txt'}
181
+ h1, r = @elfinder.run(:cmd => 'rename', :target => target[:hash], :current => r[:cwd][:hash], :name => 'file1')
182
+ assert File.file?(File.join(@vroot, 'README.txt'))
183
+ assert !File.file?(File.join(@vroot, 'file1'))
184
+ assert_nil r[:select]
185
+ assert_match(/access denied/i, r[:error])
186
+ end
187
+
188
+ def test_upload_permissions
189
+ @elfinder.options = {
190
+ :perms => {
191
+ '.' => {:write => false}
192
+ }
193
+ }
194
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
195
+ uploads = []
196
+ uploads << File.open(File.join(@vroot, 'foo/philip.txt'))
197
+ h, r = @elfinder.run(:cmd => 'upload', :upload => uploads, :current => r[:cwd][:hash])
198
+ assert !File.exist?(File.join(@vroot, 'philip.txt'))
199
+ assert_nil r[:select]
200
+ assert_match(/access denied/i, r[:error])
201
+ end
202
+
203
+ def test_paste_permissions_on_dst
204
+ @elfinder.options = {
205
+ :perms => {
206
+ 'foo' => {:write => false}
207
+ }
208
+ }
209
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
210
+ targets = r[:cdc].select{|e| e[:mime] != 'directory'}
211
+ dst = r[:cdc].find{|e| e[:name] == 'foo'}
212
+
213
+ h, r = @elfinder.run(:cmd => 'paste', :targets => targets.map{|e| e[:hash]}, :dst => dst[:hash])
214
+ assert_match(/access denied/i, r[:error])
215
+ assert !File.exist?(File.join(@vroot, 'foo', 'README.txt'))
216
+ assert !File.exist?(File.join(@vroot, 'foo', 'pjkh.png'))
217
+ assert !File.exist?(File.join(@vroot, 'foo', 'elfinder.png'))
218
+ end
219
+
220
+ def test_paste_permissions_on_target
221
+ @elfinder.options = {
222
+ :perms => {
223
+ 'README.txt' => {:read => false}
224
+ }
225
+ }
226
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
227
+ targets = r[:cdc].select{|e| e[:mime] != 'directory'}
228
+ dst = r[:cdc].find{|e| e[:name] == 'foo'}
229
+
230
+ h, r = @elfinder.run(:cmd => 'paste', :targets => targets.map{|e| e[:hash]}, :dst => dst[:hash])
231
+ assert !File.exist?(File.join(@vroot, 'foo', 'README.txt'))
232
+ assert File.exist?(File.join(@vroot, 'foo', 'pjkh.png'))
233
+ assert File.exist?(File.join(@vroot, 'foo', 'elfinder.png'))
234
+ end
235
+
236
+ def test_rm_permissions_file_rm_false
237
+ @elfinder.options = {
238
+ :perms => {
239
+ /.*\.png/ => {:rm => false}
240
+ }
241
+ }
242
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
243
+ h, r = @elfinder.run(:cmd => 'rm', :targets => r[:cdc].map{|e| e[:hash]})
244
+
245
+ assert !File.exist?(File.join(@vroot, 'README.txt'))
246
+ assert File.exist?(File.join(@vroot, 'pjkh.png'))
247
+ assert File.exist?(File.join(@vroot, 'elfinder.png'))
248
+ assert !File.exist?(File.join(@vroot, 'foo'))
249
+
250
+ assert_match(/unable to be removed/i, r[:error])
251
+ assert_match(/access denied/i, r[:errorData].to_s)
252
+ end
253
+
254
+ def test_rm_permissions_chmod_perm_hack
255
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
256
+ File.unlink(File.join(@vroot, 'pjkh.png'))
257
+ h, r = @elfinder.run(:cmd => 'rm', :targets => r[:cdc].map{|e| e[:hash]})
258
+
259
+ assert_match(/unable to be removed/i, r[:error])
260
+ assert_match(/pjkh.png.*remove failed/i, r[:errorData].to_s)
261
+ end
262
+
263
+ def test_duplicate_permissions_file
264
+ @elfinder.options = {
265
+ :perms => {
266
+ 'README.txt' => {:read => false}
267
+ }
268
+ }
269
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
270
+ duplicate = r[:cdc].find{|e| e[:name] == 'README.txt'}
271
+ h, r = @elfinder.run(:cmd => 'duplicate', :target => duplicate[:hash])
272
+ assert !File.exist?(File.join(@vroot, 'README copy 1.txt'))
273
+ assert_match(/access denied/i, r[:error])
274
+ assert_match(/unable to read/i, r[:errorData].to_s)
275
+ end
276
+
277
+ def test_duplicate_permissions_directory
278
+ @elfinder.options = {
279
+ :perms => {
280
+ '.' => {:write => false}
281
+ }
282
+ }
283
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
284
+ duplicate = r[:cdc].find{|e| e[:name] == 'README.txt'}
285
+ h, r = @elfinder.run(:cmd => 'duplicate', :target => duplicate[:hash])
286
+ assert !File.exist?(File.join(@vroot, 'README copy 1.txt'))
287
+ assert_match(/access denied/i, r[:error])
288
+ assert_match(/unable to write/i, r[:errorData].to_s)
289
+ end
290
+
291
+
292
+ def test_read_file_permissions
293
+ @elfinder.options = {
294
+ :perms => {
295
+ 'README.txt' => {:read => false}
296
+ }
297
+ }
298
+
299
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
300
+ target = r[:cdc].find{|e| e[:name] == 'README.txt'}
301
+ h, r = @elfinder.run(:cmd => 'read', :target => target[:hash])
302
+
303
+ assert_nil r[:content]
304
+ assert_match(/access denied/i, r[:error])
305
+ end
306
+
307
+ def test_edit_permissions_write
308
+ @elfinder.options = {
309
+ :perms => {
310
+ 'README.txt' => {:write => false}
311
+ }
312
+ }
313
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
314
+ file = r[:cdc].find{|e| e[:name] == 'README.txt'}
315
+ h, r = @elfinder.run(:cmd => 'edit', :target => file[:hash], :content => 'Hello')
316
+ assert_match(/access denied/i, r[:error])
317
+ assert_not_equal 'Hello', File.read(File.join(@vroot, 'README.txt'))
318
+ end
319
+
320
+ def test_edit_permissions_read
321
+ @elfinder.options = {
322
+ :perms => {
323
+ 'README.txt' => {:read => false}
324
+ }
325
+ }
326
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
327
+ file = r[:cdc].find{|e| e[:name] == 'README.txt'}
328
+ h, r = @elfinder.run(:cmd => 'edit', :target => file[:hash], :content => 'Hello')
329
+ assert_match(/access denied/i, r[:error])
330
+ assert_not_equal 'Hello', File.read(File.join(@vroot, 'README.txt'))
331
+ end
332
+
333
+ def test_resize_permissions_write
334
+ @elfinder.options = {
335
+ :perms => {
336
+ 'pjkh.png' => {:write => false}
337
+ }
338
+ }
339
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
340
+ file = r[:cdc].find{|e| e[:name] == 'pjkh.png'}
341
+ h, r = @elfinder.run(:cmd => 'resize', :target => file[:hash], :current => r[:cwd][:hash], :width => '50', :height => '25')
342
+ assert_match(/access denied/i, r[:error])
343
+ assert File.exist?(File.join(@vroot, 'pjkh.png'))
344
+ assert_equal '100x100', ElFinder::ImageSize.for(File.join(@vroot, 'pjkh.png')).to_s
345
+ end
346
+
347
+ def test_resize_permissions_read
348
+ @elfinder.options = {
349
+ :perms => {
350
+ 'pjkh.png' => {:read => false}
351
+ }
352
+ }
353
+ h, r = @elfinder.run(:cmd => 'open', :init => 'true', :target => '')
354
+ file = r[:cdc].find{|e| e[:name] == 'pjkh.png'}
355
+ h, r = @elfinder.run(:cmd => 'resize', :target => file[:hash], :current => r[:cwd][:hash], :width => '50', :height => '25')
356
+ assert_match(/access denied/i, r[:error])
357
+ assert File.exist?(File.join(@vroot, 'pjkh.png'))
358
+ assert_equal '100x100', ElFinder::ImageSize.for(File.join(@vroot, 'pjkh.png')).to_s
359
+ end
360
+
361
+
362
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: el_finder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 3
10
- version: 1.0.3
9
+ - 4
10
+ version: 1.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Philip Hallstrom
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-03 00:00:00 -08:00
18
+ date: 2011-01-11 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -57,6 +57,10 @@ files:
57
57
  - lib/el_finder/mime_type.rb
58
58
  - lib/el_finder/pathname.rb
59
59
  - lib/el_finder/version.rb
60
+ - test/el_finder/test_image_size.rb
61
+ - test/el_finder/test_mime_type.rb
62
+ - test/el_finder/test_pathname.rb
63
+ - test/el_finder_test_case.rb
60
64
  - test/files/README.txt
61
65
  - test/files/elfinder.png
62
66
  - test/files/foo/philip.txt
@@ -64,10 +68,12 @@ files:
64
68
  - test/files/foo/sandy.txt
65
69
  - test/files/foo/tom.txt
66
70
  - test/files/pjkh.png
71
+ - test/files/sample.zip
67
72
  - test/test_el_finder.rb
68
- - test/test_el_finder_image_size.rb
69
- - test/test_el_finder_mime_type.rb
70
- - test/test_el_finder_pathname.rb
73
+ - test/test_el_finder_archivers.rb
74
+ - test/test_el_finder_extractors.rb
75
+ - test/test_el_finder_hash.rb
76
+ - test/test_el_finder_permissions.rb
71
77
  has_rdoc: true
72
78
  homepage: http://github.com/phallstrom/el_finder
73
79
  licenses: []
@@ -103,6 +109,10 @@ signing_key:
103
109
  specification_version: 3
104
110
  summary: elFinder server side connector for Ruby.
105
111
  test_files:
112
+ - test/el_finder/test_image_size.rb
113
+ - test/el_finder/test_mime_type.rb
114
+ - test/el_finder/test_pathname.rb
115
+ - test/el_finder_test_case.rb
106
116
  - test/files/README.txt
107
117
  - test/files/elfinder.png
108
118
  - test/files/foo/philip.txt
@@ -110,7 +120,9 @@ test_files:
110
120
  - test/files/foo/sandy.txt
111
121
  - test/files/foo/tom.txt
112
122
  - test/files/pjkh.png
123
+ - test/files/sample.zip
113
124
  - test/test_el_finder.rb
114
- - test/test_el_finder_image_size.rb
115
- - test/test_el_finder_mime_type.rb
116
- - test/test_el_finder_pathname.rb
125
+ - test/test_el_finder_archivers.rb
126
+ - test/test_el_finder_extractors.rb
127
+ - test/test_el_finder_hash.rb
128
+ - test/test_el_finder_permissions.rb