@@ -497,7 +497,7 @@ def test_none_returned_on_get_variant_call_with_bad_id(self):
497497 self .assertEqual (self .event_logger .log .call_count , 0 )
498498
499499 assert any (
500- "Partially loaded Decider: 1 features failed to load: {'test': 'invalid type: string \" 1\" , expected u32'}"
500+ "Partially loaded Decider: 1 features failed to load: {'test': 'Manifest parsing error: invalid type: string \" 1\" , expected u32'}"
501501 in x .getMessage ()
502502 for x in captured .records
503503 )
@@ -1481,6 +1481,59 @@ def test_get_variant_without_expose_with_HG_as_control_1_and_child_returns_none_
14811481 experiment_name = "hg" , variant = "control_1" , event_fields = event_fields
14821482 )
14831483
1484+ def test_get_variant_for_okta_groups (self ):
1485+ identifier = "t2_test"
1486+ bucket_val = "user_id"
1487+ group_overrides = {"variant_2" : {"EQ" : {"field" : "user_id" , "values" : ["$some_group_id" ]}}}
1488+
1489+ self .exp_base_config ["exp_1" ]["experiment" ].update ({"overrides" : [group_overrides ]})
1490+ # reset variant for override to make sure it's not organically bucketed into it
1491+ self .exp_base_config ["exp_1" ]["experiment" ].update (
1492+ {
1493+ "variants" : [
1494+ {"range_start" : 0.0 , "range_end" : 0.0 , "name" : "variant_2" },
1495+ ]
1496+ }
1497+ )
1498+
1499+ og_cfg = {
1500+ "$override_groups" : {
1501+ "id" : 1337 ,
1502+ "value" : {
1503+ "$some_group_id" : {
1504+ "name" : "some_group_id" ,
1505+ "values" : [identifier ],
1506+ "field" : "user_id" ,
1507+ }
1508+ },
1509+ "type" : "dynamic_config" ,
1510+ "version" : "1" ,
1511+ "enabled" : False ,
1512+ "owner" : "test" ,
1513+ "name" : "$override_group" ,
1514+ "value_type" : "Map" ,
1515+ "experiment" : {"experiment_version" : 1 },
1516+ },
1517+ }
1518+ self .exp_base_config .update (og_cfg )
1519+
1520+ with create_temp_config_file (self .exp_base_config ) as f :
1521+ decider = setup_decider (f , self .dc , self .mock_span , self .event_logger )
1522+
1523+ self .assertEqual (self .event_logger .log .call_count , 0 )
1524+ variant = decider .get_variant_for_identifier_without_expose (
1525+ experiment_name = "exp_1" , identifier = identifier , identifier_type = bucket_val
1526+ )
1527+ self .assertEqual (variant , "variant_2" )
1528+
1529+ self .dc ._user_id = identifier
1530+ decider = setup_decider (f , self .dc , self .mock_span , self .event_logger )
1531+ variant = decider .get_variant_without_expose (experiment_name = "exp_1" )
1532+ self .assertEqual (variant , "variant_2" )
1533+
1534+ # no exposures should be triggered
1535+ self .assertEqual (self .event_logger .log .call_count , 0 )
1536+
14841537
14851538class TestDeciderGetDynamicConfig (unittest .TestCase ):
14861539 def setUp (self ):
@@ -1574,6 +1627,18 @@ def test_get_map(self):
15741627 res = decider .get_string ("dc_1" )
15751628 self .assertEqual (res , "" )
15761629
1630+ def test_get_map_disabled (self ):
1631+ self .dc_base_config ["dc_1" ].update (
1632+ {"value_type" : "Map" , "value" : {"key" : "value" , "another_key" : "another_value" }}
1633+ )
1634+ self .dc_base_config ["dc_1" ].update ({"enabled" : False })
1635+
1636+ with create_temp_config_file (self .dc_base_config ) as f :
1637+ decider = setup_decider (f , self .dc , self .mock_span , self .event_logger )
1638+
1639+ res = decider .get_map ("dc_1" )
1640+ self .assertEqual (res , None )
1641+
15771642 def test_get_all_values (self ):
15781643 base_cfg = self .dc_base_config ["dc_1" ].copy ()
15791644
0 commit comments