From 54262d22efcb6a9937c38f6315a866f57c334772 Mon Sep 17 00:00:00 2001 From: ghelyar <3225358+ghelyar@users.noreply.github.com> Date: Mon, 8 Jul 2024 10:15:44 +0100 Subject: [PATCH] feat: remove Flagsmith targetingKey attribute Signed-off-by: ghelyar <3225358+ghelyar@users.noreply.github.com> --- .../FlagsmithProvider.cs | 14 +--------- .../FlagsmithProviderConfiguration.cs | 10 ------- .../IFlagsmithProviderConfiguration.cs | 5 ---- .../FlagsmithProviderTest.cs | 26 +------------------ 4 files changed, 2 insertions(+), 53 deletions(-) diff --git a/src/OpenFeature.Contrib.Providers.Flagsmith/FlagsmithProvider.cs b/src/OpenFeature.Contrib.Providers.Flagsmith/FlagsmithProvider.cs index ae78a0f9..66ee0fd9 100644 --- a/src/OpenFeature.Contrib.Providers.Flagsmith/FlagsmithProvider.cs +++ b/src/OpenFeature.Contrib.Providers.Flagsmith/FlagsmithProvider.cs @@ -65,24 +65,12 @@ public FlagsmithProvider(IFlagsmithProviderConfiguration providerOptions, IFlags private Task GetFlags(EvaluationContext ctx) { - string key = null; - if (ctx != null) - { - if (ctx.TargetingKey is string { Length: > 0 } targetingKey) - { - key = targetingKey; - } - else if (ctx.TryGetValue(Configuration.TargetingKey, out var value)) - { - key = value?.AsString; - } - } + var key = ctx?.TargetingKey; return string.IsNullOrEmpty(key) ? _flagsmithClient.GetEnvironmentFlags() : _flagsmithClient.GetIdentityFlags(key, ctx .AsDictionary() - .Where(x => x.Key != Configuration.TargetingKey) .Select(x => new Trait(x.Key, x.Value.AsObject) as ITrait) .ToList()); } diff --git a/src/OpenFeature.Contrib.Providers.Flagsmith/FlagsmithProviderConfiguration.cs b/src/OpenFeature.Contrib.Providers.Flagsmith/FlagsmithProviderConfiguration.cs index 164df947..67eea53a 100644 --- a/src/OpenFeature.Contrib.Providers.Flagsmith/FlagsmithProviderConfiguration.cs +++ b/src/OpenFeature.Contrib.Providers.Flagsmith/FlagsmithProviderConfiguration.cs @@ -5,16 +5,6 @@ /// public class FlagsmithProviderConfiguration : IFlagsmithProviderConfiguration { - /// - /// Default value for targeting key - /// - public const string DefaultTargetingKey = "targetingKey"; - - /// - /// Key that will be used as identity for Flagsmith requests. Default: "targetingKey" - /// - public string TargetingKey { get; set; } = DefaultTargetingKey; - /// public bool UsingBooleanConfigValue { get; set; } } diff --git a/src/OpenFeature.Contrib.Providers.Flagsmith/IFlagsmithProviderConfiguration.cs b/src/OpenFeature.Contrib.Providers.Flagsmith/IFlagsmithProviderConfiguration.cs index 4f594a30..61a1b111 100644 --- a/src/OpenFeature.Contrib.Providers.Flagsmith/IFlagsmithProviderConfiguration.cs +++ b/src/OpenFeature.Contrib.Providers.Flagsmith/IFlagsmithProviderConfiguration.cs @@ -7,11 +7,6 @@ namespace OpenFeature.Contrib.Providers.Flagsmith; /// public interface IFlagsmithProviderConfiguration { - /// - /// Key that will be used as identity for Flagsmith requests. - /// - public string TargetingKey { get; } - /// /// Determines whether to resolve a feature value as a boolean or use /// the isFeatureEnabled as the flag itself. These values will be false diff --git a/test/OpenFeature.Contrib.Providers.Flagsmith.Test/FlagsmithProviderTest.cs b/test/OpenFeature.Contrib.Providers.Flagsmith.Test/FlagsmithProviderTest.cs index 69677e4f..a16558d6 100644 --- a/test/OpenFeature.Contrib.Providers.Flagsmith.Test/FlagsmithProviderTest.cs +++ b/test/OpenFeature.Contrib.Providers.Flagsmith.Test/FlagsmithProviderTest.cs @@ -77,7 +77,7 @@ public async Task GetValue_ForEnabledFeatureWithEvaluationContext_ReturnCorrectV .Set("key4", date) .Set("key5", Structure.Empty) .Set("key6", 1.0) - .Set(FlagsmithProviderConfiguration.DefaultTargetingKey, "233"); + .SetTargetingKey("233"); // Act var result = await flagsmithProvider.ResolveBooleanValue("example-feature", false, contextBuilder.Build()); @@ -449,29 +449,5 @@ public async Task GetStructureValue_ForEnabledFeatureWithWrongFormatValue_Throws // Act and Assert await Assert.ThrowsAsync(() => flagsmithProvider.ResolveStructureValue("example-feature", defaultObject)); } - - [Theory] - [InlineData("property", "attribute", "property")] - [InlineData(null, "attribute", "attribute")] - [InlineData("", "attribute", "attribute")] - [InlineData("property", null, "property")] - [InlineData("property", "", "property")] - public async Task GetValue_WithTargetingKey_UsesPropertyOverAttribute(string property, string attribute, string expected) - { - // Arrange - var flagsmithClient = Substitute.For(); - var providerConfig = GetDefaultFlagsmithProviderConfigurationConfiguration(); - var flagsmithProvider = new FlagsmithProvider(providerConfig, flagsmithClient); - - var contextBuilder = EvaluationContext.Builder() - .SetTargetingKey(property) - .Set(FlagsmithProviderConfiguration.DefaultTargetingKey, attribute); - - // Act - await flagsmithProvider.ResolveBooleanValue("example-feature", false, contextBuilder.Build()); - - // Assert - await flagsmithClient.Received().GetIdentityFlags(expected, Arg.Any>()); - } } }