shelly 0.0.57 → 0.0.58
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/Guardfile +1 -0
- data/lib/shelly/cli/backup.rb +13 -14
- data/lib/shelly/cli/config.rb +43 -55
- data/lib/shelly/cli/deploys.rb +8 -10
- data/lib/shelly/cli/main.rb +80 -93
- data/lib/shelly/cli/user.rb +36 -49
- data/lib/shelly/cloudfile.rb +1 -2
- data/lib/shelly/helpers.rb +11 -3
- data/lib/shelly/version.rb +1 -1
- data/spec/shelly/cli/backup_spec.rb +35 -33
- data/spec/shelly/cli/config_spec.rb +53 -135
- data/spec/shelly/cli/deploys_spec.rb +20 -59
- data/spec/shelly/cli/main_spec.rb +106 -186
- data/spec/shelly/cli/user_spec.rb +23 -27
- metadata +147 -163
@@ -14,7 +14,8 @@ describe Shelly::CLI::User do
|
|
14
14
|
@client.stub(:token).and_return("abc")
|
15
15
|
FileUtils.mkdir_p("/projects/foo")
|
16
16
|
Dir.chdir("/projects/foo")
|
17
|
-
|
17
|
+
@app = Shelly::App.new("foo-staging")
|
18
|
+
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\n") }
|
18
19
|
end
|
19
20
|
|
20
21
|
describe "#help" do
|
@@ -31,29 +32,22 @@ describe Shelly::CLI::User do
|
|
31
32
|
[{'email' => 'user@example.com', 'active' => true},
|
32
33
|
{'email' => 'auser2@example2.com', 'active' => false}]
|
33
34
|
}
|
34
|
-
before do
|
35
|
-
@cloudfile = Shelly::Cloudfile.new
|
36
|
-
Shelly::Cloudfile.stub(:new).and_return(@cloudfile)
|
37
|
-
end
|
38
35
|
|
39
36
|
it "should ensure user has logged in" do
|
40
37
|
hooks(@cli_user, :list).should include(:logged_in?)
|
41
38
|
end
|
42
39
|
|
43
|
-
|
44
|
-
|
40
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
41
|
+
it "should ensure multiple_clouds check" do
|
42
|
+
@client.stub(:collaborations).and_return(response)
|
43
|
+
@cli_user.should_receive(:multiple_clouds).and_return(@app)
|
44
|
+
invoke(@cli_user, :list)
|
45
45
|
end
|
46
46
|
|
47
47
|
context "on success" do
|
48
|
-
it "should receive clouds from the Cloudfile" do
|
49
|
-
@client.stub(:collaborations).and_return(response)
|
50
|
-
@cloudfile.should_receive(:clouds).and_return(["foo-staging", "foo-production"])
|
51
|
-
invoke(@cli_user, :list)
|
52
|
-
end
|
53
|
-
|
54
48
|
it "should display clouds and users" do
|
55
49
|
@client.stub(:collaborations).and_return(response)
|
56
|
-
$stdout.should_receive(:puts).with("Cloud foo-
|
50
|
+
$stdout.should_receive(:puts).with("Cloud foo-staging:")
|
57
51
|
$stdout.should_receive(:puts).with(" user@example.com")
|
58
52
|
$stdout.should_receive(:puts).with(" auser2@example2.com (invited)")
|
59
53
|
invoke(@cli_user, :list)
|
@@ -64,7 +58,7 @@ describe Shelly::CLI::User do
|
|
64
58
|
it "should exit with 1 if user does not have access to cloud" do
|
65
59
|
exception = Shelly::Client::NotFoundException.new("resource" => "cloud")
|
66
60
|
@client.stub(:collaborations).and_raise(exception)
|
67
|
-
$stdout.should_receive(:puts).with(red "You have no access to 'foo-
|
61
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-staging' cloud defined in Cloudfile")
|
68
62
|
lambda { invoke(@cli_user, :list) }.should raise_error(SystemExit)
|
69
63
|
end
|
70
64
|
end
|
@@ -81,16 +75,18 @@ describe Shelly::CLI::User do
|
|
81
75
|
hooks(@cli_user, :add).should include(:logged_in?)
|
82
76
|
end
|
83
77
|
|
84
|
-
it "should ensure that Cloudfile is present" do
|
85
|
-
hooks(@cli_user, :add).should include(:cloudfile_present?)
|
86
|
-
end
|
87
78
|
|
88
79
|
context "on success" do
|
89
80
|
before do
|
90
|
-
@client.should_receive(:send_invitation).with("foo-production", "megan@example.com")
|
91
81
|
@client.should_receive(:send_invitation).with("foo-staging", "megan@example.com")
|
92
82
|
end
|
93
83
|
|
84
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
85
|
+
it "should ensure multiple_clouds check" do
|
86
|
+
@cli_user.should_receive(:multiple_clouds).and_return(@app)
|
87
|
+
invoke(@cli_user, :add, "megan@example.com")
|
88
|
+
end
|
89
|
+
|
94
90
|
it "should ask about email" do
|
95
91
|
fake_stdin(["megan@example.com"]) do
|
96
92
|
invoke(@cli_user, :add)
|
@@ -102,7 +98,7 @@ describe Shelly::CLI::User do
|
|
102
98
|
end
|
103
99
|
|
104
100
|
it "should receive clouds from the Cloudfile" do
|
105
|
-
$stdout.should_receive(:puts).with("\e[32mSending invitation to megan@example.com to work on foo-
|
101
|
+
$stdout.should_receive(:puts).with("\e[32mSending invitation to megan@example.com to work on foo-staging\e[0m")
|
106
102
|
invoke(@cli_user, :add, "megan@example.com")
|
107
103
|
end
|
108
104
|
end
|
@@ -111,7 +107,7 @@ describe Shelly::CLI::User do
|
|
111
107
|
it "should raise error if user doesnt have access to cloud" do
|
112
108
|
exception = Shelly::Client::NotFoundException.new("resource" => "cloud")
|
113
109
|
@client.stub(:send_invitation).and_raise(exception)
|
114
|
-
$stdout.should_receive(:puts).with(red "You have no access to 'foo-
|
110
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-staging' cloud defined in Cloudfile")
|
115
111
|
lambda {
|
116
112
|
invoke(@cli_user, :add, "megan@example.com")
|
117
113
|
}.should raise_error(SystemExit)
|
@@ -130,13 +126,15 @@ describe Shelly::CLI::User do
|
|
130
126
|
hooks(@cli_user, :delete).should include(:logged_in?)
|
131
127
|
end
|
132
128
|
|
133
|
-
|
134
|
-
|
129
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
130
|
+
it "should ensure multiple_clouds check" do
|
131
|
+
@client.should_receive(:delete_collaboration).with("foo-staging", "megan@example.com")
|
132
|
+
@cli_user.should_receive(:multiple_clouds).and_return(@app)
|
133
|
+
invoke(@cli_user, :delete, "megan@example.com")
|
135
134
|
end
|
136
135
|
|
137
136
|
context "on success" do
|
138
137
|
it "should ask about email" do
|
139
|
-
@client.should_receive(:delete_collaboration).with("foo-production", "megan@example.com")
|
140
138
|
@client.should_receive(:delete_collaboration).with("foo-staging", "megan@example.com")
|
141
139
|
fake_stdin(["megan@example.com"]) do
|
142
140
|
invoke(@cli_user, :delete)
|
@@ -144,14 +142,12 @@ describe Shelly::CLI::User do
|
|
144
142
|
end
|
145
143
|
|
146
144
|
it "should receive email from param" do
|
147
|
-
@client.should_receive(:delete_collaboration).with("foo-production", "megan@example.com")
|
148
145
|
@client.should_receive(:delete_collaboration).with("foo-staging", "megan@example.com")
|
149
146
|
invoke(@cli_user, :delete, "megan@example.com")
|
150
147
|
end
|
151
148
|
|
152
149
|
it "should show that user was removed" do
|
153
150
|
@client.stub(:delete_collaboration)
|
154
|
-
$stdout.should_receive(:puts).with("User megan@example.com deleted from cloud foo-production")
|
155
151
|
$stdout.should_receive(:puts).with("User megan@example.com deleted from cloud foo-staging")
|
156
152
|
invoke(@cli_user, :delete, "megan@example.com")
|
157
153
|
end
|
@@ -171,7 +167,7 @@ describe Shelly::CLI::User do
|
|
171
167
|
it "should raise error if user doesnt have access to cloud" do
|
172
168
|
exception = Shelly::Client::NotFoundException.new("resource" => "cloud")
|
173
169
|
@client.stub(:delete_collaboration).and_raise(exception)
|
174
|
-
$stdout.should_receive(:puts).with(red "You have no access to 'foo-
|
170
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-staging' cloud defined in Cloudfile")
|
175
171
|
lambda {
|
176
172
|
invoke(@cli_user, :delete, "megan@example.com")
|
177
173
|
}.should raise_error(SystemExit)
|
metadata
CHANGED
@@ -1,190 +1,167 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.58
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 57
|
10
|
-
version: 0.0.57
|
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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2012-04-04 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &70136640534580 !ruby/object:Gem::Requirement
|
22
17
|
none: false
|
23
|
-
requirements:
|
18
|
+
requirements:
|
24
19
|
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
hash: 47
|
27
|
-
segments:
|
28
|
-
- 2
|
29
|
-
- 8
|
30
|
-
- 0
|
20
|
+
- !ruby/object:Gem::Version
|
31
21
|
version: 2.8.0
|
32
|
-
requirement: *id001
|
33
|
-
prerelease: false
|
34
22
|
type: :development
|
35
|
-
name: rspec
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
39
|
-
requirements:
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
hash: 3
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
46
|
-
requirement: *id002
|
47
23
|
prerelease: false
|
48
|
-
|
24
|
+
version_requirements: *70136640534580
|
25
|
+
- !ruby/object:Gem::Dependency
|
49
26
|
name: rake
|
50
|
-
|
51
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70136640534160 !ruby/object:Gem::Requirement
|
52
28
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
60
|
-
requirement: *id003
|
61
|
-
prerelease: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
62
33
|
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70136640534160
|
36
|
+
- !ruby/object:Gem::Dependency
|
63
37
|
name: guard
|
64
|
-
|
65
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70136640533680 !ruby/object:Gem::Requirement
|
66
39
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
segments:
|
72
|
-
- 0
|
73
|
-
version: "0"
|
74
|
-
requirement: *id004
|
75
|
-
prerelease: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
76
44
|
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70136640533680
|
47
|
+
- !ruby/object:Gem::Dependency
|
77
48
|
name: guard-rspec
|
78
|
-
|
79
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
49
|
+
requirement: &70136640533080 !ruby/object:Gem::Requirement
|
80
50
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
version: "0"
|
88
|
-
requirement: *id005
|
89
|
-
prerelease: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
90
55
|
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70136640533080
|
58
|
+
- !ruby/object:Gem::Dependency
|
91
59
|
name: simplecov
|
92
|
-
|
93
|
-
|
60
|
+
requirement: &70136640532460 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70136640532460
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ruby_gntp
|
71
|
+
requirement: &70136640531740 !ruby/object:Gem::Requirement
|
94
72
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
|
100
|
-
- 0
|
101
|
-
version: "0"
|
102
|
-
requirement: *id006
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
103
78
|
prerelease: false
|
79
|
+
version_requirements: *70136640531740
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rb-fsevent
|
82
|
+
requirement: &70136640531120 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
104
88
|
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70136640531120
|
91
|
+
- !ruby/object:Gem::Dependency
|
105
92
|
name: fakefs
|
106
|
-
|
107
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
93
|
+
requirement: &70136640530600 !ruby/object:Gem::Requirement
|
108
94
|
none: false
|
109
|
-
requirements:
|
110
|
-
- -
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
|
113
|
-
segments:
|
114
|
-
- 0
|
115
|
-
version: "0"
|
116
|
-
requirement: *id007
|
117
|
-
prerelease: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
118
99
|
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70136640530600
|
102
|
+
- !ruby/object:Gem::Dependency
|
119
103
|
name: fakeweb
|
120
|
-
|
121
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
104
|
+
requirement: &70136640530160 !ruby/object:Gem::Requirement
|
122
105
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
|
127
|
-
|
128
|
-
- 0
|
129
|
-
- 14
|
130
|
-
- 7
|
131
|
-
version: 0.14.7
|
132
|
-
requirement: *id008
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
133
111
|
prerelease: false
|
134
|
-
|
112
|
+
version_requirements: *70136640530160
|
113
|
+
- !ruby/object:Gem::Dependency
|
135
114
|
name: wijet-thor
|
136
|
-
|
137
|
-
version_requirements: &id009 !ruby/object:Gem::Requirement
|
115
|
+
requirement: &70136640529620 !ruby/object:Gem::Requirement
|
138
116
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
143
|
-
segments:
|
144
|
-
- 0
|
145
|
-
version: "0"
|
146
|
-
requirement: *id009
|
147
|
-
prerelease: false
|
117
|
+
requirements:
|
118
|
+
- - ~>
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 0.14.7
|
148
121
|
type: :runtime
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *70136640529620
|
124
|
+
- !ruby/object:Gem::Dependency
|
149
125
|
name: rest-client
|
150
|
-
|
151
|
-
version_requirements: &id010 !ruby/object:Gem::Requirement
|
126
|
+
requirement: &70136640529180 !ruby/object:Gem::Requirement
|
152
127
|
none: false
|
153
|
-
requirements:
|
154
|
-
- -
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
|
157
|
-
segments:
|
158
|
-
- 0
|
159
|
-
version: "0"
|
160
|
-
requirement: *id010
|
161
|
-
prerelease: false
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
162
132
|
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *70136640529180
|
135
|
+
- !ruby/object:Gem::Dependency
|
163
136
|
name: json
|
164
|
-
|
165
|
-
version_requirements: &id011 !ruby/object:Gem::Requirement
|
137
|
+
requirement: &70136640528720 !ruby/object:Gem::Requirement
|
166
138
|
none: false
|
167
|
-
requirements:
|
168
|
-
- -
|
169
|
-
- !ruby/object:Gem::Version
|
170
|
-
|
171
|
-
segments:
|
172
|
-
- 0
|
173
|
-
version: "0"
|
174
|
-
requirement: *id011
|
175
|
-
prerelease: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
176
143
|
type: :runtime
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: *70136640528720
|
146
|
+
- !ruby/object:Gem::Dependency
|
177
147
|
name: progressbar
|
148
|
+
requirement: &70136640528300 !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
type: :runtime
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: *70136640528300
|
178
157
|
description: Tool for managing applications and clouds at shellycloud.com
|
179
|
-
email:
|
158
|
+
email:
|
180
159
|
- support@shellycloud.com
|
181
|
-
executables:
|
160
|
+
executables:
|
182
161
|
- shelly
|
183
162
|
extensions: []
|
184
|
-
|
185
163
|
extra_rdoc_files: []
|
186
|
-
|
187
|
-
files:
|
164
|
+
files:
|
188
165
|
- .gitignore
|
189
166
|
- .travis.yml
|
190
167
|
- Gemfile
|
@@ -236,36 +213,43 @@ files:
|
|
236
213
|
- spec/thor/options_spec.rb
|
237
214
|
homepage: http://shellycloud.com
|
238
215
|
licenses: []
|
239
|
-
|
240
216
|
post_install_message:
|
241
217
|
rdoc_options: []
|
242
|
-
|
243
|
-
require_paths:
|
218
|
+
require_paths:
|
244
219
|
- lib
|
245
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
220
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
246
221
|
none: false
|
247
|
-
requirements:
|
248
|
-
- -
|
249
|
-
- !ruby/object:Gem::Version
|
250
|
-
|
251
|
-
|
252
|
-
- 0
|
253
|
-
version: "0"
|
254
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
222
|
+
requirements:
|
223
|
+
- - ! '>='
|
224
|
+
- !ruby/object:Gem::Version
|
225
|
+
version: '0'
|
226
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
255
227
|
none: false
|
256
|
-
requirements:
|
257
|
-
- -
|
258
|
-
- !ruby/object:Gem::Version
|
259
|
-
|
260
|
-
segments:
|
261
|
-
- 0
|
262
|
-
version: "0"
|
228
|
+
requirements:
|
229
|
+
- - ! '>='
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
263
232
|
requirements: []
|
264
|
-
|
265
233
|
rubyforge_project: shelly
|
266
234
|
rubygems_version: 1.8.10
|
267
235
|
signing_key:
|
268
236
|
specification_version: 3
|
269
237
|
summary: Shelly Cloud command line tool
|
270
|
-
test_files:
|
271
|
-
|
238
|
+
test_files:
|
239
|
+
- spec/helpers.rb
|
240
|
+
- spec/input_faker.rb
|
241
|
+
- spec/shelly/app_spec.rb
|
242
|
+
- spec/shelly/backup_spec.rb
|
243
|
+
- spec/shelly/cli/backup_spec.rb
|
244
|
+
- spec/shelly/cli/config_spec.rb
|
245
|
+
- spec/shelly/cli/deploys_spec.rb
|
246
|
+
- spec/shelly/cli/main_spec.rb
|
247
|
+
- spec/shelly/cli/runner_spec.rb
|
248
|
+
- spec/shelly/cli/user_spec.rb
|
249
|
+
- spec/shelly/client_spec.rb
|
250
|
+
- spec/shelly/cloudfile_spec.rb
|
251
|
+
- spec/shelly/download_progress_bar_spec.rb
|
252
|
+
- spec/shelly/model_spec.rb
|
253
|
+
- spec/shelly/user_spec.rb
|
254
|
+
- spec/spec_helper.rb
|
255
|
+
- spec/thor/options_spec.rb
|