dummy_dropbox_sdk 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
data/.bundle/config ADDED
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_DISABLE_SHARED_GEMS: "1"
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ pkg
2
+ *.swp
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.8.7@dummy_dropbox
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,20 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ dummy_dropbox_sdk (0.0.11)
5
+ dropbox-sdk (>= 1.1)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ dropbox-sdk (1.1)
11
+ json
12
+ json (1.6.1)
13
+
14
+ PLATFORMS
15
+ ruby
16
+
17
+ DEPENDENCIES
18
+ bundler (>= 1.0.0.rc.6)
19
+ dropbox-sdk (>= 1.1)
20
+ dummy_dropbox_sdk!
data/README.rdoc ADDED
@@ -0,0 +1,43 @@
1
+ = DummyDropbox
2
+
3
+ http://farm5.static.flickr.com/4136/4925714505_3a3a0a6134_o.jpg
4
+
5
+ <b>I can image a Dropbox session, just for testing.</b>
6
+
7
+ Very simple library for mocking the dropbox_ruby_gem[http://rubygems.org/gems/dropbox].
8
+
9
+ You can test your application without making real calls to Dropbox API using a *local* *folder* to fake a Dropbox account.
10
+
11
+
12
+ == Install
13
+
14
+ $ [sudo] gem install dummy_dropbox
15
+
16
+
17
+ == Usage
18
+
19
+ require 'dummy_dropbox'
20
+
21
+ # Optional:
22
+ # Point where your local folder structure is located.
23
+ # It will be used as if the real Dropbox structure was been reading.
24
+ DummyDropbox.root_path = <your_local_folder>
25
+
26
+ session = Dropbox::Session.new('key', 'secret')
27
+ assert_equal( File.read( "<your_local_folder>/file1.txt" ) , @session.download( '/file1.txt' ) )
28
+
29
+ See the *test* folder.
30
+
31
+
32
+ == TODO
33
+
34
+ The status of this dummy implementation is not very much completed, I just implemented enough for my proposes.
35
+
36
+ Please fork it and complete the holes as you need it, them send me your pull request.
37
+
38
+
39
+ == Credits
40
+
41
+ Author:: Fernando Guillen: http://fernandoguillen.info
42
+ Copyright:: Copyright (c) 2010 Fernando Guillen
43
+ License:: Released under the MIT license.
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ # require 'bundler/gem_tasks'
2
+
3
+ require 'rake'
4
+ require 'rake/testtask'
5
+ require 'bundler'
6
+
7
+ include Rake::DSL
8
+
9
+ Bundler::GemHelper.install_tasks
10
+
11
+ task :default => :test
12
+
13
+ Rake::TestTask.new do |t|
14
+ t.libs << '.'
15
+ t.test_files = FileList['test/*_test.rb']
16
+ t.verbose = true
17
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "dummy_dropbox_sdk"
7
+ s.version = DummyDropbox::VERSION
8
+ s.authors = ["Panter llc"]
9
+ s.email = ["info@panter.ch"]
10
+ s.homepage = "https://github.com/panter/DummyDropbox"
11
+ s.summary = "Dummy monkey patching for the dropbox-sdk ruby gem: 'dropbox-sdk'"
12
+ s.description = "Dummy monkey patching for the dropbox-sdk ruby gem: 'dropbox-sdk'. You can test your Dropbox utility using a local folder to simulate your Dropbox folder."
13
+
14
+ s.rubyforge_project = "DummyDropbox"
15
+
16
+ s.add_development_dependency "bundler", ">= 1.0.0.rc.6"
17
+
18
+ s.add_dependency "dropbox-sdk", ">= 1.1"
19
+
20
+ s.files = `git ls-files`.split("\n")
21
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ s.require_paths = ["lib"]
24
+ end
@@ -0,0 +1,150 @@
1
+ begin
2
+ require 'dropbox_sdk'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'dropbox_sdk'
6
+ end
7
+ require 'ostruct'
8
+
9
+ module DummyDropbox
10
+ @@root_path = File.expand_path( "#{File.dirname(__FILE__)}/../test/fixtures/dropbox" )
11
+
12
+ def self.root_path=(path)
13
+ @@root_path = path
14
+ end
15
+
16
+ def self.root_path
17
+ @@root_path
18
+ end
19
+ end
20
+
21
+ class DropboxSession
22
+ def initialize(oauth_key, oauth_secret, options={})
23
+ @ssl = false
24
+ @consumer = OpenStruct.new( :key => "dummy key consumer" )
25
+ @request_token = "dummy request token"
26
+ end
27
+
28
+ def self.deserialize(data)
29
+ return DropboxSession.new( 'dummy_key', 'dummy_secret' )
30
+ end
31
+
32
+ def get_authorize_url(*args)
33
+ return 'https://www.dropbox.com/0/oauth/authorize'
34
+ end
35
+
36
+ def serialize
37
+ return 'dummy serial'.to_yaml
38
+ end
39
+
40
+ def authorized?
41
+ return true
42
+ end
43
+
44
+ def dummy?
45
+ return true
46
+ end
47
+
48
+ end
49
+
50
+ class DropboxClient
51
+
52
+ def initialize(session, root="app_folder", locale=nil)
53
+ @session = session
54
+ end
55
+
56
+ def file_create_folder(path, options={})
57
+ FileUtils.mkdir( "#{DummyDropbox::root_path}/#{path}" )
58
+ # intercepted result:
59
+ # {"modified"=>"Wed, 23 Nov 2011 10:24:37 +0000", "bytes"=>0, "size"=>"0
60
+ # bytes", "is_dir"=>true, "rev"=>"2f04dc6147", "icon"=>"folder",
61
+ # "root"=>"app_folder", "path"=>"/test_from_console", "thumb_exists"=>false,
62
+ # "revision"=>47}
63
+ return self.metadata( path )
64
+ end
65
+
66
+ def metadata(path, options={})
67
+ response = <<-RESPONSE
68
+ {
69
+ "thumb_exists": false,
70
+ "bytes": "#{File.size( "#{DummyDropbox::root_path}/#{path}" )}",
71
+ "modified": "Tue, 04 Nov 2008 02:52:28 +0000",
72
+ "path": "#{path}",
73
+ "is_dir": #{File.directory?( "#{DummyDropbox::root_path}/#{path}" )},
74
+ "size": "566.0KB",
75
+ "root": "dropbox",
76
+ "icon": "page_white_acrobat",
77
+ "hash": "theHash"
78
+ }
79
+ RESPONSE
80
+ return JSON.parse(response)
81
+ end
82
+
83
+ def put_file(to_path, file_obj, overwrite=false, parent_rev=nil)
84
+ File.join(DummyDropbox::root_path, to_path)
85
+ FileUtils.copy_file(file_obj.path, File.join(DummyDropbox::root_path, to_path))
86
+ return self.metadata(to_path)
87
+ end
88
+
89
+ # TODO these methods I don't used yet. They are commented out because they
90
+ # have to be checked against the api if the signature match
91
+
92
+ # def download(path, options={})
93
+ # File.read( "#{Dropbox.files_root_path}/#{path}" )
94
+ # end
95
+ #
96
+ # def delete(path, options={})
97
+ # FileUtils.rm_rf( "#{Dropbox.files_root_path}/#{path}" )
98
+ #
99
+ # return true
100
+ # end
101
+ #
102
+ # def upload(local_file_path, remote_folder_path, options={})
103
+ # end
104
+ #
105
+ #
106
+ # def list(path, options={})
107
+ # result = []
108
+ #
109
+ # Dir["#{Dropbox.files_root_path}/#{path}/**"].each do |element_path|
110
+ # element_path.gsub!( "#{Dropbox.files_root_path}/", '' )
111
+ #
112
+ # element =
113
+ # OpenStruct.new(
114
+ # :icon => 'folder',
115
+ # :'directory?' => File.directory?( "#{Dropbox.files_root_path}/#{element_path}" ),
116
+ # :path => element_path,
117
+ # :thumb_exists => false,
118
+ # :modified => Time.parse( '2010-01-01 10:10:10' ),
119
+ # :revision => 1,
120
+ # :bytes => 0,
121
+ # :is_dir => File.directory?( "#{Dropbox.files_root_path}/#{element_path}" ),
122
+ # :size => '0 bytes'
123
+ # )
124
+ #
125
+ # result << element
126
+ # end
127
+ #
128
+ # return result
129
+ # end
130
+ #
131
+ # def account
132
+ # response = <<-RESPONSE
133
+ # {
134
+ # "country": "",
135
+ # "display_name": "John Q. User",
136
+ # "email": "john@user.com",
137
+ # "quota_info": {
138
+ # "shared": 37378890,
139
+ # "quota": 62277025792,
140
+ # "normal": 263758550
141
+ # },
142
+ # "uid": "174"
143
+ # }
144
+ # RESPONSE
145
+ #
146
+ # return JSON.parse(response).symbolize_keys_recursively.to_struct_recursively
147
+ # end
148
+
149
+ end
150
+
data/lib/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module DummyDropbox
2
+ VERSION = '0.0.11'
3
+ end
@@ -0,0 +1,74 @@
1
+ require 'test/unit'
2
+ require "#{File.dirname(__FILE__)}/../lib/dummy_dropbox_sdk.rb"
3
+
4
+ class DummyDropboxSdkTest < Test::Unit::TestCase
5
+ def setup
6
+ @session = DropboxSession.new('key', 'secret')
7
+ @client = DropboxClient.new(@session)
8
+ end
9
+
10
+ def test_serialize
11
+ assert_equal("--- dummy serial\n", @session.serialize )
12
+ end
13
+
14
+ def test_get_authorize_url
15
+ assert_not_nil(@session.get_authorize_url)
16
+ end
17
+
18
+ def test_deserialize
19
+ assert_not_nil(DropboxSession.deserialize(nil))
20
+ end
21
+
22
+ def test_metadata
23
+ assert( !@client.metadata( '/file1.txt' )['is_dir'] )
24
+ assert( @client.metadata( '/folder1' )['is_dir'] )
25
+ end
26
+
27
+ def test_create_folder
28
+ FileUtils.rm_r( "#{DummyDropbox.root_path}/tmp_folder" ) if File.exists?( "#{DummyDropbox.root_path}/tmp_folder" )
29
+ metadata = @client.file_create_folder '/tmp_folder'
30
+ assert( File.directory?( "#{DummyDropbox.root_path}/tmp_folder" ) )
31
+ assert_equal(true, metadata["is_dir"])
32
+
33
+ FileUtils.rm_r( "#{DummyDropbox.root_path}/tmp_folder" )
34
+ end
35
+
36
+ def test_upload
37
+ FileUtils.rm_r( "#{DummyDropbox.root_path}/file.txt" ) if File.exists?( "#{DummyDropbox.root_path}/file.txt" )
38
+ file_fixture = File.new("#{File.dirname(__FILE__)}/fixtures/file.txt")
39
+ metadata = @client.put_file('file.txt', file_fixture)
40
+ assert_equal(
41
+ file_fixture.read,
42
+ File.read( "#{DummyDropbox.root_path}/file.txt" )
43
+ )
44
+ assert( !metadata['is_dir'] )
45
+ FileUtils.rm_r( "#{DummyDropbox.root_path}/file.txt" )
46
+ end
47
+
48
+ # TODO these methods I don't used yet. They are commented out because they
49
+ # have to be checked against the api if the signature match
50
+
51
+ # def test_download
52
+ # assert_equal( "File 1", @session.download( '/file1.txt' ) )
53
+ # end
54
+ #
55
+ # def test_list
56
+ # assert_equal(['/file1.txt', '/folder1'], @session.list('').map{ |e| e.path } )
57
+ # assert_equal(['folder1/file2.txt', 'folder1/file3.txt'], @session.list('folder1').map{ |e| e.path } )
58
+ # end
59
+ #
60
+ # def test_delete
61
+ # FileUtils.mkdir_p( "#{DummyDropbox.root_path}/tmp_folder" )
62
+ # 3.times { |i| FileUtils.touch( "#{DummyDropbox.root_path}/tmp_folder/#{i}.txt" ) }
63
+ #
64
+ # assert( File.exists?( "#{DummyDropbox.root_path}/tmp_folder" ) )
65
+ # assert( File.exists?( "#{DummyDropbox.root_path}/tmp_folder/0.txt" ) )
66
+ #
67
+ # metadata = @session.delete '/tmp_folder/0.txt'
68
+ # assert( !File.exists?( "#{DummyDropbox.root_path}/tmp_folder/0.txt" ) )
69
+ #
70
+ # metadata = @session.delete '/tmp_folder'
71
+ # assert( !File.exists?( "#{DummyDropbox.root_path}/tmp_folder" ) )
72
+ # end
73
+
74
+ end
Binary file
@@ -0,0 +1 @@
1
+ File 1
@@ -0,0 +1 @@
1
+ File 2
@@ -0,0 +1 @@
1
+ File 3
@@ -0,0 +1 @@
1
+ file content
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dummy_dropbox_sdk
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 11
10
+ version: 0.0.11
11
+ platform: ruby
12
+ authors:
13
+ - Panter llc
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-11-23 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bundler
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 15424057
30
+ segments:
31
+ - 1
32
+ - 0
33
+ - 0
34
+ - rc
35
+ - 6
36
+ version: 1.0.0.rc.6
37
+ type: :development
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: dropbox-sdk
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 13
48
+ segments:
49
+ - 1
50
+ - 1
51
+ version: "1.1"
52
+ type: :runtime
53
+ version_requirements: *id002
54
+ description: "Dummy monkey patching for the dropbox-sdk ruby gem: 'dropbox-sdk'. You can test your Dropbox utility using a local folder to simulate your Dropbox folder."
55
+ email:
56
+ - info@panter.ch
57
+ executables: []
58
+
59
+ extensions: []
60
+
61
+ extra_rdoc_files: []
62
+
63
+ files:
64
+ - .bundle/config
65
+ - .gitignore
66
+ - .rvmrc
67
+ - Gemfile
68
+ - Gemfile.lock
69
+ - README.rdoc
70
+ - Rakefile
71
+ - dummy_dropbox_sdk.gemspec
72
+ - lib/dummy_dropbox_sdk.rb
73
+ - lib/version.rb
74
+ - test/dummy_dropbox_sdk_test.rb
75
+ - test/fixtures/.DS_Store
76
+ - test/fixtures/dropbox/file1.txt
77
+ - test/fixtures/dropbox/folder1/file2.txt
78
+ - test/fixtures/dropbox/folder1/file3.txt
79
+ - test/fixtures/file.txt
80
+ has_rdoc: true
81
+ homepage: https://github.com/panter/DummyDropbox
82
+ licenses: []
83
+
84
+ post_install_message:
85
+ rdoc_options: []
86
+
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ hash: 3
95
+ segments:
96
+ - 0
97
+ version: "0"
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ hash: 3
104
+ segments:
105
+ - 0
106
+ version: "0"
107
+ requirements: []
108
+
109
+ rubyforge_project: DummyDropbox
110
+ rubygems_version: 1.3.7
111
+ signing_key:
112
+ specification_version: 3
113
+ summary: "Dummy monkey patching for the dropbox-sdk ruby gem: 'dropbox-sdk'"
114
+ test_files:
115
+ - test/dummy_dropbox_sdk_test.rb
116
+ - test/fixtures/.DS_Store
117
+ - test/fixtures/dropbox/file1.txt
118
+ - test/fixtures/dropbox/folder1/file2.txt
119
+ - test/fixtures/dropbox/folder1/file3.txt
120
+ - test/fixtures/file.txt