trucker-cli 0.0.1
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.
- checksums.yaml +15 -0
- data/LICENSE +1277 -0
- data/Rakefile +13 -0
- data/bin/truck +18 -0
- data/lib/admin/README.md +30 -0
- data/lib/admin/curl.rb +59 -0
- data/lib/admin/guid.rb +89 -0
- data/lib/admin/plugin.rb +8 -0
- data/lib/admin/service_auth_token.rb +93 -0
- data/lib/admin/service_broker/add.rb +54 -0
- data/lib/admin/service_broker/remove.rb +33 -0
- data/lib/admin/service_broker/service_brokers.rb +29 -0
- data/lib/admin/service_broker/update.rb +60 -0
- data/lib/admin/set_quota.rb +44 -0
- data/lib/cf.rb +14 -0
- data/lib/cf/cli.rb +495 -0
- data/lib/cf/cli/app/app.rb +43 -0
- data/lib/cf/cli/app/apps.rb +87 -0
- data/lib/cf/cli/app/base.rb +72 -0
- data/lib/cf/cli/app/delete.rb +95 -0
- data/lib/cf/cli/app/deprecated.rb +11 -0
- data/lib/cf/cli/app/env.rb +99 -0
- data/lib/cf/cli/app/events.rb +45 -0
- data/lib/cf/cli/app/files.rb +137 -0
- data/lib/cf/cli/app/health.rb +26 -0
- data/lib/cf/cli/app/instances.rb +53 -0
- data/lib/cf/cli/app/logs.rb +76 -0
- data/lib/cf/cli/app/push.rb +104 -0
- data/lib/cf/cli/app/push/create.rb +108 -0
- data/lib/cf/cli/app/push/interactions.rb +90 -0
- data/lib/cf/cli/app/push/sync.rb +57 -0
- data/lib/cf/cli/app/rename.rb +35 -0
- data/lib/cf/cli/app/restart.rb +31 -0
- data/lib/cf/cli/app/scale.rb +63 -0
- data/lib/cf/cli/app/start.rb +175 -0
- data/lib/cf/cli/app/stats.rb +66 -0
- data/lib/cf/cli/app/stop.rb +27 -0
- data/lib/cf/cli/domain/base.rb +9 -0
- data/lib/cf/cli/domain/domains.rb +40 -0
- data/lib/cf/cli/domain/map.rb +55 -0
- data/lib/cf/cli/domain/unmap.rb +56 -0
- data/lib/cf/cli/help.rb +15 -0
- data/lib/cf/cli/interactive.rb +104 -0
- data/lib/cf/cli/login_requirements.rb +13 -0
- data/lib/cf/cli/organization/base.rb +12 -0
- data/lib/cf/cli/organization/create.rb +36 -0
- data/lib/cf/cli/organization/delete.rb +61 -0
- data/lib/cf/cli/organization/org.rb +45 -0
- data/lib/cf/cli/organization/orgs.rb +30 -0
- data/lib/cf/cli/organization/rename.rb +36 -0
- data/lib/cf/cli/populators/base.rb +16 -0
- data/lib/cf/cli/populators/organization.rb +32 -0
- data/lib/cf/cli/populators/populator_methods.rb +64 -0
- data/lib/cf/cli/populators/space.rb +33 -0
- data/lib/cf/cli/populators/target.rb +14 -0
- data/lib/cf/cli/route/base.rb +9 -0
- data/lib/cf/cli/route/delete.rb +28 -0
- data/lib/cf/cli/route/map.rb +68 -0
- data/lib/cf/cli/route/routes.rb +26 -0
- data/lib/cf/cli/route/unmap.rb +56 -0
- data/lib/cf/cli/service/base.rb +9 -0
- data/lib/cf/cli/service/bind.rb +43 -0
- data/lib/cf/cli/service/create.rb +158 -0
- data/lib/cf/cli/service/delete.rb +82 -0
- data/lib/cf/cli/service/rename.rb +35 -0
- data/lib/cf/cli/service/service.rb +40 -0
- data/lib/cf/cli/service/service_helper.rb +25 -0
- data/lib/cf/cli/service/service_instance_helper.rb +100 -0
- data/lib/cf/cli/service/services.rb +110 -0
- data/lib/cf/cli/service/unbind.rb +36 -0
- data/lib/cf/cli/space/base.rb +27 -0
- data/lib/cf/cli/space/create.rb +66 -0
- data/lib/cf/cli/space/delete.rb +55 -0
- data/lib/cf/cli/space/rename.rb +38 -0
- data/lib/cf/cli/space/space.rb +66 -0
- data/lib/cf/cli/space/spaces.rb +57 -0
- data/lib/cf/cli/space/switch.rb +18 -0
- data/lib/cf/cli/start/base.rb +35 -0
- data/lib/cf/cli/start/colors.rb +13 -0
- data/lib/cf/cli/start/login.rb +104 -0
- data/lib/cf/cli/start/logout.rb +17 -0
- data/lib/cf/cli/start/target.rb +50 -0
- data/lib/cf/cli/start/target_prettifier.rb +35 -0
- data/lib/cf/cli/start/targets.rb +16 -0
- data/lib/cf/cli/user/base.rb +29 -0
- data/lib/cf/cli/user/create.rb +51 -0
- data/lib/cf/cli/user/passwd.rb +36 -0
- data/lib/cf/cli/user/register.rb +42 -0
- data/lib/cf/cli/user/users.rb +32 -0
- data/lib/cf/constants.rb +10 -0
- data/lib/cf/errors.rb +19 -0
- data/lib/cf/plugin.rb +56 -0
- data/lib/cf/spacing.rb +89 -0
- data/lib/cf/spec_helper.rb +1 -0
- data/lib/cf/test_support.rb +6 -0
- data/lib/cf/version.rb +3 -0
- data/lib/console/README.md +16 -0
- data/lib/console/console.rb +187 -0
- data/lib/console/plugin.rb +32 -0
- data/lib/manifests/errors.rb +35 -0
- data/lib/manifests/loader.rb +31 -0
- data/lib/manifests/loader/builder.rb +39 -0
- data/lib/manifests/loader/normalizer.rb +145 -0
- data/lib/manifests/loader/resolver.rb +79 -0
- data/lib/manifests/manifests.rb +343 -0
- data/lib/manifests/plugin.rb +140 -0
- data/lib/micro/README.md +25 -0
- data/lib/micro/errors.rb +4 -0
- data/lib/micro/micro.rb +56 -0
- data/lib/micro/plugin.rb +197 -0
- data/lib/micro/switcher/base.rb +79 -0
- data/lib/micro/switcher/darwin.rb +21 -0
- data/lib/micro/switcher/dummy.rb +15 -0
- data/lib/micro/switcher/linux.rb +16 -0
- data/lib/micro/switcher/windows.rb +31 -0
- data/lib/micro/vmrun.rb +175 -0
- data/lib/tasks/gem_release.rake +56 -0
- data/lib/tasks/windows_build.rake +14 -0
- data/lib/tunnel/README.md +29 -0
- data/lib/tunnel/config/clients.yml +17 -0
- data/lib/tunnel/helper-app/Gemfile +10 -0
- data/lib/tunnel/helper-app/Gemfile.lock +48 -0
- data/lib/tunnel/helper-app/server.rb +43 -0
- data/lib/tunnel/plugin.rb +183 -0
- data/lib/tunnel/tunnel.rb +295 -0
- data/spec/admin/curl_spec.rb +52 -0
- data/spec/admin/guid_spec.rb +85 -0
- data/spec/admin/service_broker/add_spec.rb +64 -0
- data/spec/admin/service_broker/remove_spec.rb +46 -0
- data/spec/admin/service_broker/service_brokers_spec.rb +34 -0
- data/spec/admin/service_broker/update_spec.rb +51 -0
- data/spec/admin/set_quota_spec.rb +89 -0
- data/spec/assets/env/Gemfile +4 -0
- data/spec/assets/env/Gemfile.lock +20 -0
- data/spec/assets/env/env_test.rb +58 -0
- data/spec/assets/hello-sinatra/Gemfile +3 -0
- data/spec/assets/hello-sinatra/Gemfile.lock +17 -0
- data/spec/assets/hello-sinatra/config.ru +3 -0
- data/spec/assets/hello-sinatra/fat-cat-makes-app-larger.png +0 -0
- data/spec/assets/hello-sinatra/main.rb +8 -0
- data/spec/assets/rails328_ruby187_app/Gemfile +39 -0
- data/spec/assets/rails328_ruby187_app/README.rdoc +261 -0
- data/spec/assets/rails328_ruby187_app/Rakefile +7 -0
- data/spec/assets/rails328_ruby187_app/app/assets/images/rails.png +0 -0
- data/spec/assets/rails328_ruby187_app/app/assets/javascripts/application.js +15 -0
- data/spec/assets/rails328_ruby187_app/app/assets/stylesheets/application.css +13 -0
- data/spec/assets/rails328_ruby187_app/app/controllers/application_controller.rb +3 -0
- data/spec/assets/rails328_ruby187_app/app/helpers/application_helper.rb +2 -0
- data/spec/assets/rails328_ruby187_app/app/views/layouts/application.html.erb +14 -0
- data/spec/assets/rails328_ruby187_app/config.ru +4 -0
- data/spec/assets/rails328_ruby187_app/config/application.rb +62 -0
- data/spec/assets/rails328_ruby187_app/config/boot.rb +6 -0
- data/spec/assets/rails328_ruby187_app/config/database.yml +25 -0
- data/spec/assets/rails328_ruby187_app/config/environment.rb +5 -0
- data/spec/assets/rails328_ruby187_app/config/environments/development.rb +37 -0
- data/spec/assets/rails328_ruby187_app/config/environments/production.rb +67 -0
- data/spec/assets/rails328_ruby187_app/config/environments/test.rb +37 -0
- data/spec/assets/rails328_ruby187_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/assets/rails328_ruby187_app/config/initializers/inflections.rb +15 -0
- data/spec/assets/rails328_ruby187_app/config/initializers/mime_types.rb +5 -0
- data/spec/assets/rails328_ruby187_app/config/initializers/secret_token.rb +7 -0
- data/spec/assets/rails328_ruby187_app/config/initializers/session_store.rb +8 -0
- data/spec/assets/rails328_ruby187_app/config/initializers/wrap_parameters.rb +14 -0
- data/spec/assets/rails328_ruby187_app/config/locales/en.yml +5 -0
- data/spec/assets/rails328_ruby187_app/config/routes.rb +58 -0
- data/spec/assets/rails328_ruby187_app/db/seeds.rb +7 -0
- data/spec/assets/rails328_ruby187_app/doc/README_FOR_APP +2 -0
- data/spec/assets/rails328_ruby187_app/manifest.yml +7 -0
- data/spec/assets/rails328_ruby187_app/public/404.html +26 -0
- data/spec/assets/rails328_ruby187_app/public/422.html +26 -0
- data/spec/assets/rails328_ruby187_app/public/500.html +25 -0
- data/spec/assets/rails328_ruby187_app/public/assets/application-7270767b2a9e9fff880aa5de378ca791.css +0 -0
- data/spec/assets/rails328_ruby187_app/public/assets/application-7270767b2a9e9fff880aa5de378ca791.css.gz +0 -0
- data/spec/assets/rails328_ruby187_app/public/assets/application-ccab98dc1abdf097c0af693e20aed861.js +17 -0
- data/spec/assets/rails328_ruby187_app/public/assets/application-ccab98dc1abdf097c0af693e20aed861.js.gz +0 -0
- data/spec/assets/rails328_ruby187_app/public/assets/application.css +0 -0
- data/spec/assets/rails328_ruby187_app/public/assets/application.css.gz +0 -0
- data/spec/assets/rails328_ruby187_app/public/assets/application.js +17 -0
- data/spec/assets/rails328_ruby187_app/public/assets/application.js.gz +0 -0
- data/spec/assets/rails328_ruby187_app/public/assets/manifest.yml +4 -0
- data/spec/assets/rails328_ruby187_app/public/assets/rails-be8732dac73d845ac5b142c8fb5f9fb0.png +0 -0
- data/spec/assets/rails328_ruby187_app/public/assets/rails.png +0 -0
- data/spec/assets/rails328_ruby187_app/public/favicon.ico +0 -0
- data/spec/assets/rails328_ruby187_app/public/index.html +241 -0
- data/spec/assets/rails328_ruby187_app/public/robots.txt +5 -0
- data/spec/assets/rails328_ruby187_app/script/rails +6 -0
- data/spec/assets/rails328_ruby187_app/test/performance/browsing_test.rb +12 -0
- data/spec/assets/rails328_ruby187_app/test/test_helper.rb +13 -0
- data/spec/cf/cli/app/base_spec.rb +17 -0
- data/spec/cf/cli/app/delete_spec.rb +197 -0
- data/spec/cf/cli/app/env_spec.rb +261 -0
- data/spec/cf/cli/app/events_spec.rb +72 -0
- data/spec/cf/cli/app/help_spec.rb +39 -0
- data/spec/cf/cli/app/instances_spec.rb +69 -0
- data/spec/cf/cli/app/push/create_spec.rb +444 -0
- data/spec/cf/cli/app/push/interactions_spec.rb +32 -0
- data/spec/cf/cli/app/push_spec.rb +332 -0
- data/spec/cf/cli/app/rename_spec.rb +108 -0
- data/spec/cf/cli/app/restart_spec.rb +47 -0
- data/spec/cf/cli/app/scale_spec.rb +63 -0
- data/spec/cf/cli/app/start_spec.rb +255 -0
- data/spec/cf/cli/app/stats_spec.rb +66 -0
- data/spec/cf/cli/domain/help_spec.rb +39 -0
- data/spec/cf/cli/domain/map_spec.rb +140 -0
- data/spec/cf/cli/domain/unmap_spec.rb +77 -0
- data/spec/cf/cli/help_spec.rb +21 -0
- data/spec/cf/cli/organization/create_spec.rb +121 -0
- data/spec/cf/cli/organization/delete_spec.rb +105 -0
- data/spec/cf/cli/organization/help_spec.rb +39 -0
- data/spec/cf/cli/organization/orgs_spec.rb +116 -0
- data/spec/cf/cli/organization/rename_spec.rb +116 -0
- data/spec/cf/cli/populators/organization_spec.rb +179 -0
- data/spec/cf/cli/populators/space_spec.rb +156 -0
- data/spec/cf/cli/populators/target_spec.rb +39 -0
- data/spec/cf/cli/route/delete_spec.rb +92 -0
- data/spec/cf/cli/route/help_spec.rb +32 -0
- data/spec/cf/cli/route/map_spec.rb +148 -0
- data/spec/cf/cli/route/unmap_spec.rb +114 -0
- data/spec/cf/cli/service/bind_spec.rb +25 -0
- data/spec/cf/cli/service/create_spec.rb +147 -0
- data/spec/cf/cli/service/delete_spec.rb +22 -0
- data/spec/cf/cli/service/help_spec.rb +39 -0
- data/spec/cf/cli/service/rename_spec.rb +103 -0
- data/spec/cf/cli/service/service_helper_spec.rb +66 -0
- data/spec/cf/cli/service/service_instance_helper_spec.rb +155 -0
- data/spec/cf/cli/service/service_spec.rb +23 -0
- data/spec/cf/cli/service/services_spec.rb +156 -0
- data/spec/cf/cli/service/unbind_spec.rb +25 -0
- data/spec/cf/cli/space/base_spec.rb +49 -0
- data/spec/cf/cli/space/create_spec.rb +144 -0
- data/spec/cf/cli/space/delete_spec.rb +109 -0
- data/spec/cf/cli/space/help_spec.rb +39 -0
- data/spec/cf/cli/space/rename_spec.rb +110 -0
- data/spec/cf/cli/space/space_spec.rb +80 -0
- data/spec/cf/cli/space/spaces_spec.rb +107 -0
- data/spec/cf/cli/space/switch_space_spec.rb +57 -0
- data/spec/cf/cli/start/help_spec.rb +39 -0
- data/spec/cf/cli/start/login_spec.rb +142 -0
- data/spec/cf/cli/start/logout_spec.rb +49 -0
- data/spec/cf/cli/start/target_prettifier_spec.rb +78 -0
- data/spec/cf/cli/start/target_spec.rb +123 -0
- data/spec/cf/cli/user/create_spec.rb +98 -0
- data/spec/cf/cli/user/help_spec.rb +32 -0
- data/spec/cf/cli/user/passwd_spec.rb +94 -0
- data/spec/cf/cli/user/register_spec.rb +145 -0
- data/spec/cf/cli_spec.rb +474 -0
- data/spec/console/console_spec.rb +189 -0
- data/spec/factories/cfoundry/v2/apps_factory.rb +12 -0
- data/spec/factories/cfoundry/v2/clients_factory.rb +7 -0
- data/spec/factories/cfoundry/v2/domains_factory.rb +8 -0
- data/spec/factories/cfoundry/v2/managed_service_instances_factory.rb +13 -0
- data/spec/factories/cfoundry/v2/organizations_factory.rb +14 -0
- data/spec/factories/cfoundry/v2/quota_definitions.rb +13 -0
- data/spec/factories/cfoundry/v2/routes_factory.rb +8 -0
- data/spec/factories/cfoundry/v2/service_bindings_factory.rb +11 -0
- data/spec/factories/cfoundry/v2/service_brokers_factory.rb +11 -0
- data/spec/factories/cfoundry/v2/service_plans_factory.rb +17 -0
- data/spec/factories/cfoundry/v2/services_factory.rb +14 -0
- data/spec/factories/cfoundry/v2/spaces_factory.rb +13 -0
- data/spec/factories/cfoundry/v2/stacks_factory.rb +11 -0
- data/spec/factories/cfoundry/v2/user_provided_service_instances_factory.rb +12 -0
- data/spec/factories/cfoundry/v2/users_factory.rb +7 -0
- data/spec/features/backspace_spec.rb +46 -0
- data/spec/features/create_user_spec.rb +74 -0
- data/spec/features/delete_orphaned_service_spec.rb +64 -0
- data/spec/features/login_spec.rb +65 -0
- data/spec/features/manifests_spec.rb +86 -0
- data/spec/features/org_spec.rb +50 -0
- data/spec/features/push_flow_spec.rb +169 -0
- data/spec/features/service_brokers_spec.rb +173 -0
- data/spec/features/services_spec.rb +122 -0
- data/spec/features/space_spec.rb +107 -0
- data/spec/features/switching_targets_spec.rb +70 -0
- data/spec/manifests/errors_spec.rb +43 -0
- data/spec/manifests/loader/builder_spec.rb +80 -0
- data/spec/manifests/loader/normalizer_spec.rb +158 -0
- data/spec/manifests/manifests_spec.rb +335 -0
- data/spec/manifests/plugin_spec.rb +410 -0
- data/spec/micro/plugin_spec.rb +64 -0
- data/spec/spec_helper.rb +69 -0
- data/spec/support/cli_helper.rb +87 -0
- data/spec/support/config_helper.rb +15 -0
- data/spec/support/factory_girl.rb +6 -0
- data/spec/support/fake_home_dir.rb +55 -0
- data/spec/support/features_helper.rb +99 -0
- data/spec/support/interact_helper.rb +27 -0
- data/spec/support/matchers.rb +16 -0
- data/spec/support/mock_commands/mock_restart.rb +16 -0
- data/spec/support/mock_commands/mock_start.rb +17 -0
- data/spec/support/shared_examples/errors.rb +40 -0
- data/spec/support/shared_examples/input.rb +14 -0
- data/spec/tunnel/plugin_spec.rb +31 -0
- data/spec/tunnel/tunnel_spec.rb +54 -0
- metadata +814 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
module CF
|
|
4
|
+
module Domain
|
|
5
|
+
describe Map do
|
|
6
|
+
before do
|
|
7
|
+
stub_client_and_precondition
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
let(:client) do
|
|
11
|
+
build(:client).tap do |client|
|
|
12
|
+
client.stub(
|
|
13
|
+
:current_organization => organization,
|
|
14
|
+
:current_space => space,
|
|
15
|
+
:spaces => [space],
|
|
16
|
+
:organizations => [organization],
|
|
17
|
+
:domains => domains)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
let(:organization) { build(:organization) }
|
|
21
|
+
let(:space) { build(:space, :organization => organization) }
|
|
22
|
+
let(:domain) { build(:domain, :name => domain_name) }
|
|
23
|
+
let(:domain_name) { "some.domain.com" }
|
|
24
|
+
let(:domains) { [domain] }
|
|
25
|
+
|
|
26
|
+
shared_examples_for "binding a domain to a space" do
|
|
27
|
+
it "adds the domain to the space's organization" do
|
|
28
|
+
space.organization.should_receive(:add_domain).with(domain)
|
|
29
|
+
space.stub(:add_domain)
|
|
30
|
+
subject
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "adds the domain to the space" do
|
|
34
|
+
space.organization.stub(:add_domain)
|
|
35
|
+
space.should_receive(:add_domain).with(domain)
|
|
36
|
+
subject
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
shared_examples_for "binding a domain to an organization" do
|
|
41
|
+
it "does NOT add the domain to a space" do
|
|
42
|
+
space.class.any_instance.should_not_receive(:add_domain).with(domain)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "adds the domain to the organization" do
|
|
46
|
+
organization.should_receive(:add_domain).with(domain)
|
|
47
|
+
subject
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
shared_examples_for "mapping a domain to a space" do
|
|
52
|
+
context "when the domain does NOT exist" do
|
|
53
|
+
let(:domains) { [] }
|
|
54
|
+
|
|
55
|
+
before do
|
|
56
|
+
client.stub(:domain) { domain }
|
|
57
|
+
domain.stub(:create!)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "creates the domain" do
|
|
61
|
+
space.organization.stub(:add_domain)
|
|
62
|
+
space.should_receive(:add_domain).with(domain)
|
|
63
|
+
|
|
64
|
+
domain.should_receive(:create!)
|
|
65
|
+
subject
|
|
66
|
+
expect(domain.name).to eq domain_name
|
|
67
|
+
expect(domain.owning_organization).to eq organization
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
include_examples "binding a domain to a space"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
context "when the domain already exists" do
|
|
74
|
+
include_examples "binding a domain to a space"
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
context "when a domain and a space are passed" do
|
|
79
|
+
subject { cf %W[map-domain #{domain.name} --space #{space.name}] }
|
|
80
|
+
before { organization.stub(:spaces).and_return([space]) }
|
|
81
|
+
|
|
82
|
+
include_examples "mapping a domain to a space"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
context "when a domain and an organization are passed" do
|
|
86
|
+
subject { cf %W[map-domain #{domain.name} --organization #{organization.name}] }
|
|
87
|
+
|
|
88
|
+
context "and the domain does NOT exist" do
|
|
89
|
+
let(:domains) { [] }
|
|
90
|
+
|
|
91
|
+
before do
|
|
92
|
+
client.stub(:domain) { domain }
|
|
93
|
+
domain.stub(:create!)
|
|
94
|
+
organization.stub(:add_domain)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
include_examples "binding a domain to an organization"
|
|
98
|
+
|
|
99
|
+
it "creates the domain" do
|
|
100
|
+
domain.should_receive(:create!)
|
|
101
|
+
subject
|
|
102
|
+
expect(domain.name).to eq domain_name
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
context "and the --shared option is passed" do
|
|
106
|
+
subject { cf %W[map-domain #{domain.name} --organization #{organization.name} --shared] }
|
|
107
|
+
|
|
108
|
+
it "adds the domain to the organization" do
|
|
109
|
+
organization.should_receive(:add_domain).with(domain)
|
|
110
|
+
subject
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "does not add the domain to a specific organization" do
|
|
114
|
+
domain.stub(:create!)
|
|
115
|
+
subject
|
|
116
|
+
expect(domain.owning_organization).to be_nil
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
context "and the domain already exists" do
|
|
122
|
+
include_examples "binding a domain to an organization"
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
context "when a domain, organization, and space is passed" do
|
|
127
|
+
subject { cf %W[map-domain #{domain.name} --space #{space.name} --organization #{organization.name}] }
|
|
128
|
+
before { organization.stub(:spaces).and_return([space]) }
|
|
129
|
+
|
|
130
|
+
include_examples "mapping a domain to a space"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
context "when only a domain is passed" do
|
|
134
|
+
subject { cf %W[map-domain #{domain.name}] }
|
|
135
|
+
|
|
136
|
+
include_examples "mapping a domain to a space"
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
module CF
|
|
4
|
+
module Domain
|
|
5
|
+
describe Unmap do
|
|
6
|
+
before do
|
|
7
|
+
stub_client_and_precondition
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
let(:client) do
|
|
11
|
+
build(:client).tap do |client|
|
|
12
|
+
client.stub(
|
|
13
|
+
:current_space => space,
|
|
14
|
+
:spaces => [space],
|
|
15
|
+
:organizations => [organization],
|
|
16
|
+
:domains => [domain])
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
let(:organization) { build(:organization) }
|
|
20
|
+
let(:space) { build(:space, :organization => organization) }
|
|
21
|
+
let(:domain) { build(:domain, :name => "some.domain.com") }
|
|
22
|
+
|
|
23
|
+
context "when the --delete flag is given" do
|
|
24
|
+
subject { cf %W[unmap-domain #{domain.name} --delete] }
|
|
25
|
+
|
|
26
|
+
it "asks for a confirmation" do
|
|
27
|
+
should_ask("Really delete #{domain.name}?", :default => false) { false }
|
|
28
|
+
domain.stub(:delete!)
|
|
29
|
+
subject
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "and the user answers 'no' to the confirmation" do
|
|
33
|
+
it "does NOT delete the domain" do
|
|
34
|
+
stub_ask("Really delete #{domain.name}?", anything) { false }
|
|
35
|
+
domain.should_not_receive(:delete!)
|
|
36
|
+
subject
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context "and the user answers 'yes' to the confirmation" do
|
|
41
|
+
it "deletes the domain" do
|
|
42
|
+
stub_ask("Really delete #{domain.name}?", anything) { true }
|
|
43
|
+
domain.should_receive(:delete!)
|
|
44
|
+
subject
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context "when a space is given" do
|
|
50
|
+
subject { cf %W[unmap-domain #{domain.name} --space #{space.name}] }
|
|
51
|
+
|
|
52
|
+
it "unmaps the domain from the space" do
|
|
53
|
+
space.should_receive(:remove_domain).with(domain)
|
|
54
|
+
subject
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "when an organization is given" do
|
|
59
|
+
subject { cf %W[unmap-domain #{domain.name} --organization #{organization.name}] }
|
|
60
|
+
|
|
61
|
+
it "unmaps the domain from the organization" do
|
|
62
|
+
organization.should_receive(:remove_domain).with(domain)
|
|
63
|
+
subject
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context "when only the domain is given" do
|
|
68
|
+
subject { cf %W[unmap-domain #{domain.name}] }
|
|
69
|
+
|
|
70
|
+
it "unmaps the domain from the current space" do
|
|
71
|
+
client.current_space.should_receive(:remove_domain).with(domain)
|
|
72
|
+
subject
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
module CF
|
|
4
|
+
describe "Help" do
|
|
5
|
+
let(:global) { {} }
|
|
6
|
+
let(:given) { {} }
|
|
7
|
+
let(:inputs) { {:app => apps[0]} }
|
|
8
|
+
let(:apps) { [build(:app)] }
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
subject do
|
|
12
|
+
capture_output { Mothership.new.invoke(:help) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "prints the cf version in the first line" do
|
|
16
|
+
subject
|
|
17
|
+
stdout.rewind
|
|
18
|
+
expect(stdout.readlines.first).to match /Cloud Foundry Command Line Interface, version \[#{CF::VERSION}\]\n/
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
module CF
|
|
4
|
+
module Organization
|
|
5
|
+
describe Create do
|
|
6
|
+
let(:client) { build(:client) }
|
|
7
|
+
before { stub_client_and_precondition }
|
|
8
|
+
|
|
9
|
+
describe "metadata" do
|
|
10
|
+
subject(:command) { Mothership.commands[:create_org] }
|
|
11
|
+
|
|
12
|
+
its(:description) { should == "Create an organization" }
|
|
13
|
+
it { expect(Mothership::Help.group(:organizations)).to include(command) }
|
|
14
|
+
its(:arguments) { should == [{type: :optional, value: nil, name: :name}] }
|
|
15
|
+
|
|
16
|
+
include_examples "inputs must have descriptions"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "running the command" do
|
|
20
|
+
let(:new_org) { build(:organization) }
|
|
21
|
+
let(:current_user) { build(:user) }
|
|
22
|
+
|
|
23
|
+
before do
|
|
24
|
+
client.stub(organization: new_org)
|
|
25
|
+
client.stub(current_user: current_user)
|
|
26
|
+
|
|
27
|
+
@command_args = ["create-org", new_org.name]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "when the organization already exists" do
|
|
31
|
+
let(:existing_org) { build(:organization, name: new_org.name) }
|
|
32
|
+
|
|
33
|
+
before do
|
|
34
|
+
new_org.stub(:create!).and_raise(CFoundry::OrganizationNameTaken)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "when --find-if-exists is given" do
|
|
38
|
+
before { @command_args << "--find-if-exists" }
|
|
39
|
+
before { client.stub(:organization_by_name).with(new_org.name).and_return(existing_org) }
|
|
40
|
+
|
|
41
|
+
context "when --target is given" do
|
|
42
|
+
before { @command_args << "--target" }
|
|
43
|
+
|
|
44
|
+
it "switches them to the existing organization" do
|
|
45
|
+
mock_invoke :target, organization: existing_org
|
|
46
|
+
cf @command_args
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "when --target is NOT given" do
|
|
51
|
+
it "does not actively switch to the existing organization" do
|
|
52
|
+
dont_allow_invoke :target
|
|
53
|
+
cf @command_args
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "when --find-if-exists is NOT given" do
|
|
59
|
+
before { @command_args << "--target" }
|
|
60
|
+
|
|
61
|
+
context "when --target is given" do
|
|
62
|
+
it "raises an exception" do
|
|
63
|
+
expect { cf @command_args }.to raise_error(CFoundry::OrganizationNameTaken)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context "when --target is NOT given" do
|
|
68
|
+
it "raises an exception" do
|
|
69
|
+
expect { cf @command_args }.to raise_error(CFoundry::OrganizationNameTaken)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context "when the organization DOES NOT already exist" do
|
|
76
|
+
before do
|
|
77
|
+
new_org.stub(:create!)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
context "when --find-if-exists is given" do
|
|
81
|
+
before { @command_args << "--find-if-exists" }
|
|
82
|
+
|
|
83
|
+
context "when --target is given" do
|
|
84
|
+
before { @command_args << "--target" }
|
|
85
|
+
|
|
86
|
+
it "switches them to the new organization" do
|
|
87
|
+
mock_invoke :target, organization: new_org
|
|
88
|
+
cf @command_args
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
context "when --target is NOT given" do
|
|
93
|
+
it "does not actively switch to the existing organization" do
|
|
94
|
+
dont_allow_invoke :target
|
|
95
|
+
cf @command_args
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
context "when --find-if-exists is NOT given" do
|
|
101
|
+
context "when --target is given" do
|
|
102
|
+
before { @command_args << "--target" }
|
|
103
|
+
|
|
104
|
+
it "switches them to the new organization" do
|
|
105
|
+
mock_invoke :target, organization: new_org
|
|
106
|
+
cf @command_args
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
context "when --target is NOT given" do
|
|
111
|
+
it "does not actively switch to the existing organization" do
|
|
112
|
+
dont_allow_invoke :target
|
|
113
|
+
cf @command_args
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
module CF
|
|
4
|
+
module Organization
|
|
5
|
+
describe Delete do
|
|
6
|
+
describe "metadata" do
|
|
7
|
+
let(:command) { Mothership.commands[:delete_org] }
|
|
8
|
+
|
|
9
|
+
describe "command" do
|
|
10
|
+
subject { command }
|
|
11
|
+
it { expect(Mothership::Help.group(:organizations)).to include(subject) }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
include_examples "inputs must have descriptions"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "running the command" do
|
|
18
|
+
let(:organization) { build(:organization, :name => "MyOrg") }
|
|
19
|
+
let(:organizations) { [organization] }
|
|
20
|
+
|
|
21
|
+
let(:client) { build(:client) }
|
|
22
|
+
|
|
23
|
+
subject { capture_output { cf %W[delete-org MyOrg --quiet --force] } }
|
|
24
|
+
|
|
25
|
+
before do
|
|
26
|
+
described_class.any_instance.stub(:client) { client }
|
|
27
|
+
described_class.any_instance.stub(:check_logged_in)
|
|
28
|
+
described_class.any_instance.stub(:check_target)
|
|
29
|
+
CF::Populators::Organization.any_instance.stub(:populate_and_save!).and_return(organization)
|
|
30
|
+
organization.stub(:delete!).and_return(true)
|
|
31
|
+
client.stub(:organizations).and_return(organizations)
|
|
32
|
+
client.stub(:organizations_first_page).and_return(organizations)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context "without the force parameter" do
|
|
36
|
+
subject { cf %W[delete-org MyOrg --quiet] }
|
|
37
|
+
|
|
38
|
+
it "confirms deletion of the organization and deletes it" do
|
|
39
|
+
organization.should_receive(:delete!).with(:recursive => false) { true }
|
|
40
|
+
should_ask("Really delete #{organization.name}?", {:default => false}) { true }
|
|
41
|
+
|
|
42
|
+
subject
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
context "when deleting the last organization" do
|
|
47
|
+
before do
|
|
48
|
+
client.stub(:organizations_first_page).and_return([])
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "warns the user what they've done" do
|
|
52
|
+
subject
|
|
53
|
+
expect(output).to say("There are no longer any organizations.")
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context "when deleting the current organization" do
|
|
58
|
+
let(:organizations) { [organization, build(:organization)] }
|
|
59
|
+
|
|
60
|
+
before do
|
|
61
|
+
client.stub(:current_organization).and_return(organization)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "invalidates the old target / client" do
|
|
65
|
+
described_class.any_instance.should_receive(:invalidate_client)
|
|
66
|
+
subject
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "invokes the target command" do
|
|
70
|
+
mock_invoke :target
|
|
71
|
+
subject
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context "when an org fails to delete" do
|
|
76
|
+
before do
|
|
77
|
+
organization.stub(:delete!) { raise CFoundry::AssociationNotEmpty.new("We don't delete children.", 10006) }
|
|
78
|
+
subject
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "shows the error message" do
|
|
82
|
+
expect(output).to say "We don't delete children."
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "informs the user of how to recursively delete" do
|
|
86
|
+
expect(output).to say "If you want to delete the organization along with all dependent objects, rerun the command with the '--recursive' flag."
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "returns a non-zero exit code" do
|
|
90
|
+
@status.should_not == 0
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
context "when deleting with --recursive" do
|
|
95
|
+
subject { cf %W[delete-org MyOrg --recursive --force] }
|
|
96
|
+
|
|
97
|
+
it "sends recursive true in its delete request" do
|
|
98
|
+
organization.should_receive(:delete!).with(:recursive => true)
|
|
99
|
+
subject
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|