vmc 0.5.0.rc1 → 0.5.0.rc2

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.
Files changed (38) hide show
  1. data/lib/vmc/cli.rb +2 -1
  2. data/lib/vmc/cli/app/start.rb +81 -24
  3. data/lib/vmc/cli/space/create.rb +4 -0
  4. data/lib/vmc/cli/space/switch.rb +16 -0
  5. data/lib/vmc/cli/start/base.rb +21 -18
  6. data/lib/vmc/cli/user/base.rb +1 -1
  7. data/lib/vmc/cli/user/delete.rb +2 -0
  8. data/lib/vmc/version.rb +1 -1
  9. data/spec/assets/hello-sinatra/Gemfile.lock +17 -0
  10. data/spec/features/{new_user_flow_spec.rb → v1/new_user_flow_spec.rb} +12 -18
  11. data/spec/features/v2/account_lifecycle_spec.rb +64 -0
  12. data/spec/features/v2/push_flow_spec.rb +126 -0
  13. data/spec/spec_helper.rb +16 -3
  14. data/{lib/vmc/test_support → spec/support}/command_helper.rb +5 -5
  15. data/spec/support/config_helper.rb +15 -0
  16. data/spec/support/console_app_specker_matchers.rb +2 -2
  17. data/spec/support/fake_home_dir.rb +42 -0
  18. data/{lib/vmc/test_support → spec/support}/interact_helper.rb +1 -1
  19. data/spec/support/shared_examples/errors.rb +40 -0
  20. data/{lib/vmc/test_support/common_input_examples.rb → spec/support/shared_examples/input.rb} +0 -0
  21. data/spec/support/specker_runner.rb +17 -61
  22. data/spec/support/tracking_expector.rb +71 -0
  23. data/spec/vmc/cli/app/instances_spec.rb +3 -3
  24. data/spec/vmc/cli/app/start_spec.rb +201 -0
  25. data/spec/vmc/cli/app/stats_spec.rb +21 -15
  26. data/spec/vmc/cli/space/create_spec.rb +73 -0
  27. data/spec/vmc/cli/space/switch_space_spec.rb +55 -0
  28. data/spec/vmc/cli/start/info_spec.rb +3 -16
  29. data/spec/vmc/cli/start/login_spec.rb +97 -37
  30. data/spec/vmc/cli/start/logout_spec.rb +3 -16
  31. data/spec/vmc/cli/start/target_spec.rb +84 -0
  32. data/spec/vmc/cli/user/delete_spec.rb +51 -0
  33. data/spec/vmc/cli/user/passwd_spec.rb +1 -1
  34. data/spec/vmc/cli/user/register_spec.rb +1 -1
  35. data/spec/vmc/cli_spec.rb +38 -36
  36. metadata +65 -39
  37. data/lib/vmc/cli/space/take.rb +0 -16
  38. data/lib/vmc/test_support/fake_home_dir.rb +0 -16
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+ require "vmc/cli/user/delete"
3
+
4
+ describe VMC::User::Delete do
5
+ let(:global) { { :color => false, :quiet => true } }
6
+ let(:inputs) { { :email => "user@example.com"} }
7
+ let(:given) { {} }
8
+ let(:client) { fake_client }
9
+ let(:app) {}
10
+
11
+ before do
12
+ any_instance_of(VMC::CLI) do |cli|
13
+ stub(cli).client { client }
14
+ end
15
+ end
16
+
17
+ subject { Mothership.new.invoke(:delete_user, inputs, given, global) }
18
+
19
+ describe 'metadata' do
20
+ let(:command) { Mothership.commands[:delete_user] }
21
+
22
+ describe 'command' do
23
+ subject { command }
24
+ its(:description) { should eq "Delete a user" }
25
+ it { expect(Mothership::Help.group(:admin, :user)).to include(subject) }
26
+ end
27
+
28
+ include_examples 'inputs must have descriptions'
29
+
30
+ describe 'arguments' do
31
+ subject { command.arguments }
32
+ it 'has the correct argument order' do
33
+ should eq([
34
+ { :type => :normal, :value => nil, :name => :email }
35
+ ])
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "deleting a user" do
41
+ context "when targeting a V2 API" do
42
+ before do
43
+ stub(client).version { 2 }
44
+ end
45
+
46
+ it_behaves_like "an error that gets passed through",
47
+ :with_exception => VMC::UserError,
48
+ :with_message => "Not implemented for v2."
49
+ end
50
+ end
51
+ end
@@ -39,7 +39,7 @@ describe VMC::User::Passwd do
39
39
  stub(client).logged_in? { true }
40
40
  stub(client).current_user { user }
41
41
  stub(client).register
42
- stub(client).password_score(new_password) { score }
42
+ stub(client).base.stub!.password_score(new_password) { score }
43
43
  end
44
44
 
45
45
  subject { vmc %W[passwd --password #{old_password} --new-password #{new_password} --verify #{verify_password} --no-force --debug] }
@@ -37,7 +37,7 @@ describe VMC::User::Register do
37
37
  stub(cli).precondition { nil }
38
38
  end
39
39
  stub(client).register
40
- stub(client).password_score(password) { score }
40
+ stub(client).base.stub!.password_score(password) { score }
41
41
  end
42
42
 
43
43
  subject { vmc %W[register --email #{email} --password #{password} --verify #{verify_password} --#{bool_flag(:login)} --#{bool_flag(:force)}] }
data/spec/vmc/cli_spec.rb CHANGED
@@ -1,17 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- class NoWrapErrorsDummy < VMC::CLI
4
- def wrap_errors
5
- yield
6
- end
7
- end
8
-
9
3
  describe VMC::CLI do
10
- let(:context) { NoWrapErrorsDummy.new }
4
+ let(:context) { VMC::CLI.new }
11
5
  let(:command) { nil }
12
6
 
13
7
  describe "#wrap_errors" do
14
- let(:context) { VMC::CLI.new }
15
8
  let(:inputs) { {} }
16
9
 
17
10
  subject do
@@ -21,33 +14,6 @@ describe VMC::CLI do
21
14
  end
22
15
  end
23
16
 
24
- shared_examples_for "an error that's obvious to the user" do |options|
25
- message = options[:with_message]
26
-
27
- it "prints the message" do
28
- subject
29
- expect(stderr.string).to include message
30
- end
31
-
32
- it "sets the exit code to 1" do
33
- mock(context).exit_status(1)
34
- subject
35
- end
36
-
37
- it "does not mention ~/.vmc/crash" do
38
- subject
39
- expect(stderr.string).to_not include VMC::CRASH_FILE
40
- end
41
- end
42
-
43
- shared_examples_for "an error that gets passed through" do |options|
44
- exception = options[:with_exception]
45
-
46
- it "reraises the error" do
47
- expect { subject }.to raise_error(exception)
48
- end
49
- end
50
-
51
17
  context "with a CFoundry::Timeout" do
52
18
  let(:action) { proc { raise CFoundry::Timeout.new(123, "fizzbuzz") } }
53
19
 
@@ -177,7 +143,7 @@ describe VMC::CLI do
177
143
  let(:auth_token) { CFoundry::AuthToken.new("old-header") }
178
144
  let(:new_auth_token) { CFoundry::AuthToken.new("new-header") }
179
145
 
180
- class TokenRefreshDummy < NoWrapErrorsDummy
146
+ class TokenRefreshDummy < VMC::CLI
181
147
  class << self
182
148
  attr_accessor :new_token
183
149
  end
@@ -443,6 +409,42 @@ describe VMC::CLI do
443
409
  expect(context.client).to eq(nil)
444
410
  end
445
411
  end
412
+
413
+ context "with a v1 cloud controller" do
414
+ before do
415
+ stub(context).target_info { { :version => 1} }
416
+ end
417
+
418
+ it "connects using the v1 api" do
419
+ expect(context.client).to be_a(CFoundry::V1::Client)
420
+ end
421
+
422
+ context "with a proxy user" do
423
+ before { stub(context).input { {:proxy => 'foo@example.com'} } }
424
+
425
+ it "uses the provided client proxy user" do
426
+ expect(context.client.proxy).to eq('foo@example.com')
427
+ end
428
+ end
429
+ end
430
+
431
+ context "with a v2 cloud controller" do
432
+ before do
433
+ stub(context).target_info { { :version => 2} }
434
+ end
435
+
436
+ it "connects using the v2 api" do
437
+ expect(context.client).to be_a(CFoundry::V2::Client)
438
+ end
439
+
440
+ context "with a proxy user" do
441
+ before { stub(context).input { {:proxy => 'foo@example.com'} } }
442
+
443
+ it "foo" do
444
+ expect {context.client}.to raise_error(VMC::UserError, "User switching not implemented for v2.")
445
+ end
446
+ end
447
+ end
446
448
  end
447
449
  end
448
450
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmc
3
3
  version: !ruby/object:Gem::Version
4
- hash: -237385856
4
+ hash: -31870830
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
9
  - 0
10
10
  - rc
11
- - 1
12
- version: 0.5.0.rc1
11
+ - 2
12
+ version: 0.5.0.rc2
13
13
  platform: ruby
14
14
  authors:
15
15
  - Cloud Foundry Team
@@ -18,11 +18,9 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2013-02-21 00:00:00 Z
21
+ date: 2013-02-28 00:00:00 Z
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
24
- prerelease: false
25
- name: json_pure
26
24
  version_requirements: &id001 !ruby/object:Gem::Requirement
27
25
  none: false
28
26
  requirements:
@@ -33,11 +31,11 @@ dependencies:
33
31
  - 1
34
32
  - 6
35
33
  version: "1.6"
34
+ prerelease: false
36
35
  type: :runtime
36
+ name: json_pure
37
37
  requirement: *id001
38
38
  - !ruby/object:Gem::Dependency
39
- prerelease: false
40
- name: multi_json
41
39
  version_requirements: &id002 !ruby/object:Gem::Requirement
42
40
  none: false
43
41
  requirements:
@@ -48,11 +46,11 @@ dependencies:
48
46
  - 1
49
47
  - 3
50
48
  version: "1.3"
49
+ prerelease: false
51
50
  type: :runtime
51
+ name: multi_json
52
52
  requirement: *id002
53
53
  - !ruby/object:Gem::Dependency
54
- prerelease: false
55
- name: interact
56
54
  version_requirements: &id003 !ruby/object:Gem::Requirement
57
55
  none: false
58
56
  requirements:
@@ -63,24 +61,24 @@ dependencies:
63
61
  - 0
64
62
  - 5
65
63
  version: "0.5"
64
+ prerelease: false
66
65
  type: :runtime
66
+ name: interact
67
67
  requirement: *id003
68
68
  - !ruby/object:Gem::Dependency
69
- prerelease: false
70
- name: cfoundry
71
69
  version_requirements: &id004 !ruby/object:Gem::Requirement
72
70
  none: false
73
71
  requirements:
74
72
  - - ">="
75
73
  - !ruby/object:Gem::Version
76
- hash: -237385842
74
+ hash: -31870828
77
75
  segments:
78
76
  - 0
79
77
  - 5
80
78
  - 1
81
79
  - rc
82
- - 2
83
- version: 0.5.1.rc2
80
+ - 5
81
+ version: 0.5.1.rc5
84
82
  - - <
85
83
  - !ruby/object:Gem::Version
86
84
  hash: 7
@@ -88,11 +86,11 @@ dependencies:
88
86
  - 0
89
87
  - 6
90
88
  version: "0.6"
89
+ prerelease: false
91
90
  type: :runtime
91
+ name: cfoundry
92
92
  requirement: *id004
93
93
  - !ruby/object:Gem::Dependency
94
- prerelease: false
95
- name: clouseau
96
94
  version_requirements: &id005 !ruby/object:Gem::Requirement
97
95
  none: false
98
96
  requirements:
@@ -103,11 +101,11 @@ dependencies:
103
101
  - 0
104
102
  - 0
105
103
  version: "0.0"
104
+ prerelease: false
106
105
  type: :runtime
106
+ name: clouseau
107
107
  requirement: *id005
108
108
  - !ruby/object:Gem::Dependency
109
- prerelease: false
110
- name: mothership
111
109
  version_requirements: &id006 !ruby/object:Gem::Requirement
112
110
  none: false
113
111
  requirements:
@@ -126,11 +124,11 @@ dependencies:
126
124
  - 1
127
125
  - 0
128
126
  version: "1.0"
127
+ prerelease: false
129
128
  type: :runtime
129
+ name: mothership
130
130
  requirement: *id006
131
131
  - !ruby/object:Gem::Dependency
132
- prerelease: false
133
- name: manifests-vmc-plugin
134
132
  version_requirements: &id007 !ruby/object:Gem::Requirement
135
133
  none: false
136
134
  requirements:
@@ -141,11 +139,11 @@ dependencies:
141
139
  - 0
142
140
  - 6
143
141
  version: "0.6"
142
+ prerelease: false
144
143
  type: :runtime
144
+ name: manifests-vmc-plugin
145
145
  requirement: *id007
146
146
  - !ruby/object:Gem::Dependency
147
- prerelease: false
148
- name: tunnel-vmc-plugin
149
147
  version_requirements: &id008 !ruby/object:Gem::Requirement
150
148
  none: false
151
149
  requirements:
@@ -156,11 +154,11 @@ dependencies:
156
154
  - 0
157
155
  - 2
158
156
  version: "0.2"
157
+ prerelease: false
159
158
  type: :runtime
159
+ name: tunnel-vmc-plugin
160
160
  requirement: *id008
161
161
  - !ruby/object:Gem::Dependency
162
- prerelease: false
163
- name: rake
164
162
  version_requirements: &id009 !ruby/object:Gem::Requirement
165
163
  none: false
166
164
  requirements:
@@ -171,11 +169,11 @@ dependencies:
171
169
  - 0
172
170
  - 9
173
171
  version: "0.9"
172
+ prerelease: false
174
173
  type: :development
174
+ name: rake
175
175
  requirement: *id009
176
176
  - !ruby/object:Gem::Dependency
177
- prerelease: false
178
- name: rspec
179
177
  version_requirements: &id010 !ruby/object:Gem::Requirement
180
178
  none: false
181
179
  requirements:
@@ -186,11 +184,11 @@ dependencies:
186
184
  - 2
187
185
  - 11
188
186
  version: "2.11"
187
+ prerelease: false
189
188
  type: :development
189
+ name: rspec
190
190
  requirement: *id010
191
191
  - !ruby/object:Gem::Dependency
192
- prerelease: false
193
- name: webmock
194
192
  version_requirements: &id011 !ruby/object:Gem::Requirement
195
193
  none: false
196
194
  requirements:
@@ -201,11 +199,11 @@ dependencies:
201
199
  - 1
202
200
  - 9
203
201
  version: "1.9"
202
+ prerelease: false
204
203
  type: :development
204
+ name: webmock
205
205
  requirement: *id011
206
206
  - !ruby/object:Gem::Dependency
207
- prerelease: false
208
- name: rr
209
207
  version_requirements: &id012 !ruby/object:Gem::Requirement
210
208
  none: false
211
209
  requirements:
@@ -216,7 +214,9 @@ dependencies:
216
214
  - 1
217
215
  - 0
218
216
  version: "1.0"
217
+ prerelease: false
219
218
  type: :development
219
+ name: rr
220
220
  requirement: *id012
221
221
  description:
222
222
  email:
@@ -281,7 +281,7 @@ files:
281
281
  - lib/vmc/cli/space/rename.rb
282
282
  - lib/vmc/cli/space/space.rb
283
283
  - lib/vmc/cli/space/spaces.rb
284
- - lib/vmc/cli/space/take.rb
284
+ - lib/vmc/cli/space/switch.rb
285
285
  - lib/vmc/cli/start/base.rb
286
286
  - lib/vmc/cli/start/colors.rb
287
287
  - lib/vmc/cli/start/info.rb
@@ -303,23 +303,29 @@ files:
303
303
  - lib/vmc/plugin.rb
304
304
  - lib/vmc/spacing.rb
305
305
  - lib/vmc/spec_helper.rb
306
- - lib/vmc/test_support/command_helper.rb
307
- - lib/vmc/test_support/common_input_examples.rb
308
- - lib/vmc/test_support/fake_home_dir.rb
309
- - lib/vmc/test_support/interact_helper.rb
310
306
  - lib/vmc/test_support.rb
311
307
  - lib/vmc/version.rb
312
308
  - lib/vmc.rb
313
309
  - spec/assets/hello-sinatra/Gemfile
310
+ - spec/assets/hello-sinatra/Gemfile.lock
314
311
  - spec/assets/hello-sinatra/main.rb
315
312
  - spec/assets/specker_runner/specker_runner_input.rb
316
313
  - spec/assets/specker_runner/specker_runner_pause.rb
317
314
  - spec/console_app_specker/console_app_specker_matchers_spec.rb
318
315
  - spec/console_app_specker/specker_runner_spec.rb
319
- - spec/features/new_user_flow_spec.rb
316
+ - spec/features/v1/new_user_flow_spec.rb
317
+ - spec/features/v2/account_lifecycle_spec.rb
318
+ - spec/features/v2/push_flow_spec.rb
320
319
  - spec/spec_helper.rb
320
+ - spec/support/command_helper.rb
321
+ - spec/support/config_helper.rb
321
322
  - spec/support/console_app_specker_matchers.rb
323
+ - spec/support/fake_home_dir.rb
324
+ - spec/support/interact_helper.rb
325
+ - spec/support/shared_examples/errors.rb
326
+ - spec/support/shared_examples/input.rb
322
327
  - spec/support/specker_runner.rb
328
+ - spec/support/tracking_expector.rb
323
329
  - spec/vmc/cli/app/base_spec.rb
324
330
  - spec/vmc/cli/app/delete_spec.rb
325
331
  - spec/vmc/cli/app/instances_spec.rb
@@ -327,6 +333,7 @@ files:
327
333
  - spec/vmc/cli/app/push_spec.rb
328
334
  - spec/vmc/cli/app/rename_spec.rb
329
335
  - spec/vmc/cli/app/scale_spec.rb
336
+ - spec/vmc/cli/app/start_spec.rb
330
337
  - spec/vmc/cli/app/stats_spec.rb
331
338
  - spec/vmc/cli/domain/map_spec.rb
332
339
  - spec/vmc/cli/domain/unmap_spec.rb
@@ -339,12 +346,16 @@ files:
339
346
  - spec/vmc/cli/service/rename_spec.rb
340
347
  - spec/vmc/cli/service/service_spec.rb
341
348
  - spec/vmc/cli/service/unbind_spec.rb
349
+ - spec/vmc/cli/space/create_spec.rb
342
350
  - spec/vmc/cli/space/rename_spec.rb
343
351
  - spec/vmc/cli/space/spaces_spec.rb
352
+ - spec/vmc/cli/space/switch_space_spec.rb
344
353
  - spec/vmc/cli/start/info_spec.rb
345
354
  - spec/vmc/cli/start/login_spec.rb
346
355
  - spec/vmc/cli/start/logout_spec.rb
356
+ - spec/vmc/cli/start/target_spec.rb
347
357
  - spec/vmc/cli/user/create_spec.rb
358
+ - spec/vmc/cli/user/delete_spec.rb
348
359
  - spec/vmc/cli/user/passwd_spec.rb
349
360
  - spec/vmc/cli/user/register_spec.rb
350
361
  - spec/vmc/cli_spec.rb
@@ -381,21 +392,31 @@ required_rubygems_version: !ruby/object:Gem::Requirement
381
392
  requirements: []
382
393
 
383
394
  rubyforge_project: vmc
384
- rubygems_version: 1.8.25
395
+ rubygems_version: 1.8.24
385
396
  signing_key:
386
397
  specification_version: 3
387
398
  summary: Friendly command-line interface for Cloud Foundry.
388
399
  test_files:
389
400
  - spec/assets/hello-sinatra/Gemfile
401
+ - spec/assets/hello-sinatra/Gemfile.lock
390
402
  - spec/assets/hello-sinatra/main.rb
391
403
  - spec/assets/specker_runner/specker_runner_input.rb
392
404
  - spec/assets/specker_runner/specker_runner_pause.rb
393
405
  - spec/console_app_specker/console_app_specker_matchers_spec.rb
394
406
  - spec/console_app_specker/specker_runner_spec.rb
395
- - spec/features/new_user_flow_spec.rb
407
+ - spec/features/v1/new_user_flow_spec.rb
408
+ - spec/features/v2/account_lifecycle_spec.rb
409
+ - spec/features/v2/push_flow_spec.rb
396
410
  - spec/spec_helper.rb
411
+ - spec/support/command_helper.rb
412
+ - spec/support/config_helper.rb
397
413
  - spec/support/console_app_specker_matchers.rb
414
+ - spec/support/fake_home_dir.rb
415
+ - spec/support/interact_helper.rb
416
+ - spec/support/shared_examples/errors.rb
417
+ - spec/support/shared_examples/input.rb
398
418
  - spec/support/specker_runner.rb
419
+ - spec/support/tracking_expector.rb
399
420
  - spec/vmc/cli/app/base_spec.rb
400
421
  - spec/vmc/cli/app/delete_spec.rb
401
422
  - spec/vmc/cli/app/instances_spec.rb
@@ -403,6 +424,7 @@ test_files:
403
424
  - spec/vmc/cli/app/push_spec.rb
404
425
  - spec/vmc/cli/app/rename_spec.rb
405
426
  - spec/vmc/cli/app/scale_spec.rb
427
+ - spec/vmc/cli/app/start_spec.rb
406
428
  - spec/vmc/cli/app/stats_spec.rb
407
429
  - spec/vmc/cli/domain/map_spec.rb
408
430
  - spec/vmc/cli/domain/unmap_spec.rb
@@ -415,12 +437,16 @@ test_files:
415
437
  - spec/vmc/cli/service/rename_spec.rb
416
438
  - spec/vmc/cli/service/service_spec.rb
417
439
  - spec/vmc/cli/service/unbind_spec.rb
440
+ - spec/vmc/cli/space/create_spec.rb
418
441
  - spec/vmc/cli/space/rename_spec.rb
419
442
  - spec/vmc/cli/space/spaces_spec.rb
443
+ - spec/vmc/cli/space/switch_space_spec.rb
420
444
  - spec/vmc/cli/start/info_spec.rb
421
445
  - spec/vmc/cli/start/login_spec.rb
422
446
  - spec/vmc/cli/start/logout_spec.rb
447
+ - spec/vmc/cli/start/target_spec.rb
423
448
  - spec/vmc/cli/user/create_spec.rb
449
+ - spec/vmc/cli/user/delete_spec.rb
424
450
  - spec/vmc/cli/user/passwd_spec.rb
425
451
  - spec/vmc/cli/user/register_spec.rb
426
452
  - spec/vmc/cli_spec.rb