@@ -13,6 +13,7 @@ import (
13
13
ffclient "github.com/thomaspoignant/go-feature-flag"
14
14
"github.com/thomaspoignant/go-feature-flag/ffcontext"
15
15
"github.com/thomaspoignant/go-feature-flag/internal/flag"
16
+ "github.com/thomaspoignant/go-feature-flag/model"
16
17
"github.com/thomaspoignant/go-feature-flag/retriever"
17
18
"github.com/thomaspoignant/go-feature-flag/retriever/fileretriever"
18
19
"github.com/thomaspoignant/go-feature-flag/retriever/s3retriever"
@@ -663,3 +664,45 @@ func Test_PersistFlagConfigurationOnDisk(t *testing.T) {
663
664
assert .NoError (t , err )
664
665
assert .NotEqual (t , contentP2 , contentP3 )
665
666
}
667
+
668
+ func Test_UseCustomBucketingKey (t * testing.T ) {
669
+ gffClient , err := ffclient .New (ffclient.Config {
670
+ PollingInterval : 1 * time .Second ,
671
+ Retriever : & fileretriever.Retriever {Path : "testdata/flag-config-custom-bucketingkey.yaml" },
672
+ LeveledLogger : slog .Default (),
673
+ Offline : false ,
674
+ })
675
+ assert .NoError (t , err )
676
+
677
+ {
678
+ got , err := gffClient .StringVariationDetails ("my-flag" , ffcontext .NewEvaluationContext ("random-key" ), "default" )
679
+ assert .NoError (t , err )
680
+ want := model.VariationResult [string ]{
681
+ Value : "default" ,
682
+ TrackEvents : true ,
683
+ VariationType : "SdkDefault" ,
684
+ Failed : true ,
685
+ Reason : flag .ReasonError ,
686
+ ErrorCode : flag .ErrorCodeTargetingKeyMissing ,
687
+ ErrorDetails : "invalid bucketing key" ,
688
+ }
689
+ assert .Equal (t , want , got )
690
+ }
691
+
692
+ {
693
+ got , err := gffClient .StringVariationDetails (
694
+ "my-flag" ,
695
+ ffcontext .NewEvaluationContextBuilder ("random-key" ).AddCustom ("teamId" , "team-123" ).Build (),
696
+ "default" )
697
+ assert .NoError (t , err )
698
+ want := model.VariationResult [string ]{
699
+ Value : "value_A" ,
700
+ TrackEvents : true ,
701
+ VariationType : "variation_A" ,
702
+ Failed : false ,
703
+ Reason : flag .ReasonStatic ,
704
+ Cacheable : true ,
705
+ }
706
+ assert .Equal (t , want , got )
707
+ }
708
+ }
0 commit comments