cf 0.6.1.rc12 → 0.6.1.rc13

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.
@@ -17,37 +17,26 @@ module CF::Organization
17
17
  org = input[:organization]
18
18
  return unless input[:really, org]
19
19
 
20
- spaces = org.spaces
21
- unless spaces.empty?
22
- unless force?
23
- line "This organization is not empty!"
24
- line
25
- line "spaces: #{name_list(spaces)}"
26
- line
27
-
28
- return unless input[:recursive]
29
- end
30
-
31
- spaces.each do |s|
32
- invoke :delete_space, :space => s, :really => true,
33
- :recursive => true, :warn => false
34
- end
35
- end
36
-
37
20
  is_current = org == client.current_organization
38
21
 
39
- with_progress("Deleting organization #{c(org.name, :name)}") do
40
- org.delete!
22
+ begin
23
+ with_progress("Deleting organization #{c(org.name, :name)}") do
24
+ org.delete!
25
+ end
26
+ rescue CFoundry::AssociationNotEmpty => boom
27
+ line
28
+ line c(boom.description, :bad)
29
+ line c("If you want to delete the organization along with all dependent objects, rerun the command with the #{b("'--recursive'")} flag.", :bad)
41
30
  end
42
31
 
43
- if orgs.size == 1
32
+ if client.organizations.size == 1
44
33
  return unless input[:warn]
45
34
 
46
35
  line
47
36
  line c("There are no longer any organizations.", :warning)
48
37
  line "You may want to create one with #{c("create-org", :good)}."
49
38
  elsif is_current
50
- invalidate_target
39
+ invalidate_client
51
40
  invoke :target
52
41
  end
53
42
  end
@@ -1,3 +1,3 @@
1
1
  module CF
2
- VERSION = "0.6.1.rc12".freeze
2
+ VERSION = "0.6.1.rc13".freeze
3
3
  end
@@ -8,4 +8,3 @@ gem 'async_sinatra'
8
8
  gem 'thin'
9
9
  gem 'json'
10
10
  gem 'uuidtools'
11
- raise "NONONONONONONO"
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+ require "cf/cli/organization/delete"
3
+
4
+ describe CF::Organization::Delete do
5
+ describe 'metadata' do
6
+ let(:command) { Mothership.commands[:delete_org] }
7
+
8
+ describe 'command' do
9
+ subject { command }
10
+ it { expect(Mothership::Help.group(:organizations)).to include(subject) }
11
+ end
12
+
13
+ include_examples 'inputs must have descriptions'
14
+ end
15
+
16
+ describe "running the command" do
17
+ let(:organization) { fake(:organization, :name => "MyOrg") }
18
+ let(:organizations) { [organization] }
19
+
20
+ let(:client) { fake_client(:current_organization => organization, :organizations => organizations) }
21
+
22
+ subject { capture_output { cf %W[delete-org MyOrg --quiet --force] } }
23
+
24
+ before do
25
+ any_instance_of described_class do |cli|
26
+ stub(cli).client { client }
27
+
28
+ stub(cli).check_logged_in
29
+ stub(cli).check_target
30
+ any_instance_of(CF::Populators::Organization, :populate_and_save! => organization)
31
+ end
32
+ stub(organization).delete!
33
+ end
34
+
35
+ context "without the force parameter" do
36
+ subject { cf %W[delete-org MyOrg --quiet] }
37
+ it "confirms deletion of the organization and deletes it" do
38
+ mock(organization).delete!
39
+ mock_ask("Really delete #{organization.name}?", {:default => false}) { true }
40
+
41
+ subject
42
+ end
43
+ end
44
+
45
+ context "when deleting the last organization" do
46
+ it "warns the user what they've done" do
47
+ subject
48
+ expect(output).to say("There are no longer any organizations.")
49
+ end
50
+ end
51
+
52
+ context "when deleting the current organization" do
53
+ let(:organizations) { [organization, fake(:organization)] }
54
+ it "invalidates the old target / client" do
55
+ any_instance_of(described_class) { |cli| mock(cli).invalidate_client }
56
+ subject
57
+ end
58
+
59
+ it "invokes the target command" do
60
+ mock_invoke :target
61
+ subject
62
+ end
63
+ end
64
+
65
+ context "when an org fails to delete" do
66
+ before do
67
+ stub(organization).delete! { raise CFoundry::AssociationNotEmpty.new("We don't delete children.", 10006) }
68
+ subject
69
+ end
70
+
71
+ it "shows the error message" do
72
+ expect(output).to say "We don't delete children."
73
+ end
74
+
75
+ it "informs the user of how to recursively delete" do
76
+ expect(output).to say "If you want to delete the organization along with all dependent objects, rerun the command with the '--recursive' flag."
77
+ end
78
+ end
79
+ end
80
+ end
@@ -75,7 +75,7 @@ describe CF::Space::Delete do
75
75
 
76
76
  context "when a space fails to delete" do
77
77
  before do
78
- stub(space).delete! { raise CFoundry::APIError.new("We don't delete children.", 40005) }
78
+ stub(space).delete! { raise CFoundry::AssociationNotEmpty.new("We don't delete children.", 10006) }
79
79
  subject
80
80
  end
81
81
 
@@ -16,6 +16,8 @@ if ENV['CF_V2_RUN_INTEGRATION']
16
16
  let(:username) { ENV['CF_V2_TEST_USER'] }
17
17
  let(:password) { ENV['CF_V2_TEST_PASSWORD'] }
18
18
  let(:organization) { ENV['CF_V2_TEST_ORGANIZATION'] }
19
+ let(:space) { ENV['CF_V2_TEST_SPACE'] }
20
+
19
21
 
20
22
  let(:client) do
21
23
  client = CFoundry::V2::Client.new("https://#{target}")
@@ -64,13 +64,13 @@ if ENV['CF_V2_RUN_INTEGRATION']
64
64
 
65
65
  # create a service here
66
66
  expect(runner).to say "What kind?>"
67
- runner.send_keys "mysql 5.5"
67
+ runner.send_keys "mysql n/a"
68
68
 
69
69
  expect(runner).to say "Name?>"
70
70
  runner.send_keys service_name
71
71
 
72
72
  expect(runner).to say "Which plan?>"
73
- runner.send_keys "200"
73
+ runner.send_keys "cfinternal"
74
74
 
75
75
  expect(runner).to say /Creating service #{service_name}.*OK/
76
76
  expect(runner).to say /Binding .+ to .+ OK/
@@ -98,9 +98,9 @@ if ENV['CF_V2_RUN_INTEGRATION']
98
98
  expect(runner).to say /name\s+service\s+provider\s+version\s+plan\s+bound apps/
99
99
  expect(runner).to say /mysql-.+?\s+ # name
100
100
  mysql\s+ # service
101
- core\s+ # provider
102
- [\d.]+\s+ # version
103
- 200\s+ # plan
101
+ aws\s+ # provider
102
+ n\/a\s+ # version
103
+ cfinternal\s+ # plan
104
104
  #{app} # bound apps
105
105
  /x
106
106
  end
@@ -3,10 +3,12 @@ module FeaturesHelper
3
3
  set_target
4
4
  logout
5
5
 
6
- cmd = "yes 1 | #{cf_bin} login #{username} --password #{password} -o #{organization}"
7
- cmd += " -s #{space}" if respond_to?(:space)
6
+ to_space = respond_to?(:space) ? space : ENV['CF_V2_TEST_SPACE']
7
+
8
+ cmd = "#{cf_bin} login #{username} --password #{password} -o #{organization}"
9
+ cmd += " -s #{to_space}"
8
10
  BlueShell::Runner.run(cmd) do |runner|
9
- runner.wait_for_exit 30
11
+ runner.wait_for_exit 60
10
12
  end
11
13
  end
12
14
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1.rc12
4
+ version: 0.6.1.rc13
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-04-18 00:00:00.000000000 Z
13
+ date: 2013-04-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -51,7 +51,7 @@ dependencies:
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.7.0.rc4
54
+ version: 0.7.0.rc5
55
55
  - - <
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0.8'
@@ -62,7 +62,7 @@ dependencies:
62
62
  requirements:
63
63
  - - ! '>='
64
64
  - !ruby/object:Gem::Version
65
- version: 0.7.0.rc4
65
+ version: 0.7.0.rc5
66
66
  - - <
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.8'
@@ -169,29 +169,29 @@ dependencies:
169
169
  - !ruby/object:Gem::Version
170
170
  version: '2.1'
171
171
  - !ruby/object:Gem::Dependency
172
- name: rake
172
+ name: blue-shell
173
173
  requirement: !ruby/object:Gem::Requirement
174
174
  none: false
175
175
  requirements:
176
- - - ~>
176
+ - - '='
177
177
  - !ruby/object:Gem::Version
178
- version: '0.9'
178
+ version: 0.0.3
179
179
  type: :development
180
180
  prerelease: false
181
181
  version_requirements: !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
184
- - - ~>
184
+ - - '='
185
185
  - !ruby/object:Gem::Version
186
- version: '0.9'
186
+ version: 0.0.3
187
187
  - !ruby/object:Gem::Dependency
188
- name: rspec
188
+ name: fakefs
189
189
  requirement: !ruby/object:Gem::Requirement
190
190
  none: false
191
191
  requirements:
192
192
  - - ~>
193
193
  - !ruby/object:Gem::Version
194
- version: '2.11'
194
+ version: 0.4.2
195
195
  type: :development
196
196
  prerelease: false
197
197
  version_requirements: !ruby/object:Gem::Requirement
@@ -199,31 +199,31 @@ dependencies:
199
199
  requirements:
200
200
  - - ~>
201
201
  - !ruby/object:Gem::Version
202
- version: '2.11'
202
+ version: 0.4.2
203
203
  - !ruby/object:Gem::Dependency
204
- name: blue-shell
204
+ name: ffaker
205
205
  requirement: !ruby/object:Gem::Requirement
206
206
  none: false
207
207
  requirements:
208
- - - ! '>='
208
+ - - ~>
209
209
  - !ruby/object:Gem::Version
210
- version: 0.0.3
210
+ version: '1.15'
211
211
  type: :development
212
212
  prerelease: false
213
213
  version_requirements: !ruby/object:Gem::Requirement
214
214
  none: false
215
215
  requirements:
216
- - - ! '>='
216
+ - - ~>
217
217
  - !ruby/object:Gem::Version
218
- version: 0.0.3
218
+ version: '1.15'
219
219
  - !ruby/object:Gem::Dependency
220
- name: webmock
220
+ name: rake
221
221
  requirement: !ruby/object:Gem::Requirement
222
222
  none: false
223
223
  requirements:
224
224
  - - ~>
225
225
  - !ruby/object:Gem::Version
226
- version: '1.9'
226
+ version: '0.9'
227
227
  type: :development
228
228
  prerelease: false
229
229
  version_requirements: !ruby/object:Gem::Requirement
@@ -231,7 +231,7 @@ dependencies:
231
231
  requirements:
232
232
  - - ~>
233
233
  - !ruby/object:Gem::Version
234
- version: '1.9'
234
+ version: '0.9'
235
235
  - !ruby/object:Gem::Dependency
236
236
  name: rr
237
237
  requirement: !ruby/object:Gem::Requirement
@@ -248,6 +248,38 @@ dependencies:
248
248
  - - ~>
249
249
  - !ruby/object:Gem::Version
250
250
  version: '1.0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: rspec
253
+ requirement: !ruby/object:Gem::Requirement
254
+ none: false
255
+ requirements:
256
+ - - ~>
257
+ - !ruby/object:Gem::Version
258
+ version: '2.11'
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ none: false
263
+ requirements:
264
+ - - ~>
265
+ - !ruby/object:Gem::Version
266
+ version: '2.11'
267
+ - !ruby/object:Gem::Dependency
268
+ name: webmock
269
+ requirement: !ruby/object:Gem::Requirement
270
+ none: false
271
+ requirements:
272
+ - - ~>
273
+ - !ruby/object:Gem::Version
274
+ version: '1.9'
275
+ type: :development
276
+ prerelease: false
277
+ version_requirements: !ruby/object:Gem::Requirement
278
+ none: false
279
+ requirements:
280
+ - - ~>
281
+ - !ruby/object:Gem::Version
282
+ version: '1.9'
251
283
  description:
252
284
  email:
253
285
  - vcap-dev@googlegroups.com
@@ -417,6 +449,7 @@ files:
417
449
  - spec/cf/cli/app/stats_spec.rb
418
450
  - spec/cf/cli/domain/map_spec.rb
419
451
  - spec/cf/cli/domain/unmap_spec.rb
452
+ - spec/cf/cli/organization/delete_spec.rb
420
453
  - spec/cf/cli/organization/orgs_spec.rb
421
454
  - spec/cf/cli/organization/rename_spec.rb
422
455
  - spec/cf/cli/populators/organization_spec.rb
@@ -481,7 +514,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
481
514
  version: '0'
482
515
  segments:
483
516
  - 0
484
- hash: -3167793142364284283
517
+ hash: -3085176752358037272
485
518
  required_rubygems_version: !ruby/object:Gem::Requirement
486
519
  none: false
487
520
  requirements:
@@ -559,6 +592,7 @@ test_files:
559
592
  - spec/cf/cli/app/stats_spec.rb
560
593
  - spec/cf/cli/domain/map_spec.rb
561
594
  - spec/cf/cli/domain/unmap_spec.rb
595
+ - spec/cf/cli/organization/delete_spec.rb
562
596
  - spec/cf/cli/organization/orgs_spec.rb
563
597
  - spec/cf/cli/organization/rename_spec.rb
564
598
  - spec/cf/cli/populators/organization_spec.rb