@@ -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,58 @@ 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 ({"variants" : [{"range_start" : 0.0 , "range_end" : 0.0 , "name" : "variant_2" },]})
1492+
1493+ og_cfg = {
1494+ "$override_groups" : {
1495+ "id" : 1337 ,
1496+ "value" : {
1497+ "$some_group_id" : {
1498+ "name" : "some_group_id" ,
1499+ "values" : [identifier ],
1500+ "field" : "user_id" ,
1501+ }
1502+ },
1503+ "type" : "dynamic_config" ,
1504+ "version" : "1" ,
1505+ "enabled" : False ,
1506+ "owner" : "test" ,
1507+ "name" : "$override_group" ,
1508+ "value_type" : "Map" ,
1509+ "experiment" : {
1510+ "experiment_version" : 1
1511+ }
1512+ },
1513+ }
1514+ self .exp_base_config .update (og_cfg )
1515+
1516+ with create_temp_config_file (self .exp_base_config ) as f :
1517+ decider = setup_decider (f , self .dc , self .mock_span , self .event_logger )
1518+
1519+ self .assertEqual (self .event_logger .log .call_count , 0 )
1520+ variant = decider .get_variant_for_identifier_without_expose (
1521+ experiment_name = "exp_1" , identifier = identifier , identifier_type = bucket_val
1522+ )
1523+ self .assertEqual (variant , "variant_2" )
1524+
1525+ self .dc ._user_id = identifier
1526+ decider = setup_decider (f , self .dc , self .mock_span , self .event_logger )
1527+ variant = decider .get_variant_without_expose (experiment_name = "exp_1" )
1528+ self .assertEqual (variant , "variant_2" )
1529+
1530+ # no exposures should be triggered
1531+ self .assertEqual (self .event_logger .log .call_count , 0 )
1532+
1533+ def test_get_variant_for_okta_groups_non_user_id_identifier (self ):
1534+ pass
1535+
14841536
14851537class TestDeciderGetDynamicConfig (unittest .TestCase ):
14861538 def setUp (self ):
0 commit comments