shelly 0.0.37 → 0.0.38

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.
@@ -3,6 +3,7 @@ require "shelly/cli/runner"
3
3
 
4
4
  describe Shelly::CLI::Runner do
5
5
  before do
6
+ ENV['SHELLY_DEBUG'] = "false"
6
7
  @runner = Shelly::CLI::Runner.new(%w(version --debug))
7
8
  end
8
9
 
@@ -21,8 +22,15 @@ describe Shelly::CLI::Runner do
21
22
  it "should be true if args include --debug option" do
22
23
  @runner.should be_debug
23
24
  end
25
+
26
+ it "should be true if SHELLY_DEBUG is set to true" do
27
+ runner = Shelly::CLI::Runner.new
28
+ runner.should_not be_debug
29
+ ENV['SHELLY_DEBUG'] = "true"
30
+ runner.should be_debug
31
+ end
24
32
 
25
- it "should be failse if args doesn't include --debug option" do
33
+ it "should be false if args doesn't include --debug option" do
26
34
  runner = Shelly::CLI::Runner.new(%w(version))
27
35
  runner.should_not be_debug
28
36
  end
@@ -5,11 +5,13 @@ describe Shelly::CLI::User do
5
5
  before do
6
6
  FileUtils.stub(:chmod)
7
7
  @cli_user = Shelly::CLI::User.new
8
+ Shelly::CLI::User.stub(:new).and_return(@cli_user)
8
9
  @client = mock
9
10
  Shelly::Client.stub(:new).and_return(@client)
10
11
  Shelly::User.stub(:guess_email).and_return("")
11
12
  $stdout.stub(:puts)
12
13
  $stdout.stub(:print)
14
+ @client.stub(:token).and_return("abc")
13
15
  end
14
16
 
15
17
  describe "#help" do
@@ -17,7 +19,7 @@ describe Shelly::CLI::User do
17
19
  $stdout.should_receive(:puts).with("Tasks:")
18
20
  $stdout.should_receive(:puts).with(/add \[EMAIL\]\s+# Add new developer to clouds defined in Cloudfile/)
19
21
  $stdout.should_receive(:puts).with(/list\s+# List users with access to clouds defined in Cloudfile/)
20
- @cli_user.help
22
+ invoke(@cli_user, :help)
21
23
  end
22
24
  end
23
25
 
@@ -35,7 +37,7 @@ describe Shelly::CLI::User do
35
37
  Shelly::App.stub(:inside_git_repository?).and_return(false)
36
38
  $stdout.should_receive(:puts).with("\e[31mMust be run inside your project git repository\e[0m")
37
39
  lambda {
38
- @cli_user.list
40
+ invoke(@cli_user, :list)
39
41
  }.should raise_error(SystemExit)
40
42
  end
41
43
 
@@ -43,7 +45,18 @@ describe Shelly::CLI::User do
43
45
  File.delete("Cloudfile")
44
46
  $stdout.should_receive(:puts).with("\e[31mNo Cloudfile found\e[0m")
45
47
  lambda {
46
- @cli_user.list
48
+ invoke(@cli_user, :list)
49
+ }.should raise_error(SystemExit)
50
+ end
51
+
52
+ it "should exit if user is not logged in" do
53
+ response = {"message" => "Unauthorized", "url" => "https://admin.winniecloud.com/users/password/new"}
54
+ exception = Shelly::Client::APIError.new(response.to_json, 404)
55
+ @client.stub(:token).and_raise(exception)
56
+ $stdout.should_receive(:puts).with(red "You are not logged in. To log in use:")
57
+ $stdout.should_receive(:puts).with(" shelly login")
58
+ lambda {
59
+ invoke(@cli_user, :list)
47
60
  }.should raise_error(SystemExit)
48
61
  end
49
62
 
@@ -51,14 +64,14 @@ describe Shelly::CLI::User do
51
64
  it "should receive clouds from the Cloudfile" do
52
65
  @client.stub(:app_users).and_return(response)
53
66
  @cloudfile.should_receive(:clouds).and_return(["foo-staging", "foo-production"])
54
- @cli_user.list
67
+ invoke(@cli_user, :list)
55
68
  end
56
69
 
57
70
  it "should display clouds and users" do
58
71
  @client.stub(:app_users).and_return(response)
59
72
  $stdout.should_receive(:puts).with("Cloud foo-production:")
60
73
  $stdout.should_receive(:puts).with(" user@example.com")
61
- @cli_user.list
74
+ invoke(@cli_user, :list)
62
75
  end
63
76
  end
64
77
 
@@ -72,7 +85,7 @@ describe Shelly::CLI::User do
72
85
  exception = Shelly::Client::APIError.new(response.to_json, 404)
73
86
  @client.stub(:app_users).and_raise(exception)
74
87
  $stdout.should_receive(:puts).with(red "You have no access to 'foo-staging' cloud defined in Cloudfile")
75
- @cli_user.list
88
+ invoke(@cli_user, :list)
76
89
  end
77
90
  end
78
91
  end
@@ -93,7 +106,7 @@ describe Shelly::CLI::User do
93
106
  File.delete("Cloudfile")
94
107
  $stdout.should_receive(:puts).with("\e[31mNo Cloudfile found\e[0m")
95
108
  lambda {
96
- @cli_user.add
109
+ invoke(@cli_user, :add)
97
110
  }.should raise_error(SystemExit)
98
111
  end
99
112
 
@@ -101,7 +114,7 @@ describe Shelly::CLI::User do
101
114
  Shelly::App.stub(:inside_git_repository?).and_return(false)
102
115
  $stdout.should_receive(:puts).with("\e[31mMust be run inside your project git repository\e[0m")
103
116
  lambda {
104
- @cli_user.add
117
+ invoke(@cli_user, :add)
105
118
  }.should raise_error(SystemExit)
106
119
  end
107
120
 
@@ -113,17 +126,17 @@ describe Shelly::CLI::User do
113
126
 
114
127
  it "should ask about email" do
115
128
  fake_stdin(["megan@example.com"]) do
116
- @cli_user.add
129
+ invoke(@cli_user, :add)
117
130
  end
118
131
  end
119
132
 
120
133
  it "should receive clouds from the Cloudfile" do
121
- @cli_user.add("megan@example.com")
134
+ invoke(@cli_user, :add, "megan@example.com")
122
135
  end
123
136
 
124
137
  it "should receive clouds from the Cloudfile" do
125
138
  $stdout.should_receive(:puts).with("\e[32mSending invitation to megan@example.com to work on foo-production\e[0m")
126
- @cli_user.add("megan@example.com")
139
+ invoke(@cli_user, :add, "megan@example.com")
127
140
  end
128
141
  end
129
142
 
@@ -133,7 +146,7 @@ describe Shelly::CLI::User do
133
146
  exception = Shelly::Client::APIError.new(response.to_json, 404)
134
147
  @client.stub(:send_invitation).and_raise(exception)
135
148
  $stdout.should_receive(:puts).with(red "You have no access to 'foo-staging' cloud defined in Cloudfile")
136
- @cli_user.add("megan@example.com")
149
+ invoke(@cli_user, :add, "megan@example.com")
137
150
  end
138
151
  end
139
152
  end
@@ -167,12 +167,13 @@ describe Shelly::Client do
167
167
  response.should == [{"email" => "test@example.com"}, {"email" => "test2@example.com"}]
168
168
  end
169
169
  end
170
-
171
- describe "#app_ips" do
172
- it "should send get request with app code_name" do
173
- FakeWeb.register_uri(:get, api_url("apps/staging-foo/ips"), :body => {:mail_server_ip => "10.0.1.1", :web_server_ip => "88.198.21.187"}.to_json)
174
- response = @client.app_ips("staging-foo")
175
- response.should == {"mail_server_ip" => "10.0.1.1", "web_server_ip" => "88.198.21.187"}
170
+
171
+ describe "#app" do
172
+ it "should fetch app from API" do
173
+ FakeWeb.register_uri(:get, api_url("apps/staging-foo"),
174
+ :body => {:web_server_ip => "192.0.2.1", :mail_server_ip => "192.0.2.3"}.to_json)
175
+ response = @client.app("staging-foo")
176
+ response.should == {"web_server_ip" => "192.0.2.1", "mail_server_ip" => "192.0.2.3"}
176
177
  end
177
178
  end
178
179
 
@@ -22,4 +22,15 @@ describe Shelly::Cloudfile do
22
22
  end
23
23
  end
24
24
 
25
+ it "should allow improper yaml that works with syck" do
26
+ yaml = %Q{domains:
27
+ - *.example.com
28
+ - example.com
29
+ }
30
+ expect {
31
+ yaml = YAML.load(yaml)
32
+ }.to_not raise_error
33
+ yaml.should == {"domains" => ["*.example.com", "example.com"]}
34
+ end
35
+
25
36
  end
metadata CHANGED
@@ -1,188 +1,167 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
- version: !ruby/object:Gem::Version
4
- hash: 85
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.38
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 37
10
- version: 0.0.37
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Shelly Cloud team
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-12-27 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-12-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70097785241300 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: rake
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70097785241300
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70097785240660 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
46
33
  type: :development
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: guard
50
34
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70097785240660
36
+ - !ruby/object:Gem::Dependency
37
+ name: guard
38
+ requirement: &70097785239600 !ruby/object:Gem::Requirement
52
39
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
60
44
  type: :development
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
45
+ prerelease: false
46
+ version_requirements: *70097785239600
47
+ - !ruby/object:Gem::Dependency
63
48
  name: guard-rspec
49
+ requirement: &70097785238660 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
64
56
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
57
+ version_requirements: *70097785238660
58
+ - !ruby/object:Gem::Dependency
59
+ name: growl_notify
60
+ requirement: &70097785238000 !ruby/object:Gem::Requirement
66
61
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
74
66
  type: :development
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
77
- name: fakefs
78
67
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
68
+ version_requirements: *70097785238000
69
+ - !ruby/object:Gem::Dependency
70
+ name: rb-fsevent
71
+ requirement: &70097785237460 !ruby/object:Gem::Requirement
80
72
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70097785237460
80
+ - !ruby/object:Gem::Dependency
81
+ name: fakefs
82
+ requirement: &70097785236940 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
88
  type: :development
89
- version_requirements: *id005
90
- - !ruby/object:Gem::Dependency
91
- name: fakeweb
92
89
  prerelease: false
93
- requirement: &id006 !ruby/object:Gem::Requirement
90
+ version_requirements: *70097785236940
91
+ - !ruby/object:Gem::Dependency
92
+ name: fakeweb
93
+ requirement: &70097785236460 !ruby/object:Gem::Requirement
94
94
  none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- hash: 3
99
- segments:
100
- - 0
101
- version: "0"
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
102
99
  type: :development
103
- version_requirements: *id006
104
- - !ruby/object:Gem::Dependency
105
- name: wijet-thor
106
100
  prerelease: false
107
- requirement: &id007 !ruby/object:Gem::Requirement
101
+ version_requirements: *70097785236460
102
+ - !ruby/object:Gem::Dependency
103
+ name: wijet-thor
104
+ requirement: &70097785235820 !ruby/object:Gem::Requirement
108
105
  none: false
109
- requirements:
106
+ requirements:
110
107
  - - ~>
111
- - !ruby/object:Gem::Version
112
- hash: 41
113
- segments:
114
- - 0
115
- - 14
116
- - 7
108
+ - !ruby/object:Gem::Version
117
109
  version: 0.14.7
118
110
  type: :runtime
119
- version_requirements: *id007
120
- - !ruby/object:Gem::Dependency
121
- name: rest-client
122
111
  prerelease: false
123
- requirement: &id008 !ruby/object:Gem::Requirement
112
+ version_requirements: *70097785235820
113
+ - !ruby/object:Gem::Dependency
114
+ name: rest-client
115
+ requirement: &70097785235340 !ruby/object:Gem::Requirement
124
116
  none: false
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- hash: 3
129
- segments:
130
- - 0
131
- version: "0"
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
132
121
  type: :runtime
133
- version_requirements: *id008
134
- - !ruby/object:Gem::Dependency
135
- name: json
136
122
  prerelease: false
137
- requirement: &id009 !ruby/object:Gem::Requirement
123
+ version_requirements: *70097785235340
124
+ - !ruby/object:Gem::Dependency
125
+ name: json
126
+ requirement: &70097785234800 !ruby/object:Gem::Requirement
138
127
  none: false
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- hash: 3
143
- segments:
144
- - 0
145
- version: "0"
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
146
132
  type: :runtime
147
- version_requirements: *id009
148
- - !ruby/object:Gem::Dependency
149
- name: wijet-launchy
150
133
  prerelease: false
151
- requirement: &id010 !ruby/object:Gem::Requirement
134
+ version_requirements: *70097785234800
135
+ - !ruby/object:Gem::Dependency
136
+ name: wijet-launchy
137
+ requirement: &70097785234140 !ruby/object:Gem::Requirement
152
138
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- hash: 3
157
- segments:
158
- - 0
159
- version: "0"
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
160
143
  type: :runtime
161
- version_requirements: *id010
162
- - !ruby/object:Gem::Dependency
163
- name: progressbar
164
144
  prerelease: false
165
- requirement: &id011 !ruby/object:Gem::Requirement
145
+ version_requirements: *70097785234140
146
+ - !ruby/object:Gem::Dependency
147
+ name: progressbar
148
+ requirement: &70097785233260 !ruby/object:Gem::Requirement
166
149
  none: false
167
- requirements:
168
- - - ">="
169
- - !ruby/object:Gem::Version
170
- hash: 3
171
- segments:
172
- - 0
173
- version: "0"
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
174
154
  type: :runtime
175
- version_requirements: *id011
155
+ prerelease: false
156
+ version_requirements: *70097785233260
176
157
  description: Tool for managing applications and clouds at shellycloud.com
177
- email:
158
+ email:
178
159
  - support@shellycloud.com
179
- executables:
160
+ executables:
180
161
  - shelly
181
162
  extensions: []
182
-
183
163
  extra_rdoc_files: []
184
-
185
- files:
164
+ files:
186
165
  - .gitignore
187
166
  - .travis.yml
188
167
  - Gemfile
@@ -213,6 +192,7 @@ files:
213
192
  - lib/thor/arguments.rb
214
193
  - lib/thor/basic.rb
215
194
  - lib/thor/options.rb
195
+ - lib/thor/thor.rb
216
196
  - shelly.gemspec
217
197
  - spec/helpers.rb
218
198
  - spec/input_faker.rb
@@ -233,36 +213,49 @@ files:
233
213
  - spec/thor/options_spec.rb
234
214
  homepage: http://shellycloud.com
235
215
  licenses: []
236
-
237
216
  post_install_message:
238
217
  rdoc_options: []
239
-
240
- require_paths:
218
+ require_paths:
241
219
  - lib
242
- required_ruby_version: !ruby/object:Gem::Requirement
220
+ required_ruby_version: !ruby/object:Gem::Requirement
243
221
  none: false
244
- requirements:
245
- - - ">="
246
- - !ruby/object:Gem::Version
247
- hash: 3
248
- segments:
222
+ requirements:
223
+ - - ! '>='
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ segments:
249
227
  - 0
250
- version: "0"
251
- required_rubygems_version: !ruby/object:Gem::Requirement
228
+ hash: -2891070154681735828
229
+ required_rubygems_version: !ruby/object:Gem::Requirement
252
230
  none: false
253
- requirements:
254
- - - ">="
255
- - !ruby/object:Gem::Version
256
- hash: 3
257
- segments:
231
+ requirements:
232
+ - - ! '>='
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ segments:
258
236
  - 0
259
- version: "0"
237
+ hash: -2891070154681735828
260
238
  requirements: []
261
-
262
239
  rubyforge_project: shelly
263
- rubygems_version: 1.8.10
240
+ rubygems_version: 1.8.11
264
241
  signing_key:
265
242
  specification_version: 3
266
243
  summary: Shelly Cloud command line tool
267
- test_files: []
268
-
244
+ test_files:
245
+ - spec/helpers.rb
246
+ - spec/input_faker.rb
247
+ - spec/shelly/app_spec.rb
248
+ - spec/shelly/backup_spec.rb
249
+ - spec/shelly/cli/backup_spec.rb
250
+ - spec/shelly/cli/config_spec.rb
251
+ - spec/shelly/cli/deploys_spec.rb
252
+ - spec/shelly/cli/main_spec.rb
253
+ - spec/shelly/cli/runner_spec.rb
254
+ - spec/shelly/cli/user_spec.rb
255
+ - spec/shelly/client_spec.rb
256
+ - spec/shelly/cloudfile_spec.rb
257
+ - spec/shelly/download_progress_bar_spec.rb
258
+ - spec/shelly/model_spec.rb
259
+ - spec/shelly/user_spec.rb
260
+ - spec/spec_helper.rb
261
+ - spec/thor/options_spec.rb