el_finder 1.0.3 → 1.0.4

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.
@@ -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