repository-manager 0.1.30 → 0.2.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.
- 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
|