Skip to content

Commit 41fbc23

Browse files
committed
Fix validation of conflicting manifest features
Switching from service-binding-k8s to file-based-vcap-services via manifest entries (features) raised an error. This change fixes the wrong validation for this corner case.
1 parent 8516e29 commit 41fbc23

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

app/actions/app_feature_update.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ def feature_column_name(feature_name)
3030
end
3131

3232
def check_invalid_combination!(app, flags)
33-
file_based_vcap_services_enabled = flags[feature_column_name(AppFeatures::FILE_BASED_VCAP_SERVICES_FEATURE)].present? || app.file_based_vcap_services_enabled
34-
service_binding_k8s_enabled = flags[feature_column_name(AppFeatures::SERVICE_BINDING_K8S_FEATURE)].present? || app.service_binding_k8s_enabled
33+
file_based_vcap_services_enabled = flags.fetch(feature_column_name(AppFeatures::FILE_BASED_VCAP_SERVICES_FEATURE), app.file_based_vcap_services_enabled)
34+
service_binding_k8s_enabled = flags.fetch(feature_column_name(AppFeatures::SERVICE_BINDING_K8S_FEATURE), app.service_binding_k8s_enabled)
3535
return unless file_based_vcap_services_enabled && service_binding_k8s_enabled
3636

3737
msg = "'#{AppFeatures::FILE_BASED_VCAP_SERVICES_FEATURE}' and '#{AppFeatures::SERVICE_BINDING_K8S_FEATURE}' features cannot be enabled at the same time."

spec/unit/actions/app_feature_update_spec.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,27 @@ module VCAP::CloudController
122122
end
123123
end
124124

125+
context 'when switching from service-binding-k8s to file-based-vcap-services' do
126+
before do
127+
app.update(service_binding_k8s_enabled: true)
128+
features[:'service-binding-k8s'] = false
129+
features[:'file-based-vcap-services'] = true
130+
end
131+
132+
it 'updates the corresponding columns in a single database call' do
133+
expect(app.service_binding_k8s_enabled).to be(true)
134+
expect(app.file_based_vcap_services_enabled).to be(false)
135+
136+
expect do
137+
AppFeatureUpdate.bulk_update(app, message)
138+
end.to have_queried_db_times(/update .apps./i, 1)
139+
140+
app.reload
141+
expect(app.service_binding_k8s_enabled).to be(false)
142+
expect(app.file_based_vcap_services_enabled).to be(true)
143+
end
144+
end
145+
125146
context 'when conflicting features are specified' do
126147
before do
127148
features[:'service-binding-k8s'] = true

0 commit comments

Comments
 (0)