cloud_door 0.0.1

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.
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