@@ -4640,3 +4640,47 @@ def test_multivariate_flag_consistency(self, patch_get):
46404640 self .assertEqual (feature_flag_match , results [i ])
46414641 else :
46424642 self .assertFalse (feature_flag_match )
4643+
4644+ @mock .patch ("posthog.client.decide" )
4645+ def test_feature_flag_case_insensitive (self , mock_decide ):
4646+ client = Client (api_key = FAKE_TEST_API_KEY , personal_api_key = FAKE_TEST_API_KEY )
4647+ client .feature_flags = [
4648+ {
4649+ "id" : 1 ,
4650+ "key" : "Beta-Feature" ,
4651+ "active" : True ,
4652+ "filters" : {
4653+ "groups" : [{"properties" : [], "rollout_percentage" : 100 }],
4654+ },
4655+ }
4656+ ]
4657+
4658+ # Test that flag evaluation works regardless of case
4659+ self .assertTrue (client .feature_enabled ("Beta-Feature" , "user1" ))
4660+ self .assertTrue (client .feature_enabled ("beta-feature" , "user1" ))
4661+ self .assertTrue (client .feature_enabled ("BETA-FEATURE" , "user1" ))
4662+
4663+ @mock .patch ("posthog.client.decide" )
4664+ def test_feature_flag_mixed_case_consistency (self , mock_decide ):
4665+ client = Client (api_key = FAKE_TEST_API_KEY , personal_api_key = FAKE_TEST_API_KEY )
4666+ client .feature_flags = [
4667+ {
4668+ "id" : 1 ,
4669+ "key" : "Beta-Feature" ,
4670+ "active" : True ,
4671+ "filters" : {
4672+ "groups" : [{"properties" : [], "rollout_percentage" : 100 }],
4673+ "payloads" : {
4674+ "true" : {"some" : "value" },
4675+ }
4676+ },
4677+ }
4678+ ]
4679+
4680+ # Test that flag evaluation and payload retrieval are consistent
4681+ # regardless of the case used
4682+ test_cases = ["Beta-Feature" , "beta-feature" , "BETA-FEATURE" , "bEtA-FeAtUrE" ]
4683+
4684+ for case in test_cases :
4685+ # Both the flag evaluation and payload retrieval should work
4686+ self .assertTrue (client .feature_enabled (case , "user1" ))
0 commit comments