cf 1.1.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|