cf 1.1.4 → 2.0.0
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/lib/cf/cli/start/login.rb +3 -0
- data/lib/cf/version.rb +1 -1
- data/spec/cf/cli/app/base_spec.rb +2 -2
- data/spec/cf/cli/app/delete_spec.rb +150 -129
- data/spec/cf/cli/app/instances_spec.rb +56 -51
- data/spec/cf/cli/app/push/create_spec.rb +72 -70
- data/spec/cf/cli/app/push_spec.rb +46 -43
- data/spec/cf/cli/app/rename_spec.rb +13 -6
- data/spec/cf/cli/app/scale_spec.rb +9 -4
- data/spec/cf/cli/app/start_spec.rb +28 -23
- data/spec/cf/cli/app/stats_spec.rb +9 -10
- data/spec/cf/cli/domain/map_spec.rb +13 -10
- data/spec/cf/cli/domain/unmap_spec.rb +11 -11
- data/spec/cf/cli/organization/delete_spec.rb +10 -4
- data/spec/cf/cli/organization/orgs_spec.rb +15 -4
- data/spec/cf/cli/organization/rename_spec.rb +7 -5
- data/spec/cf/cli/populators/organization_spec.rb +40 -29
- data/spec/cf/cli/populators/space_spec.rb +51 -40
- data/spec/cf/cli/populators/target_spec.rb +4 -2
- data/spec/cf/cli/route/delete_spec.rb +6 -4
- data/spec/cf/cli/route/map_spec.rb +54 -35
- data/spec/cf/cli/route/unmap_spec.rb +21 -15
- data/spec/cf/cli/service/create_spec.rb +17 -12
- data/spec/cf/cli/service/rename_spec.rb +8 -6
- data/spec/cf/cli/service/services_spec.rb +15 -8
- data/spec/cf/cli/space/create_spec.rb +5 -9
- data/spec/cf/cli/space/delete_spec.rb +9 -8
- data/spec/cf/cli/space/rename_spec.rb +15 -8
- data/spec/cf/cli/space/space_spec.rb +10 -10
- data/spec/cf/cli/space/spaces_spec.rb +11 -5
- data/spec/cf/cli/space/switch_space_spec.rb +7 -7
- data/spec/cf/cli/start/info_spec.rb +3 -1
- data/spec/cf/cli/start/login_spec.rb +1 -1
- data/spec/cf/cli/start/logout_spec.rb +1 -1
- data/spec/cf/cli/start/target_spec.rb +7 -6
- data/spec/cf/cli/user/create_spec.rb +3 -4
- data/spec/cf/cli/user/passwd_spec.rb +2 -4
- data/spec/cf/cli/user/register_spec.rb +4 -4
- data/spec/cf/cli_spec.rb +1 -3
- data/spec/factories/cfoundry/v2/apps_factory.rb +12 -0
- data/spec/factories/cfoundry/v2/clients_factory.rb +4 -0
- data/spec/factories/cfoundry/v2/{domain_factory.rb → domains_factory.rb} +0 -0
- data/spec/factories/cfoundry/v2/organizations_factory.rb +12 -0
- data/spec/factories/cfoundry/v2/{route_factory.rb → routes_factory.rb} +0 -0
- data/spec/factories/cfoundry/v2/service_bindings_factory.rb +11 -0
- data/spec/factories/cfoundry/v2/service_instances_factory.rb +12 -0
- data/spec/factories/cfoundry/v2/service_plans_factory.rb +13 -0
- data/spec/factories/cfoundry/v2/services_factory.rb +14 -0
- data/spec/factories/cfoundry/v2/spaces_factory.rb +12 -0
- data/spec/factories/cfoundry/v2/stacks_factory.rb +11 -0
- data/spec/factories/cfoundry/v2/{user_factory.rb → users_factory.rb} +0 -0
- data/spec/features/push_flow_spec.rb +8 -8
- data/spec/manifests/manifests_spec.rb +34 -51
- data/spec/manifests/plugin_spec.rb +17 -6
- data/spec/spec_helper.rb +0 -1
- data/spec/support/interact_helper.rb +1 -1
- data/spec/tunnel/tunnel_spec.rb +5 -5
- metadata +37 -13
@@ -6,13 +6,15 @@ module CF
|
|
6
6
|
let(:global) { {:color => false, :quiet => true} }
|
7
7
|
let(:inputs) { {} }
|
8
8
|
let(:given) { {} }
|
9
|
-
|
10
|
-
let(:client) { fake_client(:organizations => organizations) }
|
9
|
+
|
11
10
|
let(:new_name) { "some-new-name" }
|
11
|
+
let(:organizations) { [build(:organization)] }
|
12
|
+
let(:client) { build(:client) }
|
12
13
|
|
13
14
|
before do
|
14
15
|
CF::CLI.any_instance.stub(:client).and_return(client)
|
15
16
|
CF::CLI.any_instance.stub(:precondition).and_return(nil)
|
17
|
+
client.stub(:organizations).and_return(organizations)
|
16
18
|
end
|
17
19
|
|
18
20
|
subject { Mothership.new.invoke(:rename_org, inputs, given, global) }
|
@@ -66,8 +68,8 @@ module CF
|
|
66
68
|
|
67
69
|
context "when the defaults are used" do
|
68
70
|
it "asks for the organization and new name and renames" do
|
69
|
-
|
70
|
-
|
71
|
+
should_ask("Rename which organization?", anything) { renamed_organization }
|
72
|
+
should_ask("New name") { new_name }
|
71
73
|
renamed_organization.should_receive(:name=).with(new_name)
|
72
74
|
renamed_organization.should_receive(:update!)
|
73
75
|
subject
|
@@ -79,7 +81,7 @@ module CF
|
|
79
81
|
|
80
82
|
it "asks for the new name and renames" do
|
81
83
|
dont_allow_ask("Rename which organization?", anything)
|
82
|
-
|
84
|
+
should_ask("New name") { new_name }
|
83
85
|
renamed_organization.should_receive(:name=).with(new_name)
|
84
86
|
renamed_organization.should_receive(:update!)
|
85
87
|
subject
|
@@ -8,14 +8,14 @@ module CF
|
|
8
8
|
describe "#populate_and_save!" do
|
9
9
|
let(:tokens_file_path) { CF::TOKENS_FILE }
|
10
10
|
let(:user) { build(:user) }
|
11
|
+
let(:client) { build(:client) }
|
11
12
|
let(:organizations) do
|
12
13
|
[
|
13
|
-
|
14
|
-
|
14
|
+
build(:organization, :name => "My Org", :guid => "organization-id-1", :users => [user]),
|
15
|
+
build(:organization, :name => "Other Org", :guid => "organization-id-2")
|
15
16
|
]
|
16
17
|
end
|
17
18
|
let(:organization) { organizations.first }
|
18
|
-
let(:client) { fake_client :organizations => organizations }
|
19
19
|
|
20
20
|
let(:input) { {:organization => organization} }
|
21
21
|
let(:tokens_yaml) { YAML.load_file(File.expand_path(tokens_file_path)) }
|
@@ -31,7 +31,7 @@ module CF
|
|
31
31
|
write_token_file({:organization => "organization-id-1"})
|
32
32
|
end
|
33
33
|
|
34
|
-
|
34
|
+
def execute_populate_and_save
|
35
35
|
capture_output { populator.populate_and_save! }
|
36
36
|
end
|
37
37
|
|
@@ -40,13 +40,13 @@ module CF
|
|
40
40
|
described_class.any_instance.unstub(:client)
|
41
41
|
populator.client.current_organization.guid.should == "organization-id-2"
|
42
42
|
|
43
|
-
|
43
|
+
execute_populate_and_save
|
44
44
|
|
45
45
|
populator.client.current_organization.guid.should == "organization-id-1"
|
46
46
|
end
|
47
47
|
|
48
48
|
it "returns the organization" do
|
49
|
-
|
49
|
+
execute_populate_and_save.should == organization
|
50
50
|
end
|
51
51
|
|
52
52
|
context "with an organization in the input" do
|
@@ -54,21 +54,21 @@ module CF
|
|
54
54
|
before { write_token_file({:organization => "organization-id-2"}) }
|
55
55
|
|
56
56
|
it "uses that organization" do
|
57
|
-
|
57
|
+
execute_populate_and_save.should == organization
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should not reprompt for organization" do
|
61
61
|
dont_allow_ask("Organization", anything)
|
62
|
-
|
62
|
+
execute_populate_and_save
|
63
63
|
end
|
64
64
|
|
65
65
|
it "sets the organization in the token file" do
|
66
|
-
|
66
|
+
execute_populate_and_save
|
67
67
|
expect(tokens_yaml["https://api.some-domain.com"][:organization]).to be == "organization-id-1"
|
68
68
|
end
|
69
69
|
|
70
70
|
it "prints out that it is switching to that organization" do
|
71
|
-
|
71
|
+
execute_populate_and_save
|
72
72
|
expect(output).to say("Switching to organization #{organization.name}")
|
73
73
|
end
|
74
74
|
|
@@ -80,7 +80,7 @@ module CF
|
|
80
80
|
end
|
81
81
|
|
82
82
|
it "removes the space from the token file" do
|
83
|
-
|
83
|
+
execute_populate_and_save
|
84
84
|
refreshed_tokens = YAML.load_file(File.expand_path(tokens_file_path))
|
85
85
|
expect(refreshed_tokens["https://api.some-domain.com"][:space]).to be_nil
|
86
86
|
end
|
@@ -93,7 +93,7 @@ module CF
|
|
93
93
|
end
|
94
94
|
|
95
95
|
it "does not remove the space from the token file" do
|
96
|
-
|
96
|
+
execute_populate_and_save
|
97
97
|
expect(tokens_yaml["https://api.some-domain.com"][:space]).to be == "should-not-be-removed"
|
98
98
|
end
|
99
99
|
end
|
@@ -106,46 +106,57 @@ module CF
|
|
106
106
|
context "with an organization in the config file" do
|
107
107
|
it "should not reprompt for organization" do
|
108
108
|
dont_allow_ask("Organization", anything)
|
109
|
-
|
109
|
+
execute_populate_and_save
|
110
110
|
end
|
111
111
|
|
112
112
|
it "sets the organization in the token file" do
|
113
|
-
|
113
|
+
execute_populate_and_save
|
114
114
|
expect(tokens_yaml["https://api.some-domain.com"][:organization]).to be == "organization-id-1"
|
115
115
|
end
|
116
116
|
|
117
117
|
context "but that organization doesn't exist anymore (not valid)" do
|
118
|
-
before
|
118
|
+
before do
|
119
|
+
client.stub(:organizations).and_return(organizations)
|
120
|
+
organization.stub(:users).and_raise(CFoundry::APIError)
|
121
|
+
end
|
119
122
|
|
120
123
|
it "asks the user for an organization" do
|
121
|
-
|
122
|
-
|
124
|
+
should_ask("Organization", anything) { organization }
|
125
|
+
execute_populate_and_save
|
123
126
|
end
|
124
127
|
end
|
125
128
|
end
|
126
129
|
|
127
130
|
context "without an organization in the config file" do
|
128
|
-
|
131
|
+
context "when the user has organizations" do
|
132
|
+
before do
|
133
|
+
client.stub(:organizations).and_return(organizations)
|
134
|
+
write_token_file({})
|
135
|
+
end
|
129
136
|
|
130
|
-
|
131
|
-
|
132
|
-
|
137
|
+
it "prompts for the organization" do
|
138
|
+
should_ask("Organization", anything) { organization }
|
139
|
+
execute_populate_and_save
|
133
140
|
|
134
|
-
|
135
|
-
|
141
|
+
expect(output).to say("Switching to organization #{organization.name}")
|
142
|
+
end
|
136
143
|
|
137
|
-
|
138
|
-
|
144
|
+
it "sets the organization in the token file" do
|
145
|
+
should_ask("Organization", anything) { organization }
|
139
146
|
|
140
|
-
|
141
|
-
|
147
|
+
execute_populate_and_save
|
148
|
+
expect(tokens_yaml["https://api.some-domain.com"][:organization]).to be == "organization-id-1"
|
149
|
+
end
|
142
150
|
end
|
143
151
|
|
144
152
|
context "when the user has no organizations" do
|
145
|
-
|
153
|
+
before do
|
154
|
+
client.stub(:organizations).and_return([])
|
155
|
+
write_token_file({})
|
156
|
+
end
|
146
157
|
|
147
158
|
it "tells the user to create one by raising a UserFriendlyError" do
|
148
|
-
expect {
|
159
|
+
expect { execute_populate_and_save }.to raise_error(CF::UserFriendlyError, /There are no organizations/)
|
149
160
|
end
|
150
161
|
end
|
151
162
|
end
|
@@ -2,24 +2,22 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
module CF
|
4
4
|
module Populators
|
5
|
-
|
6
5
|
describe Space do
|
7
6
|
stub_home_dir_with { "#{SPEC_ROOT}/fixtures/fake_home_dirs/new" }
|
8
7
|
|
9
8
|
describe "#populate_and_save!" do
|
10
|
-
let(:
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
let(:user) { build(:user) }
|
17
|
-
let(:organization) { double(:organization, :name => "My Org", :guid => "organization-id-1", :users => [user], :spaces => spaces) }
|
18
|
-
let(:space) { spaces.first }
|
19
|
-
let(:client) do
|
20
|
-
fake_client :organizations => [organization]
|
9
|
+
let(:spaces) do
|
10
|
+
[
|
11
|
+
build(:space, :name => "Development", :guid => "space-id-1", :developers => [user]),
|
12
|
+
build(:space, :name => "Staging", :guid => "space-id-2")
|
13
|
+
]
|
21
14
|
end
|
15
|
+
let(:space) { spaces.first }
|
16
|
+
let(:user) { build(:user) }
|
17
|
+
let(:client) { build(:client) }
|
18
|
+
let(:organization) { build(:organization, :client => client, :name => "My Org", :guid => "organization-id-1", :users => [user], :spaces => spaces) }
|
22
19
|
|
20
|
+
let(:tokens_file_path) { "~/.cf/tokens.yml" }
|
23
21
|
let(:input_hash) { {:space => space} }
|
24
22
|
let(:inputs) { Mothership::Inputs.new(nil, nil, input_hash) }
|
25
23
|
let(:tokens_yaml) { YAML.load_file(File.expand_path(tokens_file_path)) }
|
@@ -27,13 +25,10 @@ module CF
|
|
27
25
|
|
28
26
|
before do
|
29
27
|
client.stub(:current_user).and_return(user)
|
30
|
-
client.stub(:space).and_return(space)
|
31
28
|
described_class.any_instance.stub(:client).and_return(client)
|
32
|
-
|
33
|
-
write_token_file({:space => "space-id-1", :organization => "organization-id-1"})
|
34
29
|
end
|
35
30
|
|
36
|
-
|
31
|
+
def execute_populate_and_save
|
37
32
|
capture_output { populator.populate_and_save! }
|
38
33
|
end
|
39
34
|
|
@@ -42,13 +37,13 @@ module CF
|
|
42
37
|
described_class.any_instance.unstub(:client)
|
43
38
|
populator.client.current_space.guid.should == "space-id-2"
|
44
39
|
|
45
|
-
|
40
|
+
execute_populate_and_save
|
46
41
|
|
47
42
|
populator.client.current_space.guid.should == "space-id-1"
|
48
43
|
end
|
49
44
|
|
50
45
|
it "returns the space" do
|
51
|
-
|
46
|
+
execute_populate_and_save.should == space
|
52
47
|
end
|
53
48
|
|
54
49
|
describe "mothership input arguments" do
|
@@ -60,7 +55,7 @@ module CF
|
|
60
55
|
end
|
61
56
|
|
62
57
|
it "passes through extra arguments to the input call" do
|
63
|
-
|
58
|
+
execute_populate_and_save
|
64
59
|
end
|
65
60
|
end
|
66
61
|
|
@@ -69,21 +64,21 @@ module CF
|
|
69
64
|
before { write_token_file({:space => "space-id-2"}) }
|
70
65
|
|
71
66
|
it "uses that space" do
|
72
|
-
|
67
|
+
execute_populate_and_save.should == space
|
73
68
|
end
|
74
69
|
|
75
70
|
it "should not reprompt for space" do
|
76
71
|
dont_allow_ask("Space", anything)
|
77
|
-
|
72
|
+
execute_populate_and_save
|
78
73
|
end
|
79
74
|
|
80
75
|
it "sets the space in the token file" do
|
81
|
-
|
76
|
+
execute_populate_and_save
|
82
77
|
expect(tokens_yaml["https://api.some-domain.com"][:space]).to be == "space-id-1"
|
83
78
|
end
|
84
79
|
|
85
80
|
it "prints out that it is switching to that space" do
|
86
|
-
|
81
|
+
execute_populate_and_save
|
87
82
|
expect(output).to say("Switching to space #{space.name}")
|
88
83
|
end
|
89
84
|
end
|
@@ -92,48 +87,64 @@ module CF
|
|
92
87
|
let(:input_hash) { {} }
|
93
88
|
|
94
89
|
context "with a space in the config file" do
|
90
|
+
before do
|
91
|
+
write_token_file({:space => space.guid, :organization => organization.guid})
|
92
|
+
client.stub(:space).and_return(space)
|
93
|
+
end
|
94
|
+
|
95
95
|
it "should not reprompt for space" do
|
96
96
|
dont_allow_ask("Space", anything)
|
97
|
-
|
97
|
+
execute_populate_and_save
|
98
98
|
end
|
99
99
|
|
100
100
|
it "sets the space in the token file" do
|
101
|
-
|
101
|
+
execute_populate_and_save
|
102
102
|
expect(tokens_yaml["https://api.some-domain.com"][:space]).to be == "space-id-1"
|
103
103
|
end
|
104
104
|
|
105
105
|
context "but that space doesn't exist anymore (not valid)" do
|
106
|
-
before
|
106
|
+
before do
|
107
|
+
space.stub(:developers).and_raise(CFoundry::APIError)
|
108
|
+
organization.stub(:spaces).and_return(spaces)
|
109
|
+
end
|
107
110
|
|
108
111
|
it "asks the user for an space" do
|
109
|
-
|
110
|
-
|
112
|
+
should_ask("Space", anything) { space }
|
113
|
+
execute_populate_and_save
|
111
114
|
end
|
112
115
|
end
|
113
116
|
end
|
114
117
|
|
115
118
|
context "without a space in the config file" do
|
116
|
-
|
119
|
+
context "when the user has spaces in that organization" do
|
120
|
+
before do
|
121
|
+
write_token_file({})
|
122
|
+
organization.stub(:spaces).and_return(spaces)
|
123
|
+
end
|
117
124
|
|
118
|
-
|
119
|
-
|
120
|
-
|
125
|
+
it "prompts for the space" do
|
126
|
+
should_ask("Space", anything) { space }
|
127
|
+
execute_populate_and_save
|
121
128
|
|
122
|
-
|
123
|
-
|
129
|
+
expect(output).to say("Switching to space #{space.name}")
|
130
|
+
end
|
124
131
|
|
125
|
-
|
126
|
-
|
132
|
+
it "sets the space in the token file" do
|
133
|
+
should_ask("Space", anything) { space }
|
127
134
|
|
128
|
-
|
129
|
-
|
135
|
+
execute_populate_and_save
|
136
|
+
expect(tokens_yaml["https://api.some-domain.com"][:space]).to be == "space-id-1"
|
137
|
+
end
|
130
138
|
end
|
131
139
|
|
132
140
|
context "when the user has no spaces in that organization" do
|
133
|
-
|
141
|
+
before do
|
142
|
+
write_token_file({})
|
143
|
+
organization.stub(:spaces).and_return([])
|
144
|
+
end
|
134
145
|
|
135
146
|
it "tells the user to create one by raising a UserFriendlyError" do
|
136
|
-
expect {
|
147
|
+
expect { execute_populate_and_save }.to raise_error(CF::UserFriendlyError, /There are no spaces/)
|
137
148
|
end
|
138
149
|
end
|
139
150
|
end
|
@@ -8,14 +8,16 @@ module CF
|
|
8
8
|
let(:organization) { double(:organization) }
|
9
9
|
let(:space) { double(:space) }
|
10
10
|
|
11
|
-
|
11
|
+
def execute_populate_and_save
|
12
|
+
Target.new(input).populate_and_save!
|
13
|
+
end
|
12
14
|
|
13
15
|
it "uses a organization then a space populator" do
|
14
16
|
organization.should_receive(:populate_and_save!).and_return(organization)
|
15
17
|
space.should_receive(:populate_and_save!)
|
16
18
|
Organization.should_receive(:new).with(input).and_return(organization)
|
17
19
|
Space.should_receive(:new).with(input, organization).and_return(space)
|
18
|
-
|
20
|
+
execute_populate_and_save
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -6,9 +6,11 @@ describe CF::Route::Delete do
|
|
6
6
|
route.stub(:delete!)
|
7
7
|
end
|
8
8
|
|
9
|
-
let(:
|
10
|
-
|
11
|
-
|
9
|
+
let(:client) do
|
10
|
+
build(:client).tap { |client| client.stub(:routes => [route]) }
|
11
|
+
end
|
12
|
+
let(:route) { build(:route, :host => host_name, :domain => domain) }
|
13
|
+
let(:domain) { build(:domain, :name => domain_name) }
|
12
14
|
let(:domain_name) { "some-domain.com" }
|
13
15
|
let(:host_name) { "some-host" }
|
14
16
|
let(:url) { "#{host_name}.#{domain_name}" }
|
@@ -36,7 +38,7 @@ describe CF::Route::Delete do
|
|
36
38
|
let(:command) { cf %W[delete-route #{url}] }
|
37
39
|
|
38
40
|
it "prompts the user are they sure?" do
|
39
|
-
|
41
|
+
should_ask("Really delete #{url}?", {:default => false}) { true }
|
40
42
|
|
41
43
|
command
|
42
44
|
end
|
@@ -7,11 +7,11 @@ module CF
|
|
7
7
|
stub_client_and_precondition
|
8
8
|
end
|
9
9
|
|
10
|
-
let(:client) {
|
10
|
+
let(:client) { build(:client) }
|
11
11
|
|
12
|
-
let(:app) {
|
13
|
-
let(:space) {
|
14
|
-
let(:domain) {
|
12
|
+
let(:app) { build(:app, :space => space, :name => "app-name") }
|
13
|
+
let(:space) { build(:space, :domains => space_domains) }
|
14
|
+
let(:domain) { build(:domain, :name => "domain-name-1") }
|
15
15
|
|
16
16
|
let(:apps) { [app] }
|
17
17
|
let(:routes) { [] }
|
@@ -25,12 +25,13 @@ module CF
|
|
25
25
|
context "and the domain is mapped to the space" do
|
26
26
|
let(:space_domains) { [domain] }
|
27
27
|
|
28
|
+
before do
|
29
|
+
space.stub(:domain_by_name).with(domain.name).and_return(domain)
|
30
|
+
end
|
31
|
+
|
28
32
|
context "and the route is mapped to the space" do
|
29
33
|
let(:routes) { [route] }
|
30
|
-
let(:route)
|
31
|
-
fake(:route, :space => space, :host => host_name,
|
32
|
-
:domain => domain)
|
33
|
-
end
|
34
|
+
let(:route) { build(:route, :space => space, :host => host_name, :domain => domain) }
|
34
35
|
|
35
36
|
it "binds the route to the app" do
|
36
37
|
app.should_receive(:add_route).with(route)
|
@@ -39,7 +40,7 @@ module CF
|
|
39
40
|
end
|
40
41
|
|
41
42
|
context "and the route is not mapped to the space" do
|
42
|
-
let(:new_route) {
|
43
|
+
let(:new_route) { build(:route) }
|
43
44
|
|
44
45
|
before do
|
45
46
|
client.stub(:route).and_return(new_route)
|
@@ -76,16 +77,47 @@ module CF
|
|
76
77
|
context "when an app is specified" do
|
77
78
|
subject { cf(%W[map #{app.name} #{host_name} #{domain.name}]) }
|
78
79
|
|
79
|
-
|
80
|
-
|
80
|
+
before do
|
81
|
+
client.stub(:apps).and_return(apps)
|
82
|
+
client.stub(:routes).and_return(routes)
|
83
|
+
end
|
81
84
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
+
context "when a host is specified" do
|
86
|
+
context "and the domain is not already mapped to the space" do
|
87
|
+
before do
|
88
|
+
space.stub(:domain_by_name).with(domain.name).and_return(nil)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "indicates that the domain is invalid" do
|
92
|
+
subject
|
93
|
+
expect(error_output).to say("Unknown domain")
|
94
|
+
end
|
85
95
|
end
|
96
|
+
|
97
|
+
include_examples "mapping the route to the app"
|
86
98
|
end
|
87
99
|
|
88
|
-
|
100
|
+
context "when a host is not specified" do
|
101
|
+
let(:new_route) { build(:route) }
|
102
|
+
let(:host_name) { "" }
|
103
|
+
|
104
|
+
before do
|
105
|
+
client.stub(:route).and_return(new_route)
|
106
|
+
client.stub(:app_by_name).with(app.name).and_return(app)
|
107
|
+
client.stub(:routes_by_host).with(host_name, {:depth => 0}).and_return([new_route])
|
108
|
+
app.stub(:add_route)
|
109
|
+
space.stub(:domain_by_name).with(domain.name).and_return(domain)
|
110
|
+
new_route.stub(:create!)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "creates a route with an empty string as its host" do
|
114
|
+
new_route.should_receive(:create!)
|
115
|
+
subject
|
116
|
+
expect(new_route.host).to eq ""
|
117
|
+
end
|
118
|
+
|
119
|
+
include_examples "mapping the route to the app"
|
120
|
+
end
|
89
121
|
end
|
90
122
|
|
91
123
|
context "when an app is not specified" do
|
@@ -94,36 +126,23 @@ module CF
|
|
94
126
|
|
95
127
|
subject { cf %W[map --host #{host_name} #{domain.name}] }
|
96
128
|
|
97
|
-
before
|
129
|
+
before do
|
130
|
+
client.stub(:apps).and_return(apps)
|
131
|
+
stub_ask("Which application?", anything) { app }
|
132
|
+
space.stub(:domain_by_name).with(domain.name).and_return(domain)
|
133
|
+
client.stub(:routes_by_host).with(host_name, {:depth => 0}).and_return(routes)
|
134
|
+
end
|
98
135
|
|
99
136
|
it "asks for an app" do
|
100
137
|
client.stub(:route).and_return(new_route)
|
101
138
|
app.stub(:add_route)
|
102
139
|
new_route.stub(:create!)
|
103
|
-
|
140
|
+
should_ask("Which application?", anything) { app }
|
104
141
|
subject
|
105
142
|
end
|
106
143
|
|
107
144
|
include_examples "mapping the route to the app"
|
108
145
|
end
|
109
|
-
|
110
|
-
context "when a host is not specified" do
|
111
|
-
let(:new_route) { build(:route) }
|
112
|
-
|
113
|
-
subject { cf %W[map #{app.name} #{domain.name}] }
|
114
|
-
|
115
|
-
before do
|
116
|
-
client.stub(:route).and_return(new_route)
|
117
|
-
app.stub(:add_route)
|
118
|
-
new_route.stub(:create!)
|
119
|
-
end
|
120
|
-
|
121
|
-
it "creates a route with an empty string as its host" do
|
122
|
-
new_route.should_receive(:create!)
|
123
|
-
subject
|
124
|
-
expect(new_route.host).to eq ""
|
125
|
-
end
|
126
|
-
end
|
127
146
|
end
|
128
147
|
end
|
129
148
|
end
|