cloud_door 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +73 -64
- data/bin/gdrive +133 -0
- data/cloud_door.gemspec +2 -3
- data/cloud_door_config.yml +5 -0
- data/lib/cloud_door/cloud_storage.rb +3 -3
- data/lib/cloud_door/dropbox.rb +13 -16
- data/lib/cloud_door/google_drive.rb +169 -0
- data/lib/cloud_door/google_drive_bridge.rb +137 -0
- data/lib/cloud_door/onedrive.rb +13 -16
- data/lib/cloud_door/token.rb +3 -2
- data/lib/cloud_door/version.rb +1 -1
- data/lib/cloud_door.rb +2 -0
- data/spec/cloud_door/console_spec.rb +64 -0
- data/spec/cloud_door/dropbox_spec.rb +13 -15
- data/spec/cloud_door/google_drive_spec.rb +648 -0
- data/spec/cloud_door/onedrive_spec.rb +16 -18
- metadata +30 -44
@@ -0,0 +1,137 @@
|
|
1
|
+
require 'google/api_client'
|
2
|
+
require 'yaml'
|
3
|
+
require 'mimetype_fu'
|
4
|
+
require 'cloud_door/cloud_storage'
|
5
|
+
|
6
|
+
module CloudDoor
|
7
|
+
class GoogleDriveBridge
|
8
|
+
def initialize(credentials)
|
9
|
+
client = Google::APIClient.new(application_name: 'cloud_door')
|
10
|
+
client.authorization = credentials
|
11
|
+
drive = client.discovered_api('drive', 'v2')
|
12
|
+
@gclient = client
|
13
|
+
@gdrive = drive
|
14
|
+
end
|
15
|
+
|
16
|
+
def request_user
|
17
|
+
result = send_request('@gdrive.about.get')
|
18
|
+
result.data.user
|
19
|
+
end
|
20
|
+
|
21
|
+
def request_root_id
|
22
|
+
result = send_request('@gdrive.about.get')
|
23
|
+
result.data.root_folder_id
|
24
|
+
end
|
25
|
+
|
26
|
+
def request_dir(file_id)
|
27
|
+
dir_files = Array.new
|
28
|
+
page_token = nil
|
29
|
+
begin
|
30
|
+
parameters = {}
|
31
|
+
parameters['q'] = "'#{file_id}' in parents"
|
32
|
+
if page_token.to_s != ''
|
33
|
+
parameters['pageToken'] = page_token
|
34
|
+
end
|
35
|
+
api_result = send_request('@gdrive.files.list', parameters: parameters)
|
36
|
+
files = api_result.data
|
37
|
+
dir_files.concat(files.items)
|
38
|
+
page_token = files.next_page_token
|
39
|
+
end while page_token.to_s != ''
|
40
|
+
dir_files
|
41
|
+
end
|
42
|
+
|
43
|
+
def request_file(file_id)
|
44
|
+
result = send_request('@gdrive.files.get', {parameters: {'fileId' => file_id}})
|
45
|
+
result.data.to_hash
|
46
|
+
end
|
47
|
+
|
48
|
+
def request_download(file_id)
|
49
|
+
result = @gclient.execute(
|
50
|
+
api_method: @gdrive.files.get,
|
51
|
+
parameters: {'fileId' => file_id}
|
52
|
+
)
|
53
|
+
file = result.data
|
54
|
+
if file.download_url
|
55
|
+
result = @gclient.execute(:uri => file.download_url)
|
56
|
+
if result.status == 200
|
57
|
+
result.body
|
58
|
+
elsif result.status == 401
|
59
|
+
raise UnauthorizedException
|
60
|
+
else
|
61
|
+
raise HttpConnectionException
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def request_upload(file_path, parent_id)
|
67
|
+
mime = File.mime_type?(File.open(file_path))
|
68
|
+
mime_type = mime[0, mime.index(';')]
|
69
|
+
file = @gdrive.files.insert.request_schema.new({
|
70
|
+
'title' => file_path
|
71
|
+
})
|
72
|
+
if parent_id
|
73
|
+
file.parents = [{'id' => parent_id}]
|
74
|
+
end
|
75
|
+
media = Google::APIClient::UploadIO.new(file_path, mime_type)
|
76
|
+
result = @gclient.execute(
|
77
|
+
:api_method => @gdrive.files.insert,
|
78
|
+
:body_object => file,
|
79
|
+
:media => media,
|
80
|
+
:parameters => {
|
81
|
+
'uploadType' => 'multipart',
|
82
|
+
'alt' => 'json'
|
83
|
+
}
|
84
|
+
)
|
85
|
+
if result.status == 200
|
86
|
+
result
|
87
|
+
elsif result.status == 401
|
88
|
+
raise UnauthorizedException
|
89
|
+
else
|
90
|
+
raise HttpConnectionException
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def request_delete(file_id)
|
95
|
+
send_request('@gdrive.files.delete', {parameters: {'fileId' => file_id}})
|
96
|
+
true
|
97
|
+
rescue => e
|
98
|
+
false
|
99
|
+
end
|
100
|
+
|
101
|
+
def request_mkdir(name, parent_id)
|
102
|
+
file = @gdrive.files.insert.request_schema.new({
|
103
|
+
'title' => name,
|
104
|
+
'mimeType' => 'application/vnd.google-apps.folder',
|
105
|
+
'parents' => [{'id' => parent_id}]
|
106
|
+
})
|
107
|
+
result = @gclient.execute(
|
108
|
+
:api_method => @gdrive.files.insert,
|
109
|
+
:body_object => file
|
110
|
+
)
|
111
|
+
if result.status == 200
|
112
|
+
true
|
113
|
+
elsif result.status == 401
|
114
|
+
raise UnauthorizedException
|
115
|
+
else
|
116
|
+
raise HttpConnectionException
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
private
|
121
|
+
|
122
|
+
def send_request(api_method, parameters = {})
|
123
|
+
requests = {api_method: eval(api_method)}
|
124
|
+
requests.merge!(parameters)
|
125
|
+
result = @gclient.execute(requests)
|
126
|
+
if result.status == 200
|
127
|
+
result
|
128
|
+
elsif result.status == 401
|
129
|
+
raise UnauthorizedException
|
130
|
+
else
|
131
|
+
raise HttpConnectionException
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
data/lib/cloud_door/onedrive.rb
CHANGED
@@ -28,11 +28,14 @@ module CloudDoor
|
|
28
28
|
@root_id = ROOT_ID
|
29
29
|
@storage_name = STORAGE_NAME
|
30
30
|
@session_id = session_id
|
31
|
+
@client = nil
|
31
32
|
end
|
32
33
|
|
33
34
|
def load_token
|
34
35
|
token_file = File.basename(@token.token_file)
|
35
|
-
@token
|
36
|
+
@token = Token.load_token(token_file, @config.data_path, @session_id)
|
37
|
+
@client = OneDriveApi.new(@token.access_token)
|
38
|
+
@token
|
36
39
|
end
|
37
40
|
|
38
41
|
def refresh_token
|
@@ -45,13 +48,14 @@ module CloudDoor
|
|
45
48
|
handle_exception(e)
|
46
49
|
end
|
47
50
|
|
48
|
-
|
51
|
+
def login(login_account, login_password)
|
49
52
|
@account.login_account = login_account
|
50
53
|
@account.login_password = login_password
|
51
54
|
url = login_browser
|
52
55
|
info = request_get_token(url)
|
53
56
|
raise NoDataException if info.nil?
|
54
57
|
@session_id = reset_token(info)
|
58
|
+
@client = OneDriveApi.new(@token.access_token)
|
55
59
|
items = pull_files
|
56
60
|
@file_list.delete_file
|
57
61
|
@file_list.write_file_list(items)
|
@@ -92,41 +96,34 @@ module CloudDoor
|
|
92
96
|
end
|
93
97
|
|
94
98
|
def request_user
|
95
|
-
|
96
|
-
api.request_user
|
99
|
+
@client.request_user
|
97
100
|
end
|
98
101
|
|
99
102
|
def request_dir
|
100
103
|
file_id = @parent_id || @file_id || ROOT_ID
|
101
|
-
|
102
|
-
api.request_dir(file_id)
|
104
|
+
@client.request_dir(file_id)
|
103
105
|
end
|
104
106
|
|
105
107
|
def request_file
|
106
|
-
|
107
|
-
api.request_file(@file_id)
|
108
|
+
@client.request_file(@file_id)
|
108
109
|
end
|
109
110
|
|
110
111
|
def request_download
|
111
|
-
|
112
|
-
contens = api.request_download(@file_id)
|
112
|
+
contens = @client.request_download(@file_id)
|
113
113
|
open("#{@file_name}", 'wb') { |file| file << contens }
|
114
114
|
end
|
115
115
|
|
116
116
|
def request_upload(file_path)
|
117
|
-
|
118
|
-
api.request_upload(file_path, @parent_id)
|
117
|
+
@client.request_upload(file_path, @parent_id)
|
119
118
|
end
|
120
119
|
|
121
120
|
def request_delete
|
122
|
-
|
123
|
-
api.request_delete(@file_id)
|
121
|
+
@client.request_delete(@file_id)
|
124
122
|
end
|
125
123
|
|
126
124
|
def request_mkdir
|
127
125
|
parent_id = @parent_id || ROOT_ID
|
128
|
-
|
129
|
-
api.request_mkdir(@mkdir_name, parent_id)
|
126
|
+
@client.request_mkdir(@mkdir_name, parent_id)
|
130
127
|
end
|
131
128
|
|
132
129
|
def pull_files
|
data/lib/cloud_door/token.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module CloudDoor
|
2
2
|
class Token
|
3
3
|
attr_accessor :token_file, :token_type, :expires_in, :scope, :access_token,
|
4
|
-
:refresh_token, :user_id, :token_name
|
4
|
+
:refresh_token, :user_id, :token_name, :credentials
|
5
5
|
attr_reader :data_path
|
6
6
|
|
7
7
|
TOKEN_ITEMS = [
|
@@ -10,7 +10,8 @@ module CloudDoor
|
|
10
10
|
'scope',
|
11
11
|
'access_token',
|
12
12
|
'refresh_token',
|
13
|
-
'user_id'
|
13
|
+
'user_id',
|
14
|
+
'credentials'
|
14
15
|
]
|
15
16
|
|
16
17
|
def initialize(token_name, data_path, id = nil)
|
data/lib/cloud_door/version.rb
CHANGED
data/lib/cloud_door.rb
CHANGED
@@ -6,6 +6,8 @@ require 'cloud_door/console'
|
|
6
6
|
require 'cloud_door/dropbox'
|
7
7
|
require 'cloud_door/exceptions'
|
8
8
|
require 'cloud_door/file_list'
|
9
|
+
require 'cloud_door/google_drive'
|
10
|
+
require 'cloud_door/google_drive_bridge'
|
9
11
|
require 'cloud_door/onedrive'
|
10
12
|
require 'cloud_door/onedrive_api'
|
11
13
|
require 'cloud_door/token'
|
@@ -191,6 +191,11 @@ EOF
|
|
191
191
|
describe 'ls' do
|
192
192
|
subject { console.ls(file_name) }
|
193
193
|
let(:console) { create_console }
|
194
|
+
let(:token) { console.drive.storage.token }
|
195
|
+
let(:token_file) { console.drive.storage.token.token_file }
|
196
|
+
before(:each) do
|
197
|
+
open(token_file, 'wb') { |file| file << Marshal.dump(token) }
|
198
|
+
end
|
194
199
|
context 'have files' do
|
195
200
|
let(:file_name) { nil }
|
196
201
|
let(:posit) do
|
@@ -259,11 +264,19 @@ EOF
|
|
259
264
|
expect($terminal.output.string).to include(expects)
|
260
265
|
end
|
261
266
|
end
|
267
|
+
after(:each) do
|
268
|
+
File.delete(token_file) if File.exist?(token_file)
|
269
|
+
end
|
262
270
|
end
|
263
271
|
|
264
272
|
describe 'cd' do
|
265
273
|
subject { console.cd(file_name) }
|
266
274
|
let(:console) { create_console }
|
275
|
+
let(:token) { console.drive.storage.token }
|
276
|
+
let(:token_file) { console.drive.storage.token.token_file }
|
277
|
+
before(:each) do
|
278
|
+
open(token_file, 'wb') { |file| file << Marshal.dump(token) }
|
279
|
+
end
|
267
280
|
context 'file_name not input' do
|
268
281
|
let(:file_name) { nil }
|
269
282
|
it do
|
@@ -330,11 +343,19 @@ EOF
|
|
330
343
|
expect($terminal.output.string).to include(expects)
|
331
344
|
end
|
332
345
|
end
|
346
|
+
after(:each) do
|
347
|
+
File.delete(token_file) if File.exist?(token_file)
|
348
|
+
end
|
333
349
|
end
|
334
350
|
|
335
351
|
describe 'info' do
|
336
352
|
subject { console.info(file_name) }
|
337
353
|
let(:console) { create_console }
|
354
|
+
let(:token) { console.drive.storage.token }
|
355
|
+
let(:token_file) { console.drive.storage.token.token_file }
|
356
|
+
before(:each) do
|
357
|
+
open(token_file, 'wb') { |file| file << Marshal.dump(token) }
|
358
|
+
end
|
338
359
|
context 'file_name not input' do
|
339
360
|
let(:file_name) { nil }
|
340
361
|
it do
|
@@ -377,12 +398,20 @@ EOF
|
|
377
398
|
expect($terminal.output.string).to include(expects)
|
378
399
|
end
|
379
400
|
end
|
401
|
+
after(:each) do
|
402
|
+
File.delete(token_file) if File.exist?(token_file)
|
403
|
+
end
|
380
404
|
end
|
381
405
|
|
382
406
|
describe 'pwd' do
|
383
407
|
subject { console.pwd }
|
384
408
|
let(:console) { create_console }
|
385
409
|
let(:posit) { '/top' }
|
410
|
+
let(:token) { console.drive.storage.token }
|
411
|
+
let(:token_file) { console.drive.storage.token.token_file }
|
412
|
+
before(:each) do
|
413
|
+
open(token_file, 'wb') { |file| file << Marshal.dump(token) }
|
414
|
+
end
|
386
415
|
it do
|
387
416
|
expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_current_directory)
|
388
417
|
.and_return(posit)
|
@@ -390,11 +419,19 @@ EOF
|
|
390
419
|
expects = '/top'
|
391
420
|
expect($terminal.output.string).to include(expects)
|
392
421
|
end
|
422
|
+
after(:each) do
|
423
|
+
File.delete(token_file) if File.exist?(token_file)
|
424
|
+
end
|
393
425
|
end
|
394
426
|
|
395
427
|
describe 'download' do
|
396
428
|
subject { console.download(file_name) }
|
397
429
|
let(:console) { create_console }
|
430
|
+
let(:token) { console.drive.storage.token }
|
431
|
+
let(:token_file) { console.drive.storage.token.token_file }
|
432
|
+
before(:each) do
|
433
|
+
open(token_file, 'wb') { |file| file << Marshal.dump(token) }
|
434
|
+
end
|
398
435
|
context 'file_name not input' do
|
399
436
|
let(:file_name) { nil }
|
400
437
|
it do
|
@@ -447,11 +484,19 @@ EOF
|
|
447
484
|
expect($terminal.output.string).to include(expects)
|
448
485
|
end
|
449
486
|
end
|
487
|
+
after(:each) do
|
488
|
+
File.delete(token_file) if File.exist?(token_file)
|
489
|
+
end
|
450
490
|
end
|
451
491
|
|
452
492
|
describe 'upload' do
|
453
493
|
subject { console.upload(file_name) }
|
454
494
|
let(:console) { create_console }
|
495
|
+
let(:token) { console.drive.storage.token }
|
496
|
+
let(:token_file) { console.drive.storage.token.token_file }
|
497
|
+
before(:each) do
|
498
|
+
open(token_file, 'wb') { |file| file << Marshal.dump(token) }
|
499
|
+
end
|
455
500
|
context 'file_name not input' do
|
456
501
|
let(:file_name) { nil }
|
457
502
|
it do
|
@@ -534,11 +579,19 @@ EOF
|
|
534
579
|
expect($terminal.output.string).to include(expects)
|
535
580
|
end
|
536
581
|
end
|
582
|
+
after(:each) do
|
583
|
+
File.delete(token_file) if File.exist?(token_file)
|
584
|
+
end
|
537
585
|
end
|
538
586
|
|
539
587
|
describe 'rm' do
|
540
588
|
subject { console.rm(file_name) }
|
541
589
|
let(:console) { create_console }
|
590
|
+
let(:token) { console.drive.storage.token }
|
591
|
+
let(:token_file) { console.drive.storage.token.token_file }
|
592
|
+
before(:each) do
|
593
|
+
open(token_file, 'wb') { |file| file << Marshal.dump(token) }
|
594
|
+
end
|
542
595
|
context 'file_name not input' do
|
543
596
|
let(:file_name) { nil }
|
544
597
|
it do
|
@@ -591,11 +644,19 @@ EOF
|
|
591
644
|
expect($terminal.output.string).to include(expects)
|
592
645
|
end
|
593
646
|
end
|
647
|
+
after(:each) do
|
648
|
+
File.delete(token_file) if File.exist?(token_file)
|
649
|
+
end
|
594
650
|
end
|
595
651
|
|
596
652
|
describe 'mkdir' do
|
597
653
|
subject { console.mkdir(mkdir_name) }
|
598
654
|
let(:console) { create_console }
|
655
|
+
let(:token) { console.drive.storage.token }
|
656
|
+
let(:token_file) { console.drive.storage.token.token_file }
|
657
|
+
before(:each) do
|
658
|
+
open(token_file, 'wb') { |file| file << Marshal.dump(token) }
|
659
|
+
end
|
599
660
|
context 'mkdir_name not input' do
|
600
661
|
let(:mkdir_name) { nil }
|
601
662
|
it do
|
@@ -629,5 +690,8 @@ EOF
|
|
629
690
|
expect($terminal.output.string).to include(expects)
|
630
691
|
end
|
631
692
|
end
|
693
|
+
after(:each) do
|
694
|
+
File.delete(token_file) if File.exist?(token_file)
|
695
|
+
end
|
632
696
|
end
|
633
697
|
end
|
@@ -1,6 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'Dropbox' do
|
4
|
+
let(:storage) do
|
5
|
+
storage = create_storage(CloudDoor::Dropbox)
|
6
|
+
storage.load_token
|
7
|
+
storage
|
8
|
+
end
|
9
|
+
|
4
10
|
describe 'reset_token' do
|
5
11
|
subject { storage.reset_token(token_value) }
|
6
12
|
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
@@ -23,7 +29,6 @@ describe 'Dropbox' do
|
|
23
29
|
|
24
30
|
describe 'show_user' do
|
25
31
|
subject { storage.show_user }
|
26
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
27
32
|
context 'success' do
|
28
33
|
let(:posit) { {'name' => 'dropbox'} }
|
29
34
|
it do
|
@@ -36,7 +41,6 @@ describe 'Dropbox' do
|
|
36
41
|
|
37
42
|
describe 'show_files' do
|
38
43
|
subject { storage.show_files(file_name) }
|
39
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
40
44
|
let(:list_file) { storage.file_list.list_file }
|
41
45
|
context 'success' do
|
42
46
|
let(:file_name) { nil }
|
@@ -90,7 +94,6 @@ describe 'Dropbox' do
|
|
90
94
|
|
91
95
|
describe 'change_directory' do
|
92
96
|
subject { storage.change_directory(file_name) }
|
93
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
94
97
|
let(:list_file) { storage.file_list.list_file }
|
95
98
|
context 'success' do
|
96
99
|
let(:file_name) { 'folder1' }
|
@@ -153,13 +156,11 @@ describe 'Dropbox' do
|
|
153
156
|
|
154
157
|
describe 'show_current_directory' do
|
155
158
|
subject { storage.show_current_directory }
|
156
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
157
159
|
it { is_expected.to eq('/top') }
|
158
160
|
end
|
159
161
|
|
160
162
|
describe 'show_property' do
|
161
163
|
subject { storage.show_property(file_name) }
|
162
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
163
164
|
let(:list_file) { storage.file_list.list_file }
|
164
165
|
before(:each) do
|
165
166
|
list = [{'items' => {'file1' => {'id' => '/file1', 'type' => 'file'}}}]
|
@@ -290,7 +291,6 @@ describe 'Dropbox' do
|
|
290
291
|
|
291
292
|
describe 'download_file' do
|
292
293
|
subject { storage.download_file(file_name) }
|
293
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
294
294
|
let(:list_file) { storage.file_list.list_file }
|
295
295
|
context 'success' do
|
296
296
|
let(:file_name) { 'file1' }
|
@@ -334,7 +334,6 @@ describe 'Dropbox' do
|
|
334
334
|
|
335
335
|
describe 'upload_file' do
|
336
336
|
subject { storage.upload_file(file_name) }
|
337
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
338
337
|
let(:list_file) { storage.file_list.list_file }
|
339
338
|
let(:up_file) { 'upload' }
|
340
339
|
context 'success' do
|
@@ -373,7 +372,6 @@ describe 'Dropbox' do
|
|
373
372
|
|
374
373
|
describe 'delete_file' do
|
375
374
|
subject { storage.delete_file(file_name) }
|
376
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
377
375
|
let(:list_file) { storage.file_list.list_file }
|
378
376
|
context 'success' do
|
379
377
|
let(:file_name) { 'file1' }
|
@@ -412,7 +410,6 @@ describe 'Dropbox' do
|
|
412
410
|
|
413
411
|
describe 'make_directory' do
|
414
412
|
subject { storage.make_directory(mkdir_name) }
|
415
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
416
413
|
let(:list_file) { storage.file_list.list_file }
|
417
414
|
context 'success' do
|
418
415
|
let(:mkdir_name) { 'folder1' }
|
@@ -443,7 +440,6 @@ describe 'Dropbox' do
|
|
443
440
|
|
444
441
|
describe 'assign_upload_file_name' do
|
445
442
|
subject { storage.assign_upload_file_name(file_name) }
|
446
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
447
443
|
context 'file' do
|
448
444
|
let(:file_name) { 'testfile' }
|
449
445
|
it { is_expected.to eq file_name }
|
@@ -462,7 +458,6 @@ describe 'Dropbox' do
|
|
462
458
|
|
463
459
|
describe 'file_exist?' do
|
464
460
|
subject { storage.file_exist?(file_name) }
|
465
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
466
461
|
let(:list_file) { storage.file_list.list_file }
|
467
462
|
before(:each) do
|
468
463
|
list = [{'items' => {'file1' => {'id' => '/file1', 'type' => 'file'}}}]
|
@@ -502,7 +497,6 @@ describe 'Dropbox' do
|
|
502
497
|
|
503
498
|
describe 'has_file?' do
|
504
499
|
subject { storage.has_file?(file_name) }
|
505
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
506
500
|
let(:list_file) { storage.file_list.list_file }
|
507
501
|
before(:each) do
|
508
502
|
file1 = {'id' => '/file1', 'type' => 'file'}
|
@@ -515,7 +509,12 @@ describe 'Dropbox' do
|
|
515
509
|
context 'return true' do
|
516
510
|
context 'count > 0' do
|
517
511
|
let(:file_name) { 'folder1' }
|
518
|
-
let(:posit)
|
512
|
+
let(:posit) do
|
513
|
+
{'contents' => [
|
514
|
+
{'path' => '/file1', 'name' => 'file1', 'is_dir' => false},
|
515
|
+
{'path' => '/folder1', 'name' => 'folder1', 'is_dir' => true},
|
516
|
+
]}
|
517
|
+
end
|
519
518
|
before(:each) do
|
520
519
|
storage.stub(:file_exist?)
|
521
520
|
.with(file_name)
|
@@ -536,7 +535,7 @@ describe 'Dropbox' do
|
|
536
535
|
end
|
537
536
|
context 'count == 0' do
|
538
537
|
let(:file_name) { 'folder1' }
|
539
|
-
let(:posit) { {'
|
538
|
+
let(:posit) { {'contents' => []} }
|
540
539
|
before(:each) do
|
541
540
|
storage.stub(:file_exist?)
|
542
541
|
.with(file_name)
|
@@ -574,7 +573,6 @@ describe 'Dropbox' do
|
|
574
573
|
|
575
574
|
describe 'file?' do
|
576
575
|
subject { storage.file?(file_name) }
|
577
|
-
let(:storage) { create_storage(CloudDoor::Dropbox) }
|
578
576
|
let(:list_file) { storage.file_list.list_file }
|
579
577
|
let(:access_token) { storage.token.access_token }
|
580
578
|
before(:each) do
|