cloud_door 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.travis.yml +4 -0
  4. data/Gemfile +4 -0
  5. data/Guardfile +7 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +204 -0
  8. data/Rakefile +11 -0
  9. data/bin/dropbox +133 -0
  10. data/bin/onedrive +133 -0
  11. data/cloud_door.gemspec +38 -0
  12. data/cloud_door_config.yml +12 -0
  13. data/data/.gitkeep +0 -0
  14. data/data/testlist +0 -0
  15. data/lib/cloud_door.rb +114 -0
  16. data/lib/cloud_door/account.rb +27 -0
  17. data/lib/cloud_door/cloud_storage.rb +294 -0
  18. data/lib/cloud_door/cloud_yaml.rb +45 -0
  19. data/lib/cloud_door/config.rb +61 -0
  20. data/lib/cloud_door/console.rb +334 -0
  21. data/lib/cloud_door/dropbox.rb +166 -0
  22. data/lib/cloud_door/exceptions.rb +153 -0
  23. data/lib/cloud_door/file_list.rb +164 -0
  24. data/lib/cloud_door/onedrive.rb +180 -0
  25. data/lib/cloud_door/onedrive_api.rb +169 -0
  26. data/lib/cloud_door/token.rb +67 -0
  27. data/lib/cloud_door/version.rb +3 -0
  28. data/log/.gitkeep +0 -0
  29. data/spec/cloud_door/account_spec.rb +96 -0
  30. data/spec/cloud_door/cloud_storage_spec.rb +10 -0
  31. data/spec/cloud_door/cloud_yaml_spec.rb +32 -0
  32. data/spec/cloud_door/config_spec.rb +95 -0
  33. data/spec/cloud_door/console_spec.rb +633 -0
  34. data/spec/cloud_door/dropbox_spec.rb +625 -0
  35. data/spec/cloud_door/file_list_spec.rb +451 -0
  36. data/spec/cloud_door/onedrive_api_spec.rb +256 -0
  37. data/spec/cloud_door/onedrive_spec.rb +652 -0
  38. data/spec/cloud_door/token_spec.rb +81 -0
  39. data/spec/fabricators/account_fabricator.rb +5 -0
  40. data/spec/fabricators/cloud_yaml_fabricator.rb +5 -0
  41. data/spec/fabricators/config_fabrication.rb +5 -0
  42. data/spec/fabricators/token_fabricator.rb +10 -0
  43. data/spec/spec_helper.rb +55 -0
  44. metadata +380 -0
@@ -0,0 +1,633 @@
1
+ require 'spec_helper'
2
+
3
+ def create_console
4
+ console = CloudDoor::Console.new(CloudDoor::OneDrive)
5
+ console.drive.storage.token.token_file = './data/test_token'
6
+ console.drive.storage.token.access_token = 'token'
7
+ console.drive.storage.token.refresh_token = 'refresh'
8
+ console.drive.storage.config.client_id = '1234'
9
+ console.drive.storage.config.client_secret = 'abcd'
10
+ console.drive.storage.config.redirect_url = 'testurl'
11
+ console.drive.storage.account.login_account = 'test'
12
+ console.drive.storage.account.login_password = 'pass1234'
13
+ console.drive.storage.file_list.list_file = './data/testlist'
14
+ console
15
+ end
16
+
17
+ describe 'Console' do
18
+ before(:each) do
19
+ # $terminal is instance of Highline class
20
+ $terminal.output = StringIO.new
21
+ end
22
+ =begin
23
+ describe 'config' do
24
+ subject { console.config(show) }
25
+ let(:console) { create_console }
26
+ context 'input config' do
27
+ let(:show) { false }
28
+ it do
29
+ subject
30
+ config = console.drive.storage.config
31
+ expect(config.client_id).to eq 'client'
32
+ expect(config.client_secret).to eq 'secret'
33
+ expect(config.redirect_url).to eq 'localhost'
34
+ expects = 'update configuration success'
35
+ expect($terminal.output.string).to include(expects)
36
+ end
37
+ end
38
+ context 'show config' do
39
+ let(:show) { true }
40
+ it do
41
+ expect { subject }.to raise_error(SystemExit)
42
+ expects = <<EOF
43
+ OneDrive configuration are
44
+ client_id : 1234
45
+ client_secret: abcd
46
+ redirect_url : testurl
47
+ EOF
48
+ expect($terminal.output.string).to include(expects)
49
+ end
50
+ end
51
+ end
52
+
53
+ describe 'account' do
54
+ subject { console.account(show) }
55
+ let(:console) { create_console }
56
+ context 'input account' do
57
+ let(:show) { false }
58
+ it do
59
+ subject
60
+ account = console.drive.storage.account
61
+ expect(account.login_account).to eq 'account'
62
+ expect(account.login_password).to eq 'password'
63
+ expects = 'update account success'
64
+ expect($terminal.output.string).to include(expects)
65
+ end
66
+ end
67
+ context 'show account' do
68
+ let(:show) { true }
69
+ it do
70
+ expect { subject }.to raise_error(SystemExit)
71
+ expects = <<EOF
72
+ OneDrive account are
73
+ login_account : test
74
+ login_password: pass1234
75
+ EOF
76
+ expect($terminal.output.string).to include(expects)
77
+ end
78
+ end
79
+ end
80
+ =end
81
+ describe 'login' do
82
+ subject { console.login(default) }
83
+ let(:console) { create_console }
84
+ context 'success' do
85
+ context 'use default account' do
86
+ let(:default) { true }
87
+ let(:posit) do
88
+ {
89
+ 'file1' => {'id' => 'file.1234', 'type' => 'file'},
90
+ 'folder1' => {'id' => 'folder.5678', 'type' => 'folder'}
91
+ }
92
+ end
93
+ it do
94
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:isset_account?)
95
+ .and_return(true)
96
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:login)
97
+ .and_return(true)
98
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_user)
99
+ .and_return({'name' => 'drive'})
100
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_current_directory)
101
+ .and_return('/top')
102
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_files)
103
+ .with(nil)
104
+ .and_return(posit)
105
+ subject
106
+ expects = <<EOF
107
+ found defaulut account 'test'. use this account.
108
+ start a connection to the OneDrive. please wait a few seconds.
109
+ login success.
110
+ login as drive.
111
+
112
+ you have these files on '/top'.
113
+ [file ] file1
114
+ [folder] folder1
115
+ EOF
116
+ expect($terminal.output.string).to include(expects)
117
+ end
118
+ end
119
+ context 'use input account' do
120
+ let(:default) { false }
121
+ let(:posit) do
122
+ {
123
+ 'file1' => {'id' => 'file.1234', 'type' => 'file'},
124
+ 'folder1' => {'id' => 'folder.5678', 'type' => 'folder'}
125
+ }
126
+ end
127
+ it do
128
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:login)
129
+ .and_return(true)
130
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_user)
131
+ .and_return({'name' => 'drive'})
132
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_current_directory)
133
+ .and_return('/top')
134
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_files)
135
+ .with(nil)
136
+ .and_return(posit)
137
+ subject
138
+ expects = <<EOF
139
+ please enter the OneDrive account.
140
+ start a connection to the OneDrive. please wait a few seconds.
141
+ login success.
142
+ login as drive.
143
+
144
+ you have these files on '/top'.
145
+ [file ] file1
146
+ [folder] folder1
147
+ EOF
148
+ expect($terminal.output.string).to include(expects)
149
+ end
150
+ end
151
+ end
152
+
153
+ context 'fail' do
154
+ context 'configuration not init' do
155
+ let(:default) { false }
156
+ it do
157
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:configuration_init?)
158
+ .and_return(false)
159
+ expect { subject }.to raise_error(SystemExit)
160
+ expects = "config is not found. please execute './onedrive config' before."
161
+ expect($terminal.output.string).to include(expects)
162
+ end
163
+ end
164
+ context 'account not found' do
165
+ let(:default) { true }
166
+ it do
167
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:isset_account?)
168
+ .and_return(false)
169
+ expect { subject }.to raise_error(SystemExit)
170
+ expects = "default account is not found. please execute './onedrive account' before."
171
+ expect($terminal.output.string).to include(expects)
172
+ end
173
+ end
174
+ context 'login fail' do
175
+ let(:default) { false }
176
+ it do
177
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:login)
178
+ .and_return(false)
179
+ subject
180
+ expects = <<EOF
181
+ please enter the OneDrive account.
182
+ start a connection to the OneDrive. please wait a few seconds.
183
+ login fail.
184
+ EOF
185
+ expect($terminal.output.string).to include(expects)
186
+ end
187
+ end
188
+ end
189
+ end
190
+
191
+ describe 'ls' do
192
+ subject { console.ls(file_name) }
193
+ let(:console) { create_console }
194
+ context 'have files' do
195
+ let(:file_name) { nil }
196
+ let(:posit) do
197
+ {
198
+ 'file1' => {'id' => 'file.1234', 'type' => 'file'},
199
+ 'folder1' => {'id' => 'folder.5678', 'type' => 'folder'}
200
+ }
201
+ end
202
+ it do
203
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_files)
204
+ .with(nil)
205
+ .and_return(posit)
206
+ subject
207
+ expects = <<EOF
208
+ you have these files on '/top'.
209
+ [file ] file1
210
+ [folder] folder1
211
+ EOF
212
+ expect($terminal.output.string).to include(expects)
213
+ end
214
+ end
215
+ context 'not have file' do
216
+ let(:file_name) { nil }
217
+ let(:posit) { {} }
218
+ it do
219
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_files)
220
+ .with(nil)
221
+ .and_return(posit)
222
+ subject
223
+ expects = "you have no file on '/top'."
224
+ expect($terminal.output.string).to include(expects)
225
+ end
226
+ end
227
+ context 'file name input' do
228
+ let(:file_name) { 'folder1' }
229
+ let(:posit) do
230
+ {
231
+ 'file2' => {'id' => 'file.2345', 'type' => 'file'},
232
+ 'folder2' => {'id' => 'folder.6789', 'type' => 'folder'}
233
+ }
234
+ end
235
+ it do
236
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_files)
237
+ .with(file_name)
238
+ .and_return(posit)
239
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
240
+ .with(file_name)
241
+ .and_return(true)
242
+ subject
243
+ expects = <<EOF
244
+ you have these files on '/top/folder1'.
245
+ [file ] file2
246
+ [folder] folder2
247
+ EOF
248
+ expect($terminal.output.string).to include(expects)
249
+ end
250
+ end
251
+ context 'file not exists' do
252
+ let(:file_name) { 'folder9' }
253
+ it do
254
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
255
+ .with(file_name)
256
+ .and_return(false)
257
+ expect { subject }.to raise_error(SystemExit)
258
+ expects = "'/top/folder9' not exists in OneDrive"
259
+ expect($terminal.output.string).to include(expects)
260
+ end
261
+ end
262
+ end
263
+
264
+ describe 'cd' do
265
+ subject { console.cd(file_name) }
266
+ let(:console) { create_console }
267
+ context 'file_name not input' do
268
+ let(:file_name) { nil }
269
+ it do
270
+ expect { subject }.to raise_error(SystemExit)
271
+ expects = 'this command needs file name.'
272
+ expect($terminal.output.string).to include(expects)
273
+ end
274
+ end
275
+ context 'have files' do
276
+ let(:file_name) { 'folder1' }
277
+ let(:posit) do
278
+ {
279
+ 'file2' => {'id' => 'file.2345', 'type' => 'file'},
280
+ 'folder2' => {'id' => 'folder.6789', 'type' => 'folder'}
281
+ }
282
+ end
283
+ it do
284
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
285
+ .with(file_name)
286
+ .and_return(true)
287
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:change_directory)
288
+ .with(file_name)
289
+ .and_return(posit)
290
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_current_directory)
291
+ .and_return('/top')
292
+ subject
293
+ expects = <<EOF
294
+ move to '/top/folder1'.
295
+ you have these files on '/top/folder1'.
296
+ [file ] file2
297
+ [folder] folder2
298
+ EOF
299
+ expect($terminal.output.string).to include(expects)
300
+ end
301
+ end
302
+ context 'not have file' do
303
+ let(:file_name) { 'folder1' }
304
+ let(:posit) { {} }
305
+ it do
306
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
307
+ .with(file_name)
308
+ .and_return(true)
309
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:change_directory)
310
+ .with(file_name)
311
+ .and_return(posit)
312
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_current_directory)
313
+ .and_return('/top')
314
+ subject
315
+ expects = <<EOF
316
+ move to '/top/folder1'.
317
+ you have no file on '/top/folder1'.
318
+ EOF
319
+ expect($terminal.output.string).to include(expects)
320
+ end
321
+ end
322
+ context 'file not exists' do
323
+ let(:file_name) { 'folder9' }
324
+ it do
325
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
326
+ .with(file_name)
327
+ .and_return(false)
328
+ expect { subject }.to raise_error(SystemExit)
329
+ expects = "'/top/folder9' not exists in OneDrive"
330
+ expect($terminal.output.string).to include(expects)
331
+ end
332
+ end
333
+ end
334
+
335
+ describe 'info' do
336
+ subject { console.info(file_name) }
337
+ let(:console) { create_console }
338
+ context 'file_name not input' do
339
+ let(:file_name) { nil }
340
+ it do
341
+ expect { subject }.to raise_error(SystemExit)
342
+ expects = 'this command needs file name.'
343
+ expect($terminal.output.string).to include(expects)
344
+ end
345
+ end
346
+ context 'file exists' do
347
+ let(:file_name) { 'file1' }
348
+ let(:posit) do
349
+ {
350
+ 'id' => 'file.1234',
351
+ 'name' => 'file1'
352
+ }
353
+ end
354
+ it do
355
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
356
+ .with(file_name)
357
+ .and_return(true)
358
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_property)
359
+ .and_return(posit)
360
+ subject
361
+ expects = <<EOF
362
+ information of '/top/file1'.
363
+ id : file.1234
364
+ name : file1
365
+ EOF
366
+ expect($terminal.output.string).to include(expects)
367
+ end
368
+ end
369
+ context 'file not exists' do
370
+ let(:file_name) { 'file9' }
371
+ it do
372
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
373
+ .with(file_name)
374
+ .and_return(false)
375
+ expect { subject }.to raise_error(SystemExit)
376
+ expects = "'/top/file9' not exists in OneDrive"
377
+ expect($terminal.output.string).to include(expects)
378
+ end
379
+ end
380
+ end
381
+
382
+ describe 'pwd' do
383
+ subject { console.pwd }
384
+ let(:console) { create_console }
385
+ let(:posit) { '/top' }
386
+ it do
387
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:show_current_directory)
388
+ .and_return(posit)
389
+ subject
390
+ expects = '/top'
391
+ expect($terminal.output.string).to include(expects)
392
+ end
393
+ end
394
+
395
+ describe 'download' do
396
+ subject { console.download(file_name) }
397
+ let(:console) { create_console }
398
+ context 'file_name not input' do
399
+ let(:file_name) { nil }
400
+ it do
401
+ expect { subject }.to raise_error(SystemExit)
402
+ expects = 'this command needs file name.'
403
+ expect($terminal.output.string).to include(expects)
404
+ end
405
+ end
406
+ context 'file exists' do
407
+ context 'not duplicate' do
408
+ let(:file_name) { 'file1' }
409
+ it do
410
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
411
+ .with(file_name)
412
+ .and_return(true)
413
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:download_file)
414
+ .with(file_name)
415
+ .and_return(true)
416
+ subject
417
+ expects = "'file1' download success."
418
+ expect($terminal.output.string).to include(expects)
419
+ end
420
+ end
421
+ context 'duplicate' do
422
+ let(:file_name) { 'file1' }
423
+ before(:each) do
424
+ open(file_name, 'wb') { |file| file << 'test' }
425
+ end
426
+ it do
427
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
428
+ .with(file_name)
429
+ .and_return(true)
430
+ expect { subject }.to raise_error(SystemExit)
431
+ expects = "'file1' already exists in local."
432
+ expect($terminal.output.string).to include(expects)
433
+ end
434
+ after(:each) do
435
+ File.delete(file_name) if File.exist?(file_name)
436
+ end
437
+ end
438
+ end
439
+ context 'file not exists' do
440
+ let(:file_name) { 'file9' }
441
+ it do
442
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
443
+ .with(file_name)
444
+ .and_return(false)
445
+ expect { subject }.to raise_error(SystemExit)
446
+ expects = "'/top/file9' not exists in OneDrive."
447
+ expect($terminal.output.string).to include(expects)
448
+ end
449
+ end
450
+ end
451
+
452
+ describe 'upload' do
453
+ subject { console.upload(file_name) }
454
+ let(:console) { create_console }
455
+ context 'file_name not input' do
456
+ let(:file_name) { nil }
457
+ it do
458
+ expect { subject }.to raise_error(SystemExit)
459
+ expects = 'this command needs file name.'
460
+ expect($terminal.output.string).to include(expects)
461
+ end
462
+ end
463
+ context 'file exists' do
464
+ context 'not duplicate' do
465
+ let(:file_name) { 'file1' }
466
+ before(:each) do
467
+ open(file_name, 'wb') { |file| file << 'test' }
468
+ end
469
+ it do
470
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
471
+ .with(file_name)
472
+ .and_return(false)
473
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:upload_file)
474
+ .with(file_name)
475
+ .and_return(true)
476
+ subject
477
+ expects = <<EOF
478
+ '/top/file1' upload success.
479
+ EOF
480
+ expect($terminal.output.string).to include(expects)
481
+ end
482
+ after(:each) do
483
+ File.delete(file_name) if File.exist?(file_name)
484
+ end
485
+ end
486
+ context 'duplicate' do
487
+ let(:file_name) { 'file1' }
488
+ before(:each) do
489
+ open(file_name, 'wb') { |file| file << 'test' }
490
+ end
491
+ it do
492
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
493
+ .with(file_name)
494
+ .and_return(true)
495
+ expect { subject }.to raise_error(SystemExit)
496
+ expects = "'/top/file1' already exists in OneDrive."
497
+ expect($terminal.output.string).to include(expects)
498
+ end
499
+ after(:each) do
500
+ File.delete(file_name) if File.exist?(file_name)
501
+ end
502
+ end
503
+ context'target is directory' do
504
+ let(:file_name) { 'folder1' }
505
+ before(:each) do
506
+ Dir.mkdir(file_name)
507
+ end
508
+ it do
509
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
510
+ .with("#{file_name}.zip")
511
+ .and_return(false)
512
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:upload_file)
513
+ .with(file_name)
514
+ .and_return(true)
515
+ subject
516
+ expects = <<EOF
517
+ 'folder1' is a directory.
518
+ upload as 'folder1.zip'.
519
+
520
+ '/top/folder1.zip' upload success.
521
+ EOF
522
+ expect($terminal.output.string).to include(expects)
523
+ end
524
+ after(:each) do
525
+ Dir.rmdir(file_name) if Dir.exist?(file_name)
526
+ end
527
+ end
528
+ end
529
+ context 'file not exists' do
530
+ let(:file_name) { 'file9' }
531
+ it do
532
+ expect { subject }.to raise_error(SystemExit)
533
+ expects = "'file9' not exists in local."
534
+ expect($terminal.output.string).to include(expects)
535
+ end
536
+ end
537
+ end
538
+
539
+ describe 'rm' do
540
+ subject { console.rm(file_name) }
541
+ let(:console) { create_console }
542
+ context 'file_name not input' do
543
+ let(:file_name) { nil }
544
+ it do
545
+ expect { subject }.to raise_error(SystemExit)
546
+ expects = 'this command needs file name.'
547
+ expect($terminal.output.string).to include(expects)
548
+ end
549
+ end
550
+ context 'file exists' do
551
+ context 'target is file' do
552
+ let(:file_name) { 'file1' }
553
+ it do
554
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
555
+ .with(file_name)
556
+ .and_return(true)
557
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:has_file?)
558
+ .with(file_name)
559
+ .and_return(false)
560
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:delete_file)
561
+ .with(file_name)
562
+ .and_return(true)
563
+ subject
564
+ expects = "'/top/file1' delete success."
565
+ expect($terminal.output.string).to include(expects)
566
+ end
567
+ end
568
+ context 'target is directory' do
569
+ let(:file_name) { 'folder1' }
570
+ it do
571
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
572
+ .with(file_name)
573
+ .and_return(true)
574
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:has_file?)
575
+ .with(file_name)
576
+ .and_return(true)
577
+ expect { subject }.to raise_error(SystemExit)
578
+ expects = "'/top/folder1' has files."
579
+ expect($terminal.output.string).to include(expects)
580
+ end
581
+ end
582
+ end
583
+ context 'file not exists' do
584
+ let(:file_name) { 'file9' }
585
+ it do
586
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
587
+ .with(file_name)
588
+ .and_return(false)
589
+ expect { subject }.to raise_error(SystemExit)
590
+ expects = "'/top/file9' not exists in OneDrive"
591
+ expect($terminal.output.string).to include(expects)
592
+ end
593
+ end
594
+ end
595
+
596
+ describe 'mkdir' do
597
+ subject { console.mkdir(mkdir_name) }
598
+ let(:console) { create_console }
599
+ context 'mkdir_name not input' do
600
+ let(:mkdir_name) { nil }
601
+ it do
602
+ expect { subject }.to raise_error(SystemExit)
603
+ expects = 'this command needs file name.'
604
+ expect($terminal.output.string).to include(expects)
605
+ end
606
+ end
607
+ context 'folder not exists' do
608
+ let(:mkdir_name) { 'folder1' }
609
+ it do
610
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
611
+ .with(mkdir_name)
612
+ .and_return(false)
613
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:make_directory)
614
+ .with(mkdir_name)
615
+ .and_return(true)
616
+ subject
617
+ expects = "make '/top/folder1' directory success."
618
+ expect($terminal.output.string).to include(expects)
619
+ end
620
+ end
621
+ context 'folder exists' do
622
+ let(:mkdir_name) { 'folder1' }
623
+ it do
624
+ expect_any_instance_of(CloudDoor::OneDrive).to receive(:file_exist?)
625
+ .with(mkdir_name)
626
+ .and_return(true)
627
+ expect { subject }.to raise_error(SystemExit)
628
+ expects = "'/top/folder1' already exists in OneDrive."
629
+ expect($terminal.output.string).to include(expects)
630
+ end
631
+ end
632
+ end
633
+ end