@@ -497,7 +497,7 @@ def test_none_returned_on_get_variant_call_with_bad_id(self):
497
497
self .assertEqual (self .event_logger .log .call_count , 0 )
498
498
499
499
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'}"
501
501
in x .getMessage ()
502
502
for x in captured .records
503
503
)
@@ -1481,6 +1481,59 @@ def test_get_variant_without_expose_with_HG_as_control_1_and_child_returns_none_
1481
1481
experiment_name = "hg" , variant = "control_1" , event_fields = event_fields
1482
1482
)
1483
1483
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
+
1484
1537
1485
1538
class TestDeciderGetDynamicConfig (unittest .TestCase ):
1486
1539
def setUp (self ):
@@ -1574,6 +1627,18 @@ def test_get_map(self):
1574
1627
res = decider .get_string ("dc_1" )
1575
1628
self .assertEqual (res , "" )
1576
1629
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
+
1577
1642
def test_get_all_values (self ):
1578
1643
base_cfg = self .dc_base_config ["dc_1" ].copy ()
1579
1644
0 commit comments