Skip to content

Commit fd730a6

Browse files
committed
Improvements suggested in the PR review
- Changed the error message for invalid flag names and values to be more specific. - Changed to do stronger test assertions for error message validations.
1 parent 62ff772 commit fd730a6

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

app/models/runtime/feature_flag.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,11 @@ def self.admin_read_only?
8787
end
8888

8989
def self.override_default_flags(feature_flag_overrides)
90-
raise "Invalid feature flag name(s): #{feature_flag_overrides}" unless feature_flag_overrides.keys.to_set <= DEFAULT_FLAGS.keys.to_set
91-
raise "Invalid feature flag value(s): #{feature_flag_overrides}" unless feature_flag_overrides.values.all? { |item| item.is_a?(TrueClass) || item.is_a?(FalseClass) }
90+
invalid_keys = feature_flag_overrides.keys.to_set - FeatureFlag::DEFAULT_FLAGS.keys.to_set
91+
raise "Invalid feature flag name(s): #{invalid_keys.to_a}" if invalid_keys.any?
92+
93+
invalid_values = feature_flag_overrides.select { |k,v| !v.in? [true,false] }
94+
raise "Invalid feature flag value(s): #{invalid_values}" if invalid_values.any?
9295

9396
feature_flag_overrides.each do |flag_name, flag_value|
9497
feature_flag = FeatureFlag.find(name: flag_name.to_s)

spec/unit/models/runtime/feature_flag_spec.rb

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -291,27 +291,31 @@ module VCAP::CloudController
291291
describe '.override_default_flags' do
292292
context 'with invalid flags' do
293293
it 'raises an error for the one and only invalid name' do
294+
feature_flag_overrides = { an_invalid_name: true }
294295
expect do
295-
FeatureFlag.override_default_flags({ an_invalid_name: true })
296-
end.to raise_error(/Invalid feature flag name\(s\)/)
296+
FeatureFlag.override_default_flags(feature_flag_overrides)
297+
end.to raise_error("Invalid feature flag name(s): [:an_invalid_name]")
297298
end
298299

299300
it 'raises an error for a mix of valid and invalid names' do
301+
feature_flag_overrides = { diego_docker: true, an_invalid_name: true }
300302
expect do
301-
FeatureFlag.override_default_flags({ diego_docker: true, an_invalid_name: true })
302-
end.to raise_error(/Invalid feature flag name\(s\)/)
303+
FeatureFlag.override_default_flags(feature_flag_overrides)
304+
end.to raise_error("Invalid feature flag name(s): [:an_invalid_name]")
303305
end
304306

305307
it 'raises an error for all invalid names' do
308+
feature_flag_overrides = { invalid_name1: true, invalid_name2: false }
306309
expect do
307-
FeatureFlag.override_default_flags({ invalid_name1: true, invalid_name2: false })
308-
end.to raise_error(/Invalid feature flag name\(s\)/)
310+
FeatureFlag.override_default_flags(feature_flag_overrides)
311+
end.to raise_error("Invalid feature flag name(s): [:invalid_name1, :invalid_name2]")
309312
end
310313

311314
it 'raises an error for invalid values' do
315+
feature_flag_overrides = { diego_docker: 'an invalid value', user_org_creation: false }
312316
expect do
313-
FeatureFlag.override_default_flags({ diego_docker: 'an invalid value', user_org_creation: false })
314-
end.to raise_error(/Invalid feature flag value\(s\)/)
317+
FeatureFlag.override_default_flags(feature_flag_overrides)
318+
end.to raise_error("Invalid feature flag value(s): {:diego_docker=>\"an invalid value\"}")
315319
end
316320
end
317321

0 commit comments

Comments
 (0)