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,81 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Token' do
4
+ describe 'set_attributes' do
5
+ let(:token) { CloudDoor::Token.new('test_token', './data/') }
6
+ let(:attributes) do
7
+ {
8
+ 'token_type' => 'bearer',
9
+ 'expires_in' => 3600,
10
+ 'scope' => 'wl.skydrive',
11
+ 'access_token' => 'access_token',
12
+ 'refresh_token' => 'refresh_token',
13
+ 'user_id' => 1,
14
+ 'dummy' => 'dummy'
15
+ }
16
+ end
17
+ before(:each) do
18
+ token.set_attributes(attributes)
19
+ end
20
+ it { expect(token.token_type).to eq 'bearer' }
21
+ it { expect(token.expires_in).to eq 3600 }
22
+ it { expect(token.scope).to eq 'wl.skydrive' }
23
+ it { expect(token.access_token).to eq 'access_token' }
24
+ it { expect(token.refresh_token).to eq 'refresh_token' }
25
+ it { expect(token.user_id).to eq 1 }
26
+ it { expect(token.instance_variable_defined?(:@dummy)).to be_falsey }
27
+ end
28
+
29
+ describe 'write_token' do
30
+ subject { token.write_token }
31
+ let(:token) { Fabricate.build(:token, token_file: './data/test_token') }
32
+ before(:all) do
33
+ File.delete('./data/test_token') if File.exist?('./data/test_token')
34
+ end
35
+ context 'success' do
36
+ it { is_expected.to be_truthy }
37
+ end
38
+ context 'fail' do
39
+ before(:each) do
40
+ token.token_file = nil
41
+ end
42
+ it { is_expected.to be_falsey }
43
+ end
44
+ after(:all) do
45
+ File.delete('../data/test_token') if File.exist?('./data/test_token')
46
+ end
47
+ end
48
+
49
+ describe 'load_token' do
50
+ subject { CloudDoor::Token.load_token('test_token', './data/') }
51
+ let(:token_file) { './data/test_token' }
52
+ context 'success' do
53
+ let(:token_org) { Fabricate.build(:token, token_file: 'test_token') }
54
+ before(:each) do
55
+ open(token_file, 'wb') { |file| file << Marshal.dump(token_org) }
56
+ @token = CloudDoor::Token.load_token('test_token', './data/')
57
+ end
58
+ it { is_expected.to be_truthy }
59
+ it { expect(@token.is_a?(CloudDoor::Token)).to be_truthy }
60
+ it do
61
+ token_values = get_instance_variable_values(@token)
62
+ token_org_values = get_instance_variable_values(token_org)
63
+ expect(token_values).to eq token_org_values
64
+ end
65
+ end
66
+ context 'fail' do
67
+ context 'file not exists' do
68
+ it { is_expected.to be_nil }
69
+ end
70
+ context 'class is not Token' do
71
+ before(:each) do
72
+ open(token_file, 'wb') { |file| file << Marshal.dump('test') }
73
+ end
74
+ it { is_expected.to be_nil }
75
+ end
76
+ end
77
+ after(:each) do
78
+ File.delete(token_file) if File.exist?(token_file)
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,5 @@
1
+ Fabricator(:account, class_name: :'CloudDoor::Account') do
2
+ initialize_with { CloudDoor::Account.new(nil, './data/') }
3
+ storage 'onedrive'
4
+ file 'account.yml'
5
+ end
@@ -0,0 +1,5 @@
1
+ Fabricator(:cloud_yaml, class_name: :'CloudDoor::CloudYaml') do
2
+ storage 'onedrive'
3
+ file 'account.yml'
4
+ items %w(login_account login_password)
5
+ end
@@ -0,0 +1,5 @@
1
+ Fabricator(:config, class_name: :'CloudDoor::Config') do
2
+ initialize_with { CloudDoor::Config.new(nil) }
3
+ storage 'onedrive'
4
+ file 'cloud_door_config.yml'
5
+ end
@@ -0,0 +1,10 @@
1
+ Fabricator(:token, class_name: :'CloudDoor::Token') do
2
+ initialize_with { CloudDoor::Token.new(token_file, './data/') }
3
+ token_file 'token'
4
+ token_type 'bearer'
5
+ expires_in 3600
6
+ scope 'wl.skydrive'
7
+ access_token 'access_token'
8
+ refresh_token 'refresh_token'
9
+ user_id 1
10
+ end
@@ -0,0 +1,55 @@
1
+ require 'rubygems'
2
+ require 'webmock/rspec'
3
+ require 'fabrication'
4
+ require 'pp'
5
+ require 'cloud_door'
6
+
7
+ # override for test
8
+ class HighLine
9
+ attr_accessor :output
10
+
11
+ def ask( question, answer_type = String, &details )
12
+ case question
13
+ when 'client_id : '
14
+ 'client'
15
+ when 'client_secret : '
16
+ 'secret'
17
+ when 'redirect_url : '
18
+ 'localhost'
19
+ when 'login_account : '
20
+ 'account'
21
+ when 'login_password: '
22
+ 'password'
23
+ end
24
+ end
25
+
26
+ def agree( yes_or_no_question, character = nil )
27
+ if yes_or_no_question.include?("do you want to allow access") ||
28
+ yes_or_no_question.include?("do you want to delete")
29
+ true
30
+ else
31
+ false
32
+ end
33
+ end
34
+ end
35
+
36
+ def get_instance_variable_values(target)
37
+ target_hash = {}
38
+ target.instance_variables.each do |item|
39
+ target_hash[item] = target.instance_variable_get(item)
40
+ end
41
+ target_hash
42
+ end
43
+
44
+ def create_storage(storage_klass, file_id = nil)
45
+ storage = storage_klass.new
46
+ storage.file_id = file_id
47
+ storage.token.token_file = './data/test_token'
48
+ storage.token.access_token = 'token'
49
+ storage.token.refresh_token = 'refresh'
50
+ storage.config.client_id = '1234'
51
+ storage.config.client_secret = 'abcd'
52
+ storage.config.redirect_url = 'testurl'
53
+ storage.file_list.list_file = './data/testlist'
54
+ storage
55
+ end
metadata ADDED
@@ -0,0 +1,380 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cloud_door
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kotaro Hibi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.3'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 10.3.2
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '10.3'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 10.3.2
47
+ - !ruby/object:Gem::Dependency
48
+ name: rest-client
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.6'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.6.7
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.6'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.6.7
67
+ - !ruby/object:Gem::Dependency
68
+ name: commander
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '4.2'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 4.2.0
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '4.2'
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: 4.2.0
87
+ - !ruby/object:Gem::Dependency
88
+ name: rubyzip
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '1.1'
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.1.4
97
+ type: :runtime
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.1'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 1.1.4
107
+ - !ruby/object:Gem::Dependency
108
+ name: watir
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '5.0'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 5.0.0
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '5.0'
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 5.0.0
127
+ - !ruby/object:Gem::Dependency
128
+ name: watir-webdriver
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '0.6'
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 0.6.9
137
+ type: :runtime
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '0.6'
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 0.6.9
147
+ - !ruby/object:Gem::Dependency
148
+ name: dropbox-sdk
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '1.6'
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: 1.6.4
157
+ type: :runtime
158
+ prerelease: false
159
+ version_requirements: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - "~>"
162
+ - !ruby/object:Gem::Version
163
+ version: '1.6'
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 1.6.4
167
+ - !ruby/object:Gem::Dependency
168
+ name: rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '2.99'
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: 2.99.0
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: '2.99'
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: 2.99.0
187
+ - !ruby/object:Gem::Dependency
188
+ name: webmock
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '1.18'
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: 1.18.0
197
+ type: :development
198
+ prerelease: false
199
+ version_requirements: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: '1.18'
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: 1.18.0
207
+ - !ruby/object:Gem::Dependency
208
+ name: guard-rspec
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '4.2'
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: 4.2.10
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - "~>"
222
+ - !ruby/object:Gem::Version
223
+ version: '4.2'
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ version: 4.2.10
227
+ - !ruby/object:Gem::Dependency
228
+ name: terminal-notifier-guard
229
+ requirement: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - "~>"
232
+ - !ruby/object:Gem::Version
233
+ version: '1.5'
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: 1.5.3
237
+ type: :development
238
+ prerelease: false
239
+ version_requirements: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '1.5'
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ version: 1.5.3
247
+ - !ruby/object:Gem::Dependency
248
+ name: fabrication
249
+ requirement: !ruby/object:Gem::Requirement
250
+ requirements:
251
+ - - "~>"
252
+ - !ruby/object:Gem::Version
253
+ version: '2.11'
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: 2.11.2
257
+ type: :development
258
+ prerelease: false
259
+ version_requirements: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: '2.11'
264
+ - - ">="
265
+ - !ruby/object:Gem::Version
266
+ version: 2.11.2
267
+ - !ruby/object:Gem::Dependency
268
+ name: rubocop
269
+ requirement: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - "~>"
272
+ - !ruby/object:Gem::Version
273
+ version: '0.23'
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: 0.23.0
277
+ type: :development
278
+ prerelease: false
279
+ version_requirements: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - "~>"
282
+ - !ruby/object:Gem::Version
283
+ version: '0.23'
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: 0.23.0
287
+ description: |-
288
+ This gem can access different cloud storage through same interface.
289
+ This gem supports OneDrive and Dropbox, now.
290
+ It will be supported also google drive in the future.
291
+ email:
292
+ - hibiheion@gmail.com
293
+ executables:
294
+ - dropbox
295
+ - onedrive
296
+ extensions: []
297
+ extra_rdoc_files: []
298
+ files:
299
+ - ".gitignore"
300
+ - ".travis.yml"
301
+ - Gemfile
302
+ - Guardfile
303
+ - LICENSE.txt
304
+ - README.md
305
+ - Rakefile
306
+ - bin/dropbox
307
+ - bin/onedrive
308
+ - cloud_door.gemspec
309
+ - cloud_door_config.yml
310
+ - data/.gitkeep
311
+ - data/testlist
312
+ - lib/cloud_door.rb
313
+ - lib/cloud_door/account.rb
314
+ - lib/cloud_door/cloud_storage.rb
315
+ - lib/cloud_door/cloud_yaml.rb
316
+ - lib/cloud_door/config.rb
317
+ - lib/cloud_door/console.rb
318
+ - lib/cloud_door/dropbox.rb
319
+ - lib/cloud_door/exceptions.rb
320
+ - lib/cloud_door/file_list.rb
321
+ - lib/cloud_door/onedrive.rb
322
+ - lib/cloud_door/onedrive_api.rb
323
+ - lib/cloud_door/token.rb
324
+ - lib/cloud_door/version.rb
325
+ - log/.gitkeep
326
+ - spec/cloud_door/account_spec.rb
327
+ - spec/cloud_door/cloud_storage_spec.rb
328
+ - spec/cloud_door/cloud_yaml_spec.rb
329
+ - spec/cloud_door/config_spec.rb
330
+ - spec/cloud_door/console_spec.rb
331
+ - spec/cloud_door/dropbox_spec.rb
332
+ - spec/cloud_door/file_list_spec.rb
333
+ - spec/cloud_door/onedrive_api_spec.rb
334
+ - spec/cloud_door/onedrive_spec.rb
335
+ - spec/cloud_door/token_spec.rb
336
+ - spec/fabricators/account_fabricator.rb
337
+ - spec/fabricators/cloud_yaml_fabricator.rb
338
+ - spec/fabricators/config_fabrication.rb
339
+ - spec/fabricators/token_fabricator.rb
340
+ - spec/spec_helper.rb
341
+ homepage: https://github.com/KotaroHibi/cloud_door
342
+ licenses:
343
+ - MIT
344
+ metadata: {}
345
+ post_install_message:
346
+ rdoc_options: []
347
+ require_paths:
348
+ - lib
349
+ required_ruby_version: !ruby/object:Gem::Requirement
350
+ requirements:
351
+ - - ">="
352
+ - !ruby/object:Gem::Version
353
+ version: '0'
354
+ required_rubygems_version: !ruby/object:Gem::Requirement
355
+ requirements:
356
+ - - ">="
357
+ - !ruby/object:Gem::Version
358
+ version: '0'
359
+ requirements: []
360
+ rubyforge_project:
361
+ rubygems_version: 2.2.2
362
+ signing_key:
363
+ specification_version: 4
364
+ summary: This gem can access different cloud storage through same interface.
365
+ test_files:
366
+ - spec/cloud_door/account_spec.rb
367
+ - spec/cloud_door/cloud_storage_spec.rb
368
+ - spec/cloud_door/cloud_yaml_spec.rb
369
+ - spec/cloud_door/config_spec.rb
370
+ - spec/cloud_door/console_spec.rb
371
+ - spec/cloud_door/dropbox_spec.rb
372
+ - spec/cloud_door/file_list_spec.rb
373
+ - spec/cloud_door/onedrive_api_spec.rb
374
+ - spec/cloud_door/onedrive_spec.rb
375
+ - spec/cloud_door/token_spec.rb
376
+ - spec/fabricators/account_fabricator.rb
377
+ - spec/fabricators/cloud_yaml_fabricator.rb
378
+ - spec/fabricators/config_fabrication.rb
379
+ - spec/fabricators/token_fabricator.rb
380
+ - spec/spec_helper.rb