repository-manager 0.1.30 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +36 -22
- data/lib/repository_manager/has_repository.rb +20 -15
- data/lib/repository_manager/version.rb +1 -1
- data/spec/has_repository_spec.rb +23 -23
- data/spec/models/repository_spec.rb +20 -13
- data/spec/models/share_spec.rb +8 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf952fb3752184fb64aa5278be4d0d0f12efd79b
|
4
|
+
data.tar.gz: c16ab36bac207d748e4ed0acb716b141cb616e12
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb2137ad712f97e313e27ce012fe4a909de4134d92be97845f66605c3e7343c155596102debac1634dc931ed9651a41d9931e06009a4471f8a4e18da8eedb94d
|
7
|
+
data.tar.gz: 54138b1cef9e644e8037eac0482d2987d7bd5e3a9862af381d193c4a432fc0c322b417802322bd95f018a34135a4e21344847b80723649d28216bccb6fe10c10
|
data/README.md
CHANGED
@@ -118,9 +118,9 @@ A few methods are written in those two ways :
|
|
118
118
|
|
119
119
|
The two methods do the same, but the one with the "!" returns an Exception error if it is a problem (PermissionException or RepositoryManagerException for instance) and the method without "!" return false if it has a problem.
|
120
120
|
|
121
|
-
### How can I
|
121
|
+
### How can I manage a repo_item (file or folder)
|
122
122
|
|
123
|
-
You just have to call the `has_repository` methods `create_file`, `create_folder`, `move_repo_item`, `copy_repo_item` or `delete_repo_item`.
|
123
|
+
You just have to call the `has_repository` methods `create_file`, `create_folder`, `move_repo_item`, `copy_repo_item`, `rename_repo_item` or `delete_repo_item`.
|
124
124
|
|
125
125
|
```ruby
|
126
126
|
# user1 wants to create a folder in his repository
|
@@ -174,7 +174,7 @@ test_folder = user1.create_folder('Test folder')
|
|
174
174
|
# |-- 'Test folder'
|
175
175
|
|
176
176
|
# user1 want to move 'The new folder' in 'Test folder'
|
177
|
-
user1.move_repo_item(the_new_folder, test_folder)
|
177
|
+
user1.move_repo_item(the_new_folder, source_folder: test_folder)
|
178
178
|
|
179
179
|
# user1 own repository :
|
180
180
|
# |-- 'Root folder'
|
@@ -194,7 +194,7 @@ user1.rename_repo_item(the_new_folder, 'The renamed folder')
|
|
194
194
|
# | | |-- 'file.txt'
|
195
195
|
|
196
196
|
# user1 want to copy 'Root folder' into 'Test folder'
|
197
|
-
user1.copy_repo_item(source_folder, test_folder)
|
197
|
+
user1.copy_repo_item(source_folder, source_folder: test_folder)
|
198
198
|
|
199
199
|
# user1 own repository :
|
200
200
|
# |-- 'Root folder'
|
@@ -242,7 +242,7 @@ WARNING : There is no verification if the user1 has the permission to create a f
|
|
242
242
|
|
243
243
|
### How can I share a repo_item (file/folder)
|
244
244
|
|
245
|
-
Now, user1 want to share his folder 'The new folder' with a Group object `group1` and another User object `user2`. You can use the `has_repository` method `
|
245
|
+
Now, user1 want to share his folder 'The new folder' with a Group object `group1` and another User object `user2`. You can use the `has_repository` method `share_repo_item(repo_item, member, options = nil)`.
|
246
246
|
|
247
247
|
|
248
248
|
```ruby
|
@@ -253,12 +253,24 @@ members = []
|
|
253
253
|
members << group1
|
254
254
|
members << user2
|
255
255
|
|
256
|
-
sharing = user1.
|
256
|
+
sharing = user1.share_repo_item(the_new_folder, members)
|
257
257
|
|
258
258
|
# If you want to customize your sharing options, you can do it like this:
|
259
|
-
options = {
|
260
|
-
|
261
|
-
|
259
|
+
options = {
|
260
|
+
sharing_permissions: {
|
261
|
+
can_add: true,
|
262
|
+
can_remove: false
|
263
|
+
},
|
264
|
+
repo_item_permissions: {
|
265
|
+
can_read: true,
|
266
|
+
can_create: true,
|
267
|
+
can_update: true,
|
268
|
+
can_delete: false,
|
269
|
+
can_share: true
|
270
|
+
}
|
271
|
+
}
|
272
|
+
|
273
|
+
sharing = user1.share_repo_item(the_new_folder, members, options)
|
262
274
|
```
|
263
275
|
|
264
276
|
`repo_item_permissions` specifies what kind of permissions you give on the repo_item in a specific sharing.
|
@@ -282,16 +294,16 @@ children = @user1.create_folder('Children', nested)
|
|
282
294
|
# | |-- 'Nested'
|
283
295
|
# | | |-- 'Children'
|
284
296
|
|
285
|
-
@user1.
|
297
|
+
@user1.share_repo_item(nested, @user2)
|
286
298
|
|
287
299
|
nested.can_be_shared_without_nesting? # Returns true (because `nested` is shared but there exist no nested sharing)
|
288
300
|
parent.can_be_shared_without_nesting? # Returns false (because there is a sharing on one of his descendants)
|
289
301
|
children.can_be_shared_without_nesting? # Returns false (because there is a sharing on one of his ancestors)
|
290
302
|
|
291
303
|
# Here we can't share 'Parent' or 'Children' because it already exist a nested sharing.
|
292
|
-
@user1.
|
293
|
-
@user1.
|
294
|
-
@user1.
|
304
|
+
@user1.share_repo_item(parent, @user2) # Returns false
|
305
|
+
@user1.share_repo_item!(parent, @user2) # Raise a NestedSharingException (note the "!")
|
306
|
+
@user1.share_repo_item!(children, @user2) # Raise a NestedSharingException (note the "!")
|
295
307
|
```
|
296
308
|
|
297
309
|
### How can I see my repo_items
|
@@ -333,13 +345,15 @@ Recall: a repo_item can be:
|
|
333
345
|
|
334
346
|
```ruby
|
335
347
|
# We want to know if the object repo_item is a file or a folder:
|
336
|
-
if repo_item.is_folder
|
348
|
+
if repo_item.is_folder?
|
337
349
|
repo_item.name #=> Returns the name of the folder (for instance : 'New folder').
|
338
350
|
elsif repo_item.is_file?
|
339
351
|
repo_item.name #=> Returns the name of the file (for instance : 'file.png').
|
340
352
|
# Here is the file
|
341
353
|
repo_item.file.url # => '/url/to/stored_file.png'
|
342
354
|
repo_item.file.current_path # => 'path/to/stored_file.png'
|
355
|
+
else
|
356
|
+
# Wait... WHAT ?!
|
343
357
|
end
|
344
358
|
```
|
345
359
|
|
@@ -437,21 +451,21 @@ Like the repo_item permissions, you can get the sharing permissions of an `objec
|
|
437
451
|
|
438
452
|
### Download a repository
|
439
453
|
|
440
|
-
RepositoryManager make the download of a `repo_item` easy. If the user want to download a file, use the `has_repository` method : `
|
454
|
+
RepositoryManager make the download of a `repo_item` easy. If the user want to download a file, use the `has_repository` method : `download_repo_item`. This method returns you the path of the file (if the user `can_read` it).
|
441
455
|
|
442
456
|
If the `repo_item` is a file, the method returns you the path of this file.
|
443
457
|
If the `repo_item` is a folder, it automatically generates a zip file with all the constant that the user `can_read`. The method returns the path of this zip file.
|
444
458
|
|
445
459
|
```ruby
|
446
460
|
# user1 want to download the_file
|
447
|
-
path_to_file = user1.
|
461
|
+
path_to_file = user1.download_repo_item(the_file)
|
448
462
|
# don't forget to specify the name of the file (it could have been changed since uploaded)
|
449
463
|
send_file path_to_file, filename: the_file.name
|
450
464
|
```
|
451
465
|
|
452
466
|
```ruby
|
453
467
|
# user1 want to download the_folder
|
454
|
-
path_to_zip = user1.
|
468
|
+
path_to_zip = user1.download_repo_item(the_folder)
|
455
469
|
|
456
470
|
# Then you can do what you want with this path, you can use the send_file method from rails in your controller
|
457
471
|
send_file path_to_zip
|
@@ -473,7 +487,7 @@ the_folder.delete_zip
|
|
473
487
|
|
474
488
|
### Errors handling
|
475
489
|
|
476
|
-
When an error happen, you (and the user also) want to know what
|
490
|
+
When an error happen, you (and the user also) want to know what is the source of the problem. I tried to make it the most simple as possible.
|
477
491
|
|
478
492
|
For the two `has_repository` methods `create_file` and `create_folder`, the errors are pushed into the `options` hash parameter with the key `errors` (`options[:errors]`)
|
479
493
|
|
@@ -498,7 +512,7 @@ else
|
|
498
512
|
options[:errors] # Contains array of errors
|
499
513
|
```
|
500
514
|
|
501
|
-
For the other `has_repository` methods, the
|
515
|
+
For the other `has_repository` methods, the errors are added in the first object passed in parameter (for instance: `repo_item` or `sharing`)
|
502
516
|
|
503
517
|
|
504
518
|
```ruby
|
@@ -506,18 +520,18 @@ For the other `has_repository` methods, the error is added to the first object p
|
|
506
520
|
if @group.delete_repo_item(@repo_item)
|
507
521
|
redirect_to :back, notice: 'Item deleted'
|
508
522
|
else
|
509
|
-
# repo_item.errors ==> Contains the errors
|
510
523
|
redirect_to :back, alert: repo_item.errors.messages[:delete].first
|
511
524
|
end
|
525
|
+
|
526
|
+
# repo_item.errors ==> Contains the errors
|
512
527
|
```
|
513
528
|
|
514
529
|
|
515
530
|
## TODO
|
516
531
|
|
517
|
-
- Test the rename file method
|
518
532
|
- Write the methods : share_link.
|
519
|
-
- Snapshot the file if possible
|
520
533
|
- Versioning
|
534
|
+
- Snapshot the file if possible
|
521
535
|
- ...
|
522
536
|
|
523
537
|
|
@@ -43,7 +43,7 @@ module RepositoryManager
|
|
43
43
|
# options[:sharing_permissions] contains :
|
44
44
|
# <tt>:can_add</tt> - Specify if the member can add objects to the sharing
|
45
45
|
# <tt>:can_remove</tt> - Specify if the member can remove object to the sharing
|
46
|
-
def
|
46
|
+
def share_repo_item!(repo_item, members, options = {})
|
47
47
|
|
48
48
|
# Nested sharing are not accepted
|
49
49
|
if !RepositoryManager.accept_nested_sharing
|
@@ -86,9 +86,9 @@ module RepositoryManager
|
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
-
def
|
89
|
+
def share_repo_item(repo_item, members, options = {})
|
90
90
|
begin
|
91
|
-
|
91
|
+
share_repo_item!(repo_item, members, options)
|
92
92
|
rescue RepositoryManager::PermissionException, RepositoryManager::NestedSharingException, RepositoryManager::RepositoryManagerException
|
93
93
|
false
|
94
94
|
rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
|
@@ -275,7 +275,7 @@ module RepositoryManager
|
|
275
275
|
# We zip all the content that the object has access.
|
276
276
|
# options
|
277
277
|
# :path => 'path/to/zip'
|
278
|
-
def
|
278
|
+
def download_repo_item!(repo_item, options = {})
|
279
279
|
if can_download?(repo_item)
|
280
280
|
path = options[:path] if options[:path]
|
281
281
|
|
@@ -286,9 +286,9 @@ module RepositoryManager
|
|
286
286
|
end
|
287
287
|
end
|
288
288
|
|
289
|
-
def
|
289
|
+
def download_repo_item(repo_item, options = {})
|
290
290
|
begin
|
291
|
-
|
291
|
+
download_repo_item!(repo_item, options)
|
292
292
|
rescue RepositoryManager::PermissionException
|
293
293
|
false
|
294
294
|
end
|
@@ -313,9 +313,12 @@ module RepositoryManager
|
|
313
313
|
end
|
314
314
|
|
315
315
|
# Move the repo_item
|
316
|
-
#
|
317
|
-
#
|
318
|
-
|
316
|
+
# options
|
317
|
+
# :source_folder => move into this source_folder
|
318
|
+
# if :source_folder == nil, move to the root
|
319
|
+
def move_repo_item!(repo_item, options = {})
|
320
|
+
target = options[:source_folder]
|
321
|
+
|
319
322
|
if !can_read?(repo_item)
|
320
323
|
repo_item.errors.add(:move, I18n.t('repository_manager.errors.repo_item.move.no_permission'))
|
321
324
|
raise RepositoryManager::PermissionException.new("move repo_item failed. You don't have the permission to read the repo_item '#{repo_item.name}'")
|
@@ -348,9 +351,9 @@ module RepositoryManager
|
|
348
351
|
repo_item.move!(source_folder: target)
|
349
352
|
end
|
350
353
|
|
351
|
-
def move_repo_item(repo_item,
|
354
|
+
def move_repo_item(repo_item, options = {})
|
352
355
|
begin
|
353
|
-
move_repo_item!(repo_item,
|
356
|
+
move_repo_item!(repo_item, options)
|
354
357
|
rescue RepositoryManager::PermissionException, RepositoryManager::ItemExistException
|
355
358
|
false
|
356
359
|
rescue RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
|
@@ -360,10 +363,12 @@ module RepositoryManager
|
|
360
363
|
end
|
361
364
|
|
362
365
|
# Copy the repo_item in the source_folder or in own root
|
363
|
-
# target => the folder in witch we want to copy the repo item
|
364
366
|
# options
|
367
|
+
# :source_folder => the folder in witch we want to copy the repo item
|
365
368
|
# :sender => the new sender (by default => still the old sender)
|
366
|
-
def copy_repo_item!(repo_item,
|
369
|
+
def copy_repo_item!(repo_item, options = {})
|
370
|
+
target = options[:source_folder]
|
371
|
+
|
367
372
|
unless can_read?(repo_item)
|
368
373
|
repo_item.errors.add(:copy, I18n.t('repository_manager.errors.repo_item.copy.no_permission'))
|
369
374
|
raise RepositoryManager::PermissionException.new("copy repo_item failed. You don't have the permission to read the repo_item '#{repo_item.name}'")
|
@@ -385,9 +390,9 @@ module RepositoryManager
|
|
385
390
|
repo_item.copy!(source_folder: target, owner: owner, sender: options[:sender])
|
386
391
|
end
|
387
392
|
|
388
|
-
def copy_repo_item(repo_item,
|
393
|
+
def copy_repo_item(repo_item, options = {})
|
389
394
|
begin
|
390
|
-
copy_repo_item!(repo_item,
|
395
|
+
copy_repo_item!(repo_item, options)
|
391
396
|
rescue RepositoryManager::PermissionException, RepositoryManager::ItemExistException
|
392
397
|
false
|
393
398
|
rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
|
data/spec/has_repository_spec.rb
CHANGED
@@ -35,7 +35,7 @@ describe 'HasRepository' do
|
|
35
35
|
members << @user2
|
36
36
|
members << @user3
|
37
37
|
|
38
|
-
@user1.
|
38
|
+
@user1.share_repo_item(rep, members)
|
39
39
|
|
40
40
|
#expect(@user1.sharings.count).to eq(0)
|
41
41
|
expect(@user2.sharings.count).to eq(1)
|
@@ -57,7 +57,7 @@ describe 'HasRepository' do
|
|
57
57
|
members = []
|
58
58
|
members << @user2
|
59
59
|
|
60
|
-
@user1.
|
60
|
+
@user1.share_repo_item(rep, members)
|
61
61
|
|
62
62
|
expect(rep.errors.messages).to eq({sharing: ['You don\'t have the permission to share this item']})
|
63
63
|
|
@@ -74,11 +74,11 @@ describe 'HasRepository' do
|
|
74
74
|
members << @user2
|
75
75
|
|
76
76
|
# here user3 can share because he is the owner
|
77
|
-
@user3.
|
77
|
+
@user3.share_repo_item(rep, members)
|
78
78
|
# here user2 should can share because he has the permission
|
79
79
|
members = []
|
80
80
|
members << @user1
|
81
|
-
@user2.
|
81
|
+
@user2.share_repo_item(rep, members)
|
82
82
|
|
83
83
|
expect(@user1.sharings.count).to eq(0)
|
84
84
|
expect(@user2.sharings_owners.count).to eq(0)
|
@@ -96,11 +96,11 @@ describe 'HasRepository' do
|
|
96
96
|
options = {repo_item_permissions: {can_share: true}}
|
97
97
|
|
98
98
|
# here user3 can share because he is the owner
|
99
|
-
@user3.
|
99
|
+
@user3.share_repo_item(rep, members, options)
|
100
100
|
# here user2 should can share because he has the permission
|
101
101
|
members = []
|
102
102
|
members << @user1
|
103
|
-
@user2.
|
103
|
+
@user2.share_repo_item(rep, members)
|
104
104
|
|
105
105
|
expect(@user1.sharings.count).to eq(1)
|
106
106
|
expect(@user2.sharings_owners.count).to eq(1)
|
@@ -118,13 +118,13 @@ describe 'HasRepository' do
|
|
118
118
|
options = {repo_item_permissions: {can_read: true, can_share: true}}
|
119
119
|
|
120
120
|
# here user3 can share because he is the owner
|
121
|
-
@user3.
|
121
|
+
@user3.share_repo_item(rep, members, options)
|
122
122
|
# here user2 should can share because he has the permission
|
123
123
|
# But he has only the permission of read (can_read = true), He can't share with more permissions
|
124
124
|
members = []
|
125
125
|
members << @user1
|
126
126
|
#Here the permissions should be : :can_read => true, and all others false
|
127
|
-
@user2.
|
127
|
+
@user2.share_repo_item(rep, members)
|
128
128
|
|
129
129
|
sharing_of_user_1 = @user1.sharings.last
|
130
130
|
|
@@ -147,7 +147,7 @@ describe 'HasRepository' do
|
|
147
147
|
options = {repo_item_permissions: {can_read: true, can_share: true}}
|
148
148
|
|
149
149
|
# here user3 can share because he is the owner
|
150
|
-
@user3.
|
150
|
+
@user3.share_repo_item(rep, members, options)
|
151
151
|
# here user2 should can share because he has the permission
|
152
152
|
# But he has only the permission of read (can_read = true), He can't share with more permissions
|
153
153
|
members = []
|
@@ -156,7 +156,7 @@ describe 'HasRepository' do
|
|
156
156
|
options = {repo_item_permissions: {can_read: true, can_update: true, can_share: true}}
|
157
157
|
|
158
158
|
#Here the permissions should be : :can_read => true, :can_share => true and all others false
|
159
|
-
@user2.
|
159
|
+
@user2.share_repo_item(rep, members, options)
|
160
160
|
|
161
161
|
sharing_of_user_1 = @user1.sharings.last
|
162
162
|
|
@@ -178,7 +178,7 @@ describe 'HasRepository' do
|
|
178
178
|
options = {sharing_permissions: {can_add: true, can_remove: false}}
|
179
179
|
|
180
180
|
# here user3 can share because he is the owner
|
181
|
-
@user3.
|
181
|
+
@user3.share_repo_item(rep, members, options)
|
182
182
|
|
183
183
|
sharing_member_of_user_2 = @user2.sharings_members.last
|
184
184
|
|
@@ -202,14 +202,14 @@ describe 'HasRepository' do
|
|
202
202
|
# children.add(file)
|
203
203
|
#
|
204
204
|
# options = {repo_item_permissions: {can_read: true, can_update: true, can_share: false}}
|
205
|
-
# @user3.
|
205
|
+
# @user3.share_repo_item(parent, @user1, options)
|
206
206
|
#
|
207
207
|
# options = {repo_item_permissions: {can_read: true, can_update: true, can_share: true}}
|
208
|
-
# @user3.
|
208
|
+
# @user3.share_repo_item(children, @user1, options)
|
209
209
|
#
|
210
|
-
# @user1.
|
210
|
+
# @user1.share_repo_item(middle, @user2)
|
211
211
|
# expect(@user2.sharings.count).to eq(0)
|
212
|
-
# @user1.
|
212
|
+
# @user1.share_repo_item(file, @user2)
|
213
213
|
# expect(@user2.sharings.count).to eq(1)
|
214
214
|
#end
|
215
215
|
|
@@ -223,14 +223,14 @@ describe 'HasRepository' do
|
|
223
223
|
# | |-- 'Nested'
|
224
224
|
# | | |-- 'Children'
|
225
225
|
|
226
|
-
@user1.
|
226
|
+
@user1.share_repo_item(nested, @user2)
|
227
227
|
|
228
228
|
expect(nested.can_be_shared_without_nesting?).to eq(true) # Returns true (because `nested` is shared but there is no nested sharing)
|
229
229
|
expect(parent.can_be_shared_without_nesting?).to eq(false) # Returns false (because there is a sharing on one of his descendants)
|
230
230
|
expect(parent.can_be_shared_without_nesting?).to eq(false) # Returns false (because there is a sharing on one of his ancestors)
|
231
231
|
|
232
232
|
# Here we can't share 'Parent' or 'Children' because it already exist a nested sharing.
|
233
|
-
expect(@user1.
|
233
|
+
expect(@user1.share_repo_item(parent, @user2)).to eq(false) # Returns false
|
234
234
|
expect(parent.errors.messages).to eq({sharing: ['You can\'t share this item because another sharing exist on its ancestors or descendants']})
|
235
235
|
|
236
236
|
end
|
@@ -249,14 +249,14 @@ describe 'HasRepository' do
|
|
249
249
|
children.add(file)
|
250
250
|
|
251
251
|
options = {repo_item_permissions: {can_read: true, can_update: true, can_share: true}}
|
252
|
-
@user3.
|
252
|
+
@user3.share_repo_item(parent, @user1, options)
|
253
253
|
|
254
254
|
options = {repo_item_permissions: {can_read: true, can_update: true, can_share: true}}
|
255
|
-
@user3.
|
255
|
+
@user3.share_repo_item(children, @user1, options)
|
256
256
|
|
257
|
-
@user1.
|
257
|
+
@user1.share_repo_item(middle, @user2)
|
258
258
|
expect(@user2.sharings.count).to eq(0)
|
259
|
-
@user1.
|
259
|
+
@user1.share_repo_item(file, @user2)
|
260
260
|
expect(@user2.sharings.count).to eq(0)
|
261
261
|
|
262
262
|
end
|
@@ -278,7 +278,7 @@ describe 'HasRepository' do
|
|
278
278
|
|
279
279
|
it 'can put a creator for a specific sharing' do
|
280
280
|
folder = @group1.create_folder('a')
|
281
|
-
sharing = @group1.
|
281
|
+
sharing = @group1.share_repo_item(folder, @user2, creator: @user1)
|
282
282
|
|
283
283
|
expect(sharing.reload.owner).to eq(@group1)
|
284
284
|
expect(sharing.creator).to eq(@user1)
|
@@ -286,7 +286,7 @@ describe 'HasRepository' do
|
|
286
286
|
|
287
287
|
it 'is by default owner = creator' do
|
288
288
|
folder = @group1.create_folder('a')
|
289
|
-
sharing = @group1.
|
289
|
+
sharing = @group1.share_repo_item(folder, @user2)
|
290
290
|
|
291
291
|
expect(sharing.reload.owner).to eq(@group1)
|
292
292
|
expect(sharing.creator).to eq(@group1)
|
@@ -87,7 +87,7 @@ describe 'RepoItem' do
|
|
87
87
|
|
88
88
|
it 'can return only the sharing repo_items' do
|
89
89
|
#expect(@user2.shared_repo_items.count).to eq(0)
|
90
|
-
@user1.
|
90
|
+
@user1.share_repo_item(@user1_file, @user2)
|
91
91
|
expect(@user2.shared_repo_items.count).to eq(1)
|
92
92
|
end
|
93
93
|
|
@@ -98,12 +98,12 @@ describe 'RepoItem' do
|
|
98
98
|
end
|
99
99
|
|
100
100
|
it 'user can download a file with permission' do
|
101
|
-
@user1.
|
101
|
+
@user1.download_repo_item(@user1_file)
|
102
102
|
#expect(@user2.shared_repo_items.count).to eq(1)
|
103
103
|
end
|
104
104
|
|
105
105
|
it 'user can\'t download a file without permission' do
|
106
|
-
path = @user2.
|
106
|
+
path = @user2.download_repo_item(@user1_file)
|
107
107
|
expect(path).to eq(false)
|
108
108
|
expect(@user1_file.errors.messages).to eq({download: ['You don\'t have the permission to download this item']})
|
109
109
|
|
@@ -129,8 +129,8 @@ describe 'RepoItem' do
|
|
129
129
|
user1_file3.save
|
130
130
|
@user1.create_file(user1_file3, source_folder: @user1_folder)
|
131
131
|
|
132
|
-
@user1.
|
133
|
-
@user1.
|
132
|
+
@user1.download_repo_item(@user1_folder)
|
133
|
+
@user1.download_repo_item(@user1_folder)
|
134
134
|
@user1_folder.download
|
135
135
|
|
136
136
|
@user1_folder.delete_zip
|
@@ -149,7 +149,7 @@ describe 'RepoItem' do
|
|
149
149
|
#@user2.create_file!(file, source_folder: a)
|
150
150
|
#@user2.create_file!(file, source_folder: nested)
|
151
151
|
@user2.create_file!(file, source_folder: c)
|
152
|
-
@user2.
|
152
|
+
@user2.download_repo_item(nested)
|
153
153
|
@user2.delete_download_path()
|
154
154
|
end
|
155
155
|
|
@@ -165,9 +165,9 @@ describe 'RepoItem' do
|
|
165
165
|
#@user2.create_file!(file, source_folder: a)
|
166
166
|
#@user2.create_file!(file, source_folder: nested)
|
167
167
|
@user2.create_file!(file, source_folder: c)
|
168
|
-
@user2.
|
168
|
+
@user2.share_repo_item!(nested, @user1, repo_item_permissions: {can_read: true})
|
169
169
|
copy = @user1.copy_repo_item!(nested)
|
170
|
-
@user1.
|
170
|
+
@user1.download_repo_item(copy)
|
171
171
|
@user1.delete_download_path()
|
172
172
|
end
|
173
173
|
|
@@ -179,7 +179,7 @@ describe 'RepoItem' do
|
|
179
179
|
test_folder = @user1.create_folder('Test folder', source_folder: root_test_folder)
|
180
180
|
@user1.create_folder('Nested test folder', source_folder: test_folder)
|
181
181
|
|
182
|
-
@user1.move_repo_item(test_folder, @user1_folder)
|
182
|
+
@user1.move_repo_item(test_folder, source_folder: @user1_folder)
|
183
183
|
|
184
184
|
expect(test_folder.parent_id).to eq(@user1_folder.id)
|
185
185
|
end
|
@@ -284,7 +284,7 @@ describe 'RepoItem' do
|
|
284
284
|
file = @user2.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"))
|
285
285
|
folder = @user2.create_folder('folder')
|
286
286
|
|
287
|
-
@user2.move_repo_item!(file, folder)
|
287
|
+
@user2.move_repo_item!(file, source_folder: folder)
|
288
288
|
|
289
289
|
expect(folder.children).to eq([file])
|
290
290
|
end
|
@@ -292,7 +292,7 @@ describe 'RepoItem' do
|
|
292
292
|
it "can move a folder into a folder" do
|
293
293
|
folder = @user2.create_folder('folder')
|
294
294
|
folder2 = @user2.create_folder('folder2')
|
295
|
-
@user2.move_repo_item!(folder, folder2)
|
295
|
+
@user2.move_repo_item!(folder, source_folder: folder2)
|
296
296
|
|
297
297
|
expect(folder2.children).to eq([folder])
|
298
298
|
end
|
@@ -301,7 +301,7 @@ describe 'RepoItem' do
|
|
301
301
|
file = @user2.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"))
|
302
302
|
folder = @user2.create_folder('folder')
|
303
303
|
|
304
|
-
expect(@user2.move_repo_item(folder, file)).to eq(false)
|
304
|
+
expect(@user2.move_repo_item(folder, source_folder: file)).to eq(false)
|
305
305
|
expect(folder.errors.messages).to eq({move: ['This item was not moved']})
|
306
306
|
|
307
307
|
|
@@ -336,8 +336,15 @@ describe 'RepoItem' do
|
|
336
336
|
end
|
337
337
|
|
338
338
|
it "can copy a file with read permission" do
|
339
|
-
@user1.
|
339
|
+
@user1.share_repo_item(@user1_file, @user2, repo_item_permissions: {can_read:true})
|
340
340
|
@user2.copy_repo_item(@user1_file)
|
341
341
|
expect(@user2.root_repo_items.count).to eq(1)
|
342
342
|
end
|
343
|
+
|
344
|
+
it "can copy a file with read permission in a folder" do
|
345
|
+
@user1.share_repo_item(@user1_file, @user2, repo_item_permissions: {can_read:true})
|
346
|
+
fold = @user2.create_folder!('fold')
|
347
|
+
@user2.copy_repo_item!(@user1_file, source_folder: fold)
|
348
|
+
expect(fold.children.count).to eq(1)
|
349
|
+
end
|
343
350
|
end
|
data/spec/models/share_spec.rb
CHANGED
@@ -12,46 +12,46 @@ describe 'Sharing' do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'can add a member in his own sharing' do
|
15
|
-
sharing = @user1.
|
15
|
+
sharing = @user1.share_repo_item(@user1_file, @user2, {sharing_permissions:{can_add: false, can_remove: false}})
|
16
16
|
@user1.add_members_to(sharing, @user3)
|
17
17
|
expect(@user3.shared_repo_items.count).to eq(1)
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'can\'t add a member in a sharing without permission' do
|
21
|
-
sharing = @user1.
|
21
|
+
sharing = @user1.share_repo_item(@user1_file, @user2, {sharing_permissions:{can_add: false, can_remove: false}})
|
22
22
|
@user2.add_members_to(sharing, @user3)
|
23
23
|
expect(@user3.shared_repo_items.count).to eq(0)
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'can add a member in a sharing with permission' do
|
27
|
-
sharing = @user1.
|
27
|
+
sharing = @user1.share_repo_item(@user1_file, @user2, {sharing_permissions:{can_add: true, can_remove: false}})
|
28
28
|
@user2.add_members_to(sharing, @user3)
|
29
29
|
expect(@user3.shared_repo_items.count).to eq(1)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'can remove a member in his own sharing' do
|
33
|
-
sharing = @user1.
|
33
|
+
sharing = @user1.share_repo_item(@user1_file, @user2, {sharing_permissions:{can_add: false, can_remove: false}})
|
34
34
|
@user1.remove_members_from(sharing, @user2)
|
35
35
|
expect(@user2.shared_repo_items.count).to eq(0)
|
36
36
|
end
|
37
37
|
|
38
38
|
|
39
39
|
it 'can remove a member in a sharing with permission' do
|
40
|
-
sharing = @user1.
|
40
|
+
sharing = @user1.share_repo_item(@user1_file, @user2, {sharing_permissions:{can_add: false, can_remove: true}})
|
41
41
|
@user1.add_members_to(sharing, @user3)
|
42
42
|
@user2.remove_members_from(sharing, @user3)
|
43
43
|
expect(@user3.shared_repo_items.count).to eq(0)
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'can\'t remove a member in a sharing without permission' do
|
47
|
-
sharing = @user1.
|
47
|
+
sharing = @user1.share_repo_item(@user1_file, @user2, {sharing_permissions:{can_add: false, can_remove: false}})
|
48
48
|
@user1.add_members_to(sharing, @user3)
|
49
49
|
@user2.remove_members_from(sharing, @user3)
|
50
50
|
expect(@user3.shared_repo_items.count).to eq(1)
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'can remove and add an array of members in a sharing with permission' do
|
54
|
-
sharing = @user1.
|
54
|
+
sharing = @user1.share_repo_item(@user1_file, @user2, {sharing_permissions:{can_add: true, can_remove: true}})
|
55
55
|
user4 = FactoryGirl.create(:user)
|
56
56
|
@user2.add_members_to(sharing, [@user3, user4])
|
57
57
|
expect(user4.shared_repo_items.count).to eq(1)
|
@@ -60,7 +60,7 @@ describe 'Sharing' do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'can\'t add a members in a sharing with permission that he has not' do
|
63
|
-
sharing = @user1.
|
63
|
+
sharing = @user1.share_repo_item(@user1_file, @user2, {sharing_permissions:{can_add: true, can_remove: false}})
|
64
64
|
@user2.add_members_to(sharing, @user3, {can_add:true, can_remove:true})
|
65
65
|
@user3.remove_members_from(sharing, @user2)
|
66
66
|
expect(@user2.shared_repo_items.count).to eq(1)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repository-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yves Baumann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|