@@ -45,6 +45,18 @@ describe('EppoClient E2E test', () => {
45
45
} ) as jest . Mock ;
46
46
const storage = new MemoryOnlyConfigurationStore < Flag | ObfuscatedFlag > ( ) ;
47
47
48
+ /**
49
+ * Use this helper instead of directly setting entries on the `storage` ConfigurationStore.
50
+ * This method ensures the format field is set as it is required for parsing.
51
+ * @param entries
52
+ */
53
+ function setUnobfuscatedFlagEntries (
54
+ entries : Record < string , Flag | ObfuscatedFlag > ,
55
+ ) : Promise < boolean > {
56
+ storage . setFormat ( FormatEnum . SERVER ) ;
57
+ return storage . setEntries ( entries ) ;
58
+ }
59
+
48
60
beforeAll ( async ( ) => {
49
61
await initConfiguration ( storage ) ;
50
62
} ) ;
@@ -88,7 +100,7 @@ describe('EppoClient E2E test', () => {
88
100
let client : EppoClient ;
89
101
90
102
beforeAll ( ( ) => {
91
- storage . setEntries ( { [ flagKey ] : mockFlag } ) ;
103
+ setUnobfuscatedFlagEntries ( { [ flagKey ] : mockFlag } ) ;
92
104
client = new EppoClient ( { flagConfigurationStore : storage } ) ;
93
105
94
106
td . replace ( EppoClient . prototype , 'getAssignmentDetail' , function ( ) {
@@ -144,7 +156,7 @@ describe('EppoClient E2E test', () => {
144
156
145
157
describe ( 'setLogger' , ( ) => {
146
158
beforeAll ( ( ) => {
147
- storage . setEntries ( { [ flagKey ] : mockFlag } ) ;
159
+ setUnobfuscatedFlagEntries ( { [ flagKey ] : mockFlag } ) ;
148
160
} ) ;
149
161
150
162
it ( 'Invokes logger for queued events' , ( ) => {
@@ -192,7 +204,7 @@ describe('EppoClient E2E test', () => {
192
204
193
205
describe ( 'precomputed flags' , ( ) => {
194
206
beforeAll ( ( ) => {
195
- storage . setEntries ( {
207
+ setUnobfuscatedFlagEntries ( {
196
208
[ flagKey ] : mockFlag ,
197
209
disabledFlag : { ...mockFlag , enabled : false } ,
198
210
anotherFlag : {
@@ -424,11 +436,10 @@ describe('EppoClient E2E test', () => {
424
436
) ;
425
437
} ) ;
426
438
427
- it ( 'logs variation assignment and experiment key' , ( ) => {
439
+ it ( 'logs variation assignment and experiment key' , async ( ) => {
428
440
const mockLogger = td . object < IAssignmentLogger > ( ) ;
429
441
430
- storage . setEntries ( { [ flagKey ] : mockFlag } ) ;
431
- storage . setFormat ( FormatEnum . SERVER )
442
+ await setUnobfuscatedFlagEntries ( { [ flagKey ] : mockFlag } ) ;
432
443
const client = new EppoClient ( { flagConfigurationStore : storage } ) ;
433
444
client . setAssignmentLogger ( mockLogger ) ;
434
445
@@ -450,11 +461,11 @@ describe('EppoClient E2E test', () => {
450
461
expect ( loggedAssignmentEvent . allocation ) . toEqual ( mockFlag . allocations [ 0 ] . key ) ;
451
462
} ) ;
452
463
453
- it ( 'handles logging exception' , ( ) => {
464
+ it ( 'handles logging exception' , async ( ) => {
454
465
const mockLogger = td . object < IAssignmentLogger > ( ) ;
455
466
td . when ( mockLogger . logAssignment ( td . matchers . anything ( ) ) ) . thenThrow ( new Error ( 'logging error' ) ) ;
456
467
457
- storage . setEntries ( { [ flagKey ] : mockFlag } ) ;
468
+ await setUnobfuscatedFlagEntries ( { [ flagKey ] : mockFlag } ) ;
458
469
const client = new EppoClient ( { flagConfigurationStore : storage } ) ;
459
470
client . setAssignmentLogger ( mockLogger ) ;
460
471
@@ -469,8 +480,8 @@ describe('EppoClient E2E test', () => {
469
480
expect ( assignment ) . toEqual ( 'variation-a' ) ;
470
481
} ) ;
471
482
472
- it ( 'exports flag configuration' , ( ) => {
473
- storage . setEntries ( { [ flagKey ] : mockFlag } ) ;
483
+ it ( 'exports flag configuration' , async ( ) => {
484
+ await setUnobfuscatedFlagEntries ( { [ flagKey ] : mockFlag } ) ;
474
485
const client = new EppoClient ( { flagConfigurationStore : storage } ) ;
475
486
expect ( client . getFlagConfigurations ( ) ) . toEqual ( { [ flagKey ] : mockFlag } ) ;
476
487
} ) ;
@@ -479,10 +490,10 @@ describe('EppoClient E2E test', () => {
479
490
let client : EppoClient ;
480
491
let mockLogger : IAssignmentLogger ;
481
492
482
- beforeEach ( ( ) => {
493
+ beforeEach ( async ( ) => {
483
494
mockLogger = td . object < IAssignmentLogger > ( ) ;
484
495
485
- storage . setEntries ( { [ flagKey ] : mockFlag } ) ;
496
+ await setUnobfuscatedFlagEntries ( { [ flagKey ] : mockFlag } ) ;
486
497
client = new EppoClient ( { flagConfigurationStore : storage } ) ;
487
498
client . setAssignmentLogger ( mockLogger ) ;
488
499
} ) ;
@@ -537,7 +548,7 @@ describe('EppoClient E2E test', () => {
537
548
} ) ;
538
549
539
550
it ( 'logs for each unique flag' , async ( ) => {
540
- await storage . setEntries ( {
551
+ await setUnobfuscatedFlagEntries ( {
541
552
[ flagKey ] : mockFlag ,
542
553
'flag-2' : {
543
554
...mockFlag ,
@@ -564,10 +575,10 @@ describe('EppoClient E2E test', () => {
564
575
expect ( td . explain ( mockLogger . logAssignment ) . callCount ) . toEqual ( 3 ) ;
565
576
} ) ;
566
577
567
- it ( 'logs twice for the same flag when allocations change' , ( ) => {
578
+ it ( 'logs twice for the same flag when allocations change' , async ( ) => {
568
579
client . useNonExpiringInMemoryAssignmentCache ( ) ;
569
580
570
- storage . setEntries ( {
581
+ setUnobfuscatedFlagEntries ( {
571
582
[ flagKey ] : {
572
583
...mockFlag ,
573
584
@@ -588,7 +599,7 @@ describe('EppoClient E2E test', () => {
588
599
} ) ;
589
600
client . getStringAssignment ( flagKey , 'subject-10' , { } , 'default' ) ;
590
601
591
- storage . setEntries ( {
602
+ await setUnobfuscatedFlagEntries ( {
592
603
[ flagKey ] : {
593
604
...mockFlag ,
594
605
allocations : [
@@ -614,13 +625,13 @@ describe('EppoClient E2E test', () => {
614
625
client . useNonExpiringInMemoryAssignmentCache ( ) ;
615
626
616
627
// original configuration version
617
- storage . setEntries ( { [ flagKey ] : mockFlag } ) ;
628
+ setUnobfuscatedFlagEntries ( { [ flagKey ] : mockFlag } ) ;
618
629
619
630
client . getStringAssignment ( flagKey , 'subject-10' , { } , 'default' ) ; // log this assignment
620
631
client . getStringAssignment ( flagKey , 'subject-10' , { } , 'default' ) ; // cache hit, don't log
621
632
622
633
// change the variation
623
- storage . setEntries ( {
634
+ setUnobfuscatedFlagEntries ( {
624
635
[ flagKey ] : {
625
636
...mockFlag ,
626
637
allocations : [
@@ -643,13 +654,13 @@ describe('EppoClient E2E test', () => {
643
654
client . getStringAssignment ( flagKey , 'subject-10' , { } , 'default' ) ; // cache hit, don't log
644
655
645
656
// change the flag again, back to the original
646
- storage . setEntries ( { [ flagKey ] : mockFlag } ) ;
657
+ setUnobfuscatedFlagEntries ( { [ flagKey ] : mockFlag } ) ;
647
658
648
659
client . getStringAssignment ( flagKey , 'subject-10' , { } , 'default' ) ; // important: log this assignment
649
660
client . getStringAssignment ( flagKey , 'subject-10' , { } , 'default' ) ; // cache hit, don't log
650
661
651
662
// change the allocation
652
- storage . setEntries ( {
663
+ setUnobfuscatedFlagEntries ( {
653
664
[ flagKey ] : {
654
665
...mockFlag ,
655
666
allocations : [
0 commit comments