dummy_dropbox 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.
- data/Manifest +8 -0
- data/README.md +41 -0
- data/Rakefile +13 -0
- data/dummy_dropbox.gemspec +34 -0
- data/lib/dummy_dropbox.rb +111 -0
- data/test/dummy_dropbox_test.rb +29 -0
- data/test/fixtures/dropbox/file1.txt +1 -0
- data/test/fixtures/dropbox/folder1/file2.txt +1 -0
- data/test/fixtures/dropbox/folder1/file3.txt +1 -0
- metadata +95 -0
data/Manifest
ADDED
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
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
|
+
So you can test your application without making real calls to Dropbox API.
|
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
|
+
DropboxDummy.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
|
+
|
37
|
+
== Credits
|
38
|
+
|
39
|
+
Author:: Fernando Guillen: http://fernandoguillen.info
|
40
|
+
Copyright:: Copyright (c) 2010 Fernando Guillen
|
41
|
+
License:: Released under the MIT license.
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('dummy_dropbox', '0.0.1') do |p|
|
6
|
+
p.description = "Dummy monkey patching for the dropbox ruby gem: http://rubygems.org/gems/dropbox"
|
7
|
+
p.url = "http://github.com/fguillen/DummyDropbox"
|
8
|
+
p.author = "Fernando Guillen"
|
9
|
+
p.email = "fguillen.mail@gmail.com"
|
10
|
+
p.ignore_pattern = []
|
11
|
+
p.development_dependencies = []
|
12
|
+
p.runtime_dependencies = ['dropbox']
|
13
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{dummy_dropbox}
|
5
|
+
s.version = "0.0.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Fernando Guillen"]
|
9
|
+
s.date = %q{2010-08-25}
|
10
|
+
s.description = %q{Dummy monkey patching for the dropbox ruby gem: http://rubygems.org/gems/dropbox}
|
11
|
+
s.email = %q{fguillen.mail@gmail.com}
|
12
|
+
s.extra_rdoc_files = ["README.md", "lib/dummy_dropbox.rb"]
|
13
|
+
s.files = ["Manifest", "README.md", "Rakefile", "lib/dummy_dropbox.rb", "test/dummy_dropbox_test.rb", "test/fixtures/dropbox/file1.txt", "test/fixtures/dropbox/folder1/file2.txt", "test/fixtures/dropbox/folder1/file3.txt", "dummy_dropbox.gemspec"]
|
14
|
+
s.homepage = %q{http://github.com/fguillen/DummyDropbox}
|
15
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Dummy_dropbox", "--main", "README.md"]
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
s.rubyforge_project = %q{dummy_dropbox}
|
18
|
+
s.rubygems_version = %q{1.3.7}
|
19
|
+
s.summary = %q{Dummy monkey patching for the dropbox ruby gem: http://rubygems.org/gems/dropbox}
|
20
|
+
s.test_files = ["test/dummy_dropbox_test.rb"]
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
24
|
+
s.specification_version = 3
|
25
|
+
|
26
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
+
s.add_runtime_dependency(%q<dropbox>, [">= 0"])
|
28
|
+
else
|
29
|
+
s.add_dependency(%q<dropbox>, [">= 0"])
|
30
|
+
end
|
31
|
+
else
|
32
|
+
s.add_dependency(%q<dropbox>, [">= 0"])
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
class DummyDropbox
|
2
|
+
@@root_path = File.expand_path( "#{File.dirname(__FILE__)}/../test/fixtures/dropbox" )
|
3
|
+
|
4
|
+
def self.root_path=(path)
|
5
|
+
@@root_path = path
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.root_path
|
9
|
+
@@root_path
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Dropbox
|
14
|
+
class Session
|
15
|
+
def initialize(oauth_key, oauth_secret, options={})
|
16
|
+
@ssl = false
|
17
|
+
@consumer = OpenStruct.new( :key => "dummy key consumer" )
|
18
|
+
@request_token = "dummy request token"
|
19
|
+
end
|
20
|
+
|
21
|
+
def authorize_url(*args)
|
22
|
+
return 'dummy url'
|
23
|
+
end
|
24
|
+
|
25
|
+
def authorize(options={})
|
26
|
+
return true
|
27
|
+
end
|
28
|
+
|
29
|
+
def authorized?
|
30
|
+
return true
|
31
|
+
end
|
32
|
+
|
33
|
+
def serialize
|
34
|
+
return 'dummy serial'
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.deserialize(data)
|
38
|
+
return Dropbox::Session.new( 'dummy_key', 'dummy_secret' )
|
39
|
+
end
|
40
|
+
|
41
|
+
#################
|
42
|
+
# API methods
|
43
|
+
#################
|
44
|
+
|
45
|
+
def download(path, options={})
|
46
|
+
File.read( "#{Dropbox.files_root_path}/#{path}" )
|
47
|
+
end
|
48
|
+
|
49
|
+
def metadata(path, options={})
|
50
|
+
response = <<-RESPONSE
|
51
|
+
{
|
52
|
+
"thumb_exists": false,
|
53
|
+
"bytes": "#{File.size( "#{Dropbox.files_root_path}/#{path}" )}",
|
54
|
+
"modified": "Tue, 04 Nov 2008 02:52:28 +0000",
|
55
|
+
"path": "#{path}",
|
56
|
+
"is_dir": #{File.directory?( "#{Dropbox.files_root_path}/#{path}" )},
|
57
|
+
"size": "566.0KB",
|
58
|
+
"root": "dropbox",
|
59
|
+
"icon": "page_white_acrobat"
|
60
|
+
}
|
61
|
+
RESPONSE
|
62
|
+
return parse_metadata(JSON.parse(response).symbolize_keys_recursively).to_struct_recursively
|
63
|
+
end
|
64
|
+
|
65
|
+
def list(path, options={})
|
66
|
+
result = []
|
67
|
+
|
68
|
+
Dir["#{Dropbox.files_root_path}/#{path}/**"].each do |element_path|
|
69
|
+
element_path.gsub!( "#{Dropbox.files_root_path}/", '' )
|
70
|
+
|
71
|
+
element =
|
72
|
+
OpenStruct.new(
|
73
|
+
:icon => 'folder',
|
74
|
+
:'directory?' => File.directory?( "#{Dropbox.files_root_path}/#{element_path}" ),
|
75
|
+
:path => element_path,
|
76
|
+
:thumb_exists => false,
|
77
|
+
:modified => Time.parse( '2010-01-01 10:10:10' ),
|
78
|
+
:revision => 1,
|
79
|
+
:bytes => 0,
|
80
|
+
:is_dir => File.directory?( "#{Dropbox.files_root_path}/#{element_path}" ),
|
81
|
+
:size => '0 bytes'
|
82
|
+
)
|
83
|
+
|
84
|
+
result << element
|
85
|
+
end
|
86
|
+
|
87
|
+
return result
|
88
|
+
end
|
89
|
+
|
90
|
+
def account
|
91
|
+
response = <<-RESPONSE
|
92
|
+
{
|
93
|
+
"country": "",
|
94
|
+
"display_name": "John Q. User",
|
95
|
+
"quota_info": {
|
96
|
+
"shared": 37378890,
|
97
|
+
"quota": 62277025792,
|
98
|
+
"normal": 263758550
|
99
|
+
},
|
100
|
+
"uid": "174"
|
101
|
+
}
|
102
|
+
RESPONSE
|
103
|
+
|
104
|
+
return JSON.parse(response).symbolize_keys_recursively.to_struct_recursively
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def self.files_root_path
|
109
|
+
return DummyDropbox::root_path
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'ostruct'
|
4
|
+
require 'dropbox'
|
5
|
+
require "#{File.dirname(__FILE__)}/../lib/dummy_dropbox.rb"
|
6
|
+
|
7
|
+
class DummyDropboxTest < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
@session = Dropbox::Session.new('key', 'secret')
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_session
|
13
|
+
assert_equal( "#<Dropbox::Session dummy key consumer (authorized)>", @session.inspect )
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_download
|
17
|
+
assert_equal( "File 1", @session.download( '/file1.txt' ) )
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_metadata
|
21
|
+
assert( !@session.metadata( '/file1.txt' ).directory? )
|
22
|
+
assert( @session.metadata( '/folder1' ).directory? )
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_list
|
26
|
+
assert_equal(['/file1.txt', '/folder1'], @session.list('').map{ |e| e.path } )
|
27
|
+
assert_equal(['folder1/file2.txt', 'folder1/file3.txt'], @session.list('folder1').map{ |e| e.path } )
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
File 1
|
@@ -0,0 +1 @@
|
|
1
|
+
File 2
|
@@ -0,0 +1 @@
|
|
1
|
+
File 3
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dummy_dropbox
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Fernando Guillen
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-08-25 00:00:00 +02:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: dropbox
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
description: "Dummy monkey patching for the dropbox ruby gem: http://rubygems.org/gems/dropbox"
|
36
|
+
email: fguillen.mail@gmail.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files:
|
42
|
+
- README.md
|
43
|
+
- lib/dummy_dropbox.rb
|
44
|
+
files:
|
45
|
+
- Manifest
|
46
|
+
- README.md
|
47
|
+
- Rakefile
|
48
|
+
- lib/dummy_dropbox.rb
|
49
|
+
- test/dummy_dropbox_test.rb
|
50
|
+
- test/fixtures/dropbox/file1.txt
|
51
|
+
- test/fixtures/dropbox/folder1/file2.txt
|
52
|
+
- test/fixtures/dropbox/folder1/file3.txt
|
53
|
+
- dummy_dropbox.gemspec
|
54
|
+
has_rdoc: true
|
55
|
+
homepage: http://github.com/fguillen/DummyDropbox
|
56
|
+
licenses: []
|
57
|
+
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options:
|
60
|
+
- --line-numbers
|
61
|
+
- --inline-source
|
62
|
+
- --title
|
63
|
+
- Dummy_dropbox
|
64
|
+
- --main
|
65
|
+
- README.md
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 11
|
83
|
+
segments:
|
84
|
+
- 1
|
85
|
+
- 2
|
86
|
+
version: "1.2"
|
87
|
+
requirements: []
|
88
|
+
|
89
|
+
rubyforge_project: dummy_dropbox
|
90
|
+
rubygems_version: 1.3.7
|
91
|
+
signing_key:
|
92
|
+
specification_version: 3
|
93
|
+
summary: "Dummy monkey patching for the dropbox ruby gem: http://rubygems.org/gems/dropbox"
|
94
|
+
test_files:
|
95
|
+
- test/dummy_dropbox_test.rb
|