Skip to content

AppConfiguration new features consistency checklist #2801

@pakrym

Description

@pakrym

These scenarios are written for FeatureFlag but most of them apply to the KeyVault reference we should make sure behaviors are the same for both.

It might also be a good idea to codify these in tests.

Updating JSON via the value

  1. Get a feature flag using the client
  2. Set the Value to a feature-flag compatible JSON
  3. Save the feature flag

C#: works, stores the updated value
Java: works, stores the updated value
Python: works, stores updated value
JS: works, stores the updated value

Setting value to incompatible JSON

  1. Get a feature flag using the client
  2. Set the Value to "[]" JSON value (non-valid feature-flag body)
  3. Save the feature flag

C#: works, stores the updated value. The next load retrieves the setting as FeatureFlag but all strongly typed properties throw on access
Java: works, stores the udpated value Returns a ConfigurationSetting instead of a FeatureFlagConfigurationSetting
Python: works, stored updated value. Returns a ConfigurationSetting instead of a FeatureFlagConfigurationSetting
JS: works, stores the updated value, Next load - parseFeatureFlag throws since it can't be parsed

Settings value to non-JSON

  1. Get a feature flag using the client
  2. Set the Value to Hello world (no quotes)
  3. Save the feature flag

C#: works, stores the updated value. The next load retrieves the setting as FeatureFlag but all strongly typed properties throw on access
Java: works, stores the updated value. Returns a ConfigurationSetting instead of a FeatureFlagConfigurationSetting
Python: works, stored updated value. Returns a ConfigurationSetting instead of a FeatureFlagConfigurationSetting
JS: works, stores the updated value. Next load - parseFeatureFlag throws since it can't be parsed

Changing the strongly-typed properties after setting the value to non-valid feature flag

  1. Create a feature flag
  2. Set the Value to Hello world (no quotes)
  3. Set some strongly typed properties

C#: Value is updated. Strongly typed properties throw on access.
Java: value is updated Strongly typed properties throw on access.
Python: Value is updated. Properties throw ValueError on access.
JS: Value is updated. parseFeatureFlag throws since the value can't be parsed

Accessing strongly typed properties after setting a different feature flag JSON

  1. Create a feature flag
  2. Set the Value to some pre-populated
  3. Access strongly-typed property values

C#: Value is updated. Strongly typed properties return new values out of the parsed JSON
Java: value is updated. Strongly typed properties return new values out of the parsed JSON
Python: Value is updated, properties return new values out of the parsed JSON, returns None if it is not present.
JS: value is updated, parseFeatureFlag does parse the new value

Accessing value after changing strongly-typed properties.

  1. Create a feature flag
  2. Change a strongly-typed property
  3. Does the Value reflect the change?

C#: Yes
Java: Yes
Python: Yes
JS: Yes

Create a FeatureFlag

  1. Create a feature flag
  2. Is featureFlag.Key prefixed with ".appconfig.featureflag/"?

C#: Yes
Java: Yes
Python: Yes
JS: Yes (if the user doesn't provide the prefix, the SDK adds it)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions