fallcli 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/LICENSE.md +22 -0
- data/README.md +45 -0
- data/Rakefile +6 -0
- data/bin/fallcli +7 -0
- data/fallcli.gemspec +35 -0
- data/lib/fallcli.rb +6 -0
- data/lib/fallcli/browser_helper.rb +29 -0
- data/lib/fallcli/cli.rb +69 -0
- data/lib/fallcli/config.rb +69 -0
- data/lib/fallcli/middleware.rb +55 -0
- data/lib/fallcli/middleware/ask_for_credentials.rb +39 -0
- data/lib/fallcli/middleware/base.rb +28 -0
- data/lib/fallcli/middleware/browser.rb +92 -0
- data/lib/fallcli/middleware/check_configuration.rb +18 -0
- data/lib/fallcli/middleware/check_credentials.rb +27 -0
- data/lib/fallcli/middleware/inject_client.rb +27 -0
- data/lib/fallcli/middleware/inject_configuration.rb +15 -0
- data/lib/fallcli/middleware/upload_browser.rb +128 -0
- data/lib/fallcli/uploader_browser_helper.rb +29 -0
- data/lib/fallcli/version.rb +3 -0
- data/spec/cli/account.rb +24 -0
- data/spec/cli/authorize_spec.rb +46 -0
- data/spec/cli/help_cli_spec.rb +17 -0
- data/spec/cli/verify_spec.rb +33 -0
- data/spec/cli/version_cli_spec.rb +16 -0
- data/spec/config_spec.rb +70 -0
- data/spec/fixtures/verify_success.json +14 -0
- data/spec/middleware/base_spec.rb +15 -0
- data/spec/middleware/check_configuration_spec.rb +16 -0
- data/spec/middleware/inject_configuration_spec.rb +16 -0
- data/spec/shared/environment.rb +44 -0
- data/spec/spec_helper.rb +30 -0
- data/tmp/.gitkeep +0 -0
- metadata +247 -0
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'fallcli/browser_helper'
|
2
|
+
require 'dispel'
|
3
|
+
|
4
|
+
module FallCli
|
5
|
+
module Middleware
|
6
|
+
# Check if the client has set-up configuration yet.
|
7
|
+
class Browser < Base
|
8
|
+
|
9
|
+
def show_ui filelist_obj
|
10
|
+
["\n", filelist_obj.show_files, "\nCurrent position: #{filelist_obj.position + 1} "].join("\n")
|
11
|
+
end
|
12
|
+
|
13
|
+
SPLASH = %{
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
'; .'
|
18
|
+
,':'' :',''
|
19
|
+
'',,.:' '',,,:',
|
20
|
+
'',,,,..,' '',,,,,.''
|
21
|
+
.':,,,,,....'` ';,,,,,,,..''
|
22
|
+
'',,,,,,,.....', ':,,,,,,,,...:'.
|
23
|
+
;',,,,,,,,,......''',,,,,,,,,,.....''
|
24
|
+
`';,,,,,,,,,,.......',,,,,,,,,,,.......';
|
25
|
+
':,,,,,,,,,,,......```,,,,,,,,,,........'
|
26
|
+
'',,,,,,,,,,.....`````,,,,,,,,,......,'`
|
27
|
+
'',,,,,,,,,...`````````,,,,,,,.....:'
|
28
|
+
:',,,,,,,,..```````````.,,,,,....''
|
29
|
+
`',,,,,,,```````````````,,,,...';
|
30
|
+
':,,,.``````````````````,,..'.
|
31
|
+
'',`````````````````````.,'`
|
32
|
+
'::`````````````````````,.',
|
33
|
+
`',,::,``````````````````:,..''
|
34
|
+
:',,,::::```````````````:::,...''
|
35
|
+
'',,,,::::,,```````````,::::,....:'
|
36
|
+
';,,,,,::::,,,.````````::::::,......'`
|
37
|
+
':,,,,,,::::,,,,,`` ``::::::::,.......':
|
38
|
+
':,,,,,,,::::,,,,,,. .;;:::::::,........'
|
39
|
+
'',,,,,,::::,,,,,,.`;;::::::::,......;'`
|
40
|
+
.';,,,,::::,,,,,,``,:::::::::,.....';
|
41
|
+
'',,,::::,,,,,```,,::::::::,...''
|
42
|
+
`';,:::,,,,,````,,,,::::::,.,':
|
43
|
+
;':::,,,..````,,,,,::::,,''
|
44
|
+
'..:,,...````,,,,,,:::,.'
|
45
|
+
'...,....````,,,,,,.:...'
|
46
|
+
;'.......````,,,,,,....''
|
47
|
+
''.....````,,,,,,..;'`
|
48
|
+
:',...````,,,,,,,';
|
49
|
+
''`.````,,,,,''
|
50
|
+
.':````,,,:',
|
51
|
+
''```,,''
|
52
|
+
`';`;'.
|
53
|
+
:''
|
54
|
+
|
55
|
+
______ ___ _ _ _____ _ _____
|
56
|
+
| ___/ _ \\ | | | | / __ \\| | |_ _|
|
57
|
+
| |_ / /_\\ \\| | | | | / \\/| | | |
|
58
|
+
| _|| _ || | | | | | | | | |
|
59
|
+
| | | | | || |____| |___| \\__/\\| |_____| |_
|
60
|
+
\\_| \\_| |_/\\_____/\\_____/\\____/\\_____/\\___/
|
61
|
+
V.#{FallCli::VERSION}
|
62
|
+
}
|
63
|
+
|
64
|
+
def call(env)
|
65
|
+
config = env["config"]
|
66
|
+
|
67
|
+
say SPLASH
|
68
|
+
|
69
|
+
sleep(2)
|
70
|
+
|
71
|
+
songs = env['dropbox-client'].ls
|
72
|
+
|
73
|
+
browser = FallCli::BrowserHelper.new(songs)
|
74
|
+
|
75
|
+
Dispel::Screen.open do |screen|
|
76
|
+
screen.draw show_ui(browser)
|
77
|
+
|
78
|
+
Dispel::Keyboard.output do |key|
|
79
|
+
case key
|
80
|
+
when :up then browser.position_up
|
81
|
+
when :down then browser.position_down
|
82
|
+
when "q" then break
|
83
|
+
end
|
84
|
+
screen.draw show_ui(browser)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
@app.call(env)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module FallCli
|
2
|
+
module Middleware
|
3
|
+
# Check if the client has set-up configuration yet.
|
4
|
+
class CheckConfiguration < Base
|
5
|
+
def call(env)
|
6
|
+
config = env["config"]
|
7
|
+
|
8
|
+
if !config || !config.data || !config.app_key || !config.secret_key
|
9
|
+
say "You must run `fallcli authorize` in order to connect to Dropbox", :red
|
10
|
+
exit 1
|
11
|
+
end
|
12
|
+
|
13
|
+
@app.call(env)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'dropbox-api'
|
3
|
+
require 'cgi'
|
4
|
+
|
5
|
+
module FallCli
|
6
|
+
module Middleware
|
7
|
+
class CheckCredentials < Base
|
8
|
+
def call(env)
|
9
|
+
|
10
|
+
say "Checking credentials with Dropbox..."
|
11
|
+
|
12
|
+
begin
|
13
|
+
env['dropbox-client'].ls
|
14
|
+
rescue Dropbox::API::Error => e
|
15
|
+
say "Connection to Dropbox failed (#{e})", :red
|
16
|
+
say "Check your ~/.fallcli/config file, and double check your credentials are correct", :yellow
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
|
20
|
+
say "Connection to dropbox successful!", :green
|
21
|
+
|
22
|
+
@app.call(env)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require "dropbox-api"
|
3
|
+
|
4
|
+
module FallCli
|
5
|
+
module Middleware
|
6
|
+
class InjectClient < Base
|
7
|
+
def call(env)
|
8
|
+
|
9
|
+
Dropbox::API::Config.app_key = env['config'].app_key
|
10
|
+
Dropbox::API::Config.app_secret = env['config'].secret_key
|
11
|
+
Dropbox::API::Config.mode = 'dropbox'
|
12
|
+
|
13
|
+
begin
|
14
|
+
client = Dropbox::API::Client.new(:token => env['config'].app_token, :secret => env['config'].app_secret)
|
15
|
+
rescue Dropbox::API::Error => e
|
16
|
+
say "Connection to Dropbox failed (#{e})", :red
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
|
20
|
+
env['dropbox-client'] = client
|
21
|
+
|
22
|
+
@app.call(env)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module FallCli
|
2
|
+
module Middleware
|
3
|
+
# Check if the client has set-up configuration yet.
|
4
|
+
class InjectConfiguration < Base
|
5
|
+
def call(env)
|
6
|
+
config = FallCli::Configuration.instance
|
7
|
+
|
8
|
+
env["config"] = config
|
9
|
+
|
10
|
+
@app.call(env)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'fallcli/uploader_browser_helper'
|
2
|
+
require 'ruby-progressbar'
|
3
|
+
require 'dispel'
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
module FallCli
|
7
|
+
module Middleware
|
8
|
+
# Check if the client has set-up configuration yet.
|
9
|
+
class UploaderBrowser < Base
|
10
|
+
|
11
|
+
def show_ui filelist_obj
|
12
|
+
["\n", filelist_obj.show_files, "\nCurrent position: #{filelist_obj.position + 1} "].join("\n")
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_files
|
16
|
+
require 'find'
|
17
|
+
files = []
|
18
|
+
Find.find('.') do |e|
|
19
|
+
if !File.directory?(e)
|
20
|
+
files << e unless e.match /.git/
|
21
|
+
end
|
22
|
+
end
|
23
|
+
files
|
24
|
+
end
|
25
|
+
|
26
|
+
SPLASH = %{
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
'; .'
|
31
|
+
,':'' :',''
|
32
|
+
'',,.:' '',,,:',
|
33
|
+
'',,,,..,' '',,,,,.''
|
34
|
+
.':,,,,,....'` ';,,,,,,,..''
|
35
|
+
'',,,,,,,.....', ':,,,,,,,,...:'.
|
36
|
+
;',,,,,,,,,......''',,,,,,,,,,.....''
|
37
|
+
`';,,,,,,,,,,.......',,,,,,,,,,,.......';
|
38
|
+
':,,,,,,,,,,,......```,,,,,,,,,,........'
|
39
|
+
'',,,,,,,,,,.....`````,,,,,,,,,......,'`
|
40
|
+
'',,,,,,,,,...`````````,,,,,,,.....:'
|
41
|
+
:',,,,,,,,..```````````.,,,,,....''
|
42
|
+
`',,,,,,,```````````````,,,,...';
|
43
|
+
':,,,.``````````````````,,..'.
|
44
|
+
'',`````````````````````.,'`
|
45
|
+
'::`````````````````````,.',
|
46
|
+
`',,::,``````````````````:,..''
|
47
|
+
:',,,::::```````````````:::,...''
|
48
|
+
'',,,,::::,,```````````,::::,....:'
|
49
|
+
';,,,,,::::,,,.````````::::::,......'`
|
50
|
+
':,,,,,,::::,,,,,`` ``::::::::,.......':
|
51
|
+
':,,,,,,,::::,,,,,,. .;;:::::::,........'
|
52
|
+
'',,,,,,::::,,,,,,.`;;::::::::,......;'`
|
53
|
+
.';,,,,::::,,,,,,``,:::::::::,.....';
|
54
|
+
'',,,::::,,,,,```,,::::::::,...''
|
55
|
+
`';,:::,,,,,````,,,,::::::,.,':
|
56
|
+
;':::,,,..````,,,,,::::,,''
|
57
|
+
'..:,,...````,,,,,,:::,.'
|
58
|
+
'...,....````,,,,,,.:...'
|
59
|
+
;'.......````,,,,,,....''
|
60
|
+
''.....````,,,,,,..;'`
|
61
|
+
:',...````,,,,,,,';
|
62
|
+
''`.````,,,,,''
|
63
|
+
.':````,,,:',
|
64
|
+
''```,,''
|
65
|
+
`';`;'.
|
66
|
+
:''
|
67
|
+
|
68
|
+
______ ___ _ _ _____ _ _____
|
69
|
+
| ___/ _ \\ | | | | / __ \\| | |_ _|
|
70
|
+
| |_ / /_\\ \\| | | | | / \\/| | | |
|
71
|
+
| _|| _ || | | | | | | | | |
|
72
|
+
| | | | | || |____| |___| \\__/\\| |_____| |_
|
73
|
+
\\_| \\_| |_/\\_____/\\_____/\\____/\\_____/\\___/
|
74
|
+
V.#{FallCli::VERSION}
|
75
|
+
}
|
76
|
+
|
77
|
+
def call(env)
|
78
|
+
config = env["config"]
|
79
|
+
|
80
|
+
say SPLASH
|
81
|
+
|
82
|
+
sleep(2)
|
83
|
+
|
84
|
+
files = get_files
|
85
|
+
|
86
|
+
upload_browser = FallCli::UploaderBrowserHelper.new(files)
|
87
|
+
|
88
|
+
Dispel::Screen.open do |screen|
|
89
|
+
screen.draw show_ui(upload_browser)
|
90
|
+
|
91
|
+
Dispel::Keyboard.output do |key|
|
92
|
+
case key
|
93
|
+
when :up then upload_browser.position_up
|
94
|
+
when :down then upload_browser.position_down
|
95
|
+
when :enter then
|
96
|
+
file = upload_browser.get_current_file
|
97
|
+
file_name = File.basename(file)
|
98
|
+
filepath = Pathname.new(file).realpath.to_s
|
99
|
+
total_size = File.size(filepath)
|
100
|
+
contents = File.read(filepath)
|
101
|
+
|
102
|
+
if total_size < 5*1024*1024
|
103
|
+
env['dropbox-client'].upload file_name, contents
|
104
|
+
else
|
105
|
+
say "Larger than 5MB: Progress Upload"
|
106
|
+
|
107
|
+
upload_progress_bar = ::ProgressBar.create(:title => "Upload progress",
|
108
|
+
:format => '%a <%B> %p%% %t',
|
109
|
+
:starting_at => 0,
|
110
|
+
:total => total_size)
|
111
|
+
|
112
|
+
response = env['dropbox-client'].chunked_upload file_name, File.open(filepath), :chunk_size => 0.1*1024*1024 do |offset, upload|
|
113
|
+
upload_progress_bar.progress = offset
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
say "File uploaded successfully!"
|
118
|
+
when "q" then break
|
119
|
+
end
|
120
|
+
screen.draw show_ui(upload_browser)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
@app.call(env)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module FallCli
|
2
|
+
class UploaderBrowserHelper
|
3
|
+
attr_accessor :position
|
4
|
+
|
5
|
+
def initialize items
|
6
|
+
@files = Array.new
|
7
|
+
items.each { |item| @files << item }
|
8
|
+
@position = 0
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_current_file
|
12
|
+
@files[@position]
|
13
|
+
end
|
14
|
+
|
15
|
+
def show_files
|
16
|
+
@files.each_with_index.map do |item, index|
|
17
|
+
position == index ? "[#{item}]" : " #{item} "
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def position_up
|
22
|
+
@position -= 1 unless @position < 1
|
23
|
+
end
|
24
|
+
|
25
|
+
def position_down
|
26
|
+
@position += 1 unless @position == (@files.size - 1)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/spec/cli/account.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FallCli::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "account" do
|
7
|
+
it "returns account info" do
|
8
|
+
|
9
|
+
stub_request(:get, "https://api.dropbox.com/1/account/info?").
|
10
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=>/OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
11
|
+
to_return(:status => 200, :body => fixture('account'))
|
12
|
+
|
13
|
+
@cli.account
|
14
|
+
expect($stdout.string).to eq <<-eos
|
15
|
+
REFERRAL_LINK | DISPLAY_NAME | UID | COUNTRY | QUOTA_INFO
|
16
|
+
-------------------------------|--------------|----------|---------|-------------------------------
|
17
|
+
https://www.dropbox.com/ref... | John P. User | 12345678 | US | #<Dropbox::API::Object norm...
|
18
|
+
eos
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FallCli::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "authorize" do
|
7
|
+
before do
|
8
|
+
stub_request(:post, "https://www.dropbox.com/1/oauth/request_token").
|
9
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=>/OAuth oauth_body_hash="\S+", oauth_callback="oob", oauth_consumer_key="foo", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_version="1.0"/, 'Content-Length'=>'0', 'User-Agent'=>'OAuth gem v0.4.7'}).
|
10
|
+
to_return(:status => 200, :body => "oauth_token_secret=b9q1n5il4lcc&oauth_token=mh7an9dkrg59")
|
11
|
+
|
12
|
+
stub_request(:post, "https://www.dropbox.com/1/oauth/access_token").
|
13
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=>/OAuth oauth_body_hash="\S+", oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="\S+", oauth_verifier="\S+", oauth_version="1.0"/, 'Content-Length'=>'0', 'User-Agent'=>'OAuth gem v0.4.7'}).
|
14
|
+
to_return(:status => 200, :body => "oauth_token_secret=95grkd9na7hm&oauth_token=ccl4li5n1q9b&uid=100")
|
15
|
+
|
16
|
+
stub_request(:get, "https://api.dropbox.com/1/metadata/dropbox/?").
|
17
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=>/OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="\S+", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
18
|
+
to_return(:status => 200, :body => fixture("verify_success"))
|
19
|
+
end
|
20
|
+
|
21
|
+
it "asks the right questions and saves then checks credentials" do
|
22
|
+
|
23
|
+
$stdout.should_receive(:print).exactly(6).times
|
24
|
+
$stdout.should_receive(:print).with("Enter your App key: ")
|
25
|
+
$stdin.should_receive(:gets).and_return(app_key)
|
26
|
+
$stdout.should_receive(:print).with("Enter your Secret key: ")
|
27
|
+
$stdin.should_receive(:gets).and_return(secret_key)
|
28
|
+
$stdout.should_receive(:print).with("Once you authorize the app on Dropbox, type yes... ")
|
29
|
+
$stdin.should_receive(:gets).and_return('yes')
|
30
|
+
|
31
|
+
@cli.authorize
|
32
|
+
|
33
|
+
expect($stdout.string).to eq <<-eos
|
34
|
+
If you dont know your app and secret key, try `fallcli get-keys`
|
35
|
+
Go to this url and click 'Authorize' to get the token:
|
36
|
+
https://www.dropbox.com/1/oauth/authorize?oauth_token=mh7an9dkrg59
|
37
|
+
Credentials saved to ~/.fallcli
|
38
|
+
Checking credentials with Dropbox...
|
39
|
+
Connection to dropbox successful!
|
40
|
+
eos
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FallCli::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "help" do
|
7
|
+
it "shows a help message" do
|
8
|
+
@cli.help
|
9
|
+
expect($stdout.string).to match("Commands:")
|
10
|
+
end
|
11
|
+
|
12
|
+
it "shows a help message for specific commands" do
|
13
|
+
@cli.help "authorize"
|
14
|
+
expect($stdout.string).to match("Usage:")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FallCli::CLI do
|
4
|
+
include_context "spec"
|
5
|
+
|
6
|
+
describe "verify" do
|
7
|
+
it "returns confirmation text when verify passes" do
|
8
|
+
stub_request(:get, "https://api.dropbox.com/1/metadata/dropbox/?").
|
9
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
10
|
+
to_return(:status => 200, :body => fixture("verify_success"))
|
11
|
+
@cli.verify
|
12
|
+
expect($stdout.string).to eq <<-eos
|
13
|
+
Checking credentials with Dropbox...
|
14
|
+
Connection to dropbox successful!
|
15
|
+
eos
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns error string when verify fails" do
|
19
|
+
stub_request(:get, "https://api.dropbox.com/1/metadata/dropbox/?").
|
20
|
+
with(:headers => {'Accept'=>'*/*', 'Authorization'=> /OAuth oauth_consumer_key="#{app_key}", oauth_nonce="\S+", oauth_signature="\S+", oauth_signature_method="HMAC-SHA1", oauth_timestamp="\S+", oauth_token="#{app_token}", oauth_version="1.0"/, 'User-Agent'=>'OAuth gem v0.4.7'}).
|
21
|
+
to_return(:status => 401, :body => "", :headers => {})
|
22
|
+
expect { @cli.verify }.to raise_error(SystemExit)
|
23
|
+
expect($stdout.string).to eq <<-eos
|
24
|
+
Checking credentials with Dropbox...
|
25
|
+
Connection to Dropbox failed (401 - Bad or expired token)
|
26
|
+
Check your ~/.fallcli/config file, and double check your credentials are correct
|
27
|
+
eos
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|