@@ -357,6 +357,23 @@ describe('fetchUsageData error handling', () => {
357357 disabled_reason : null
358358 }
359359 } ) ;
360+ // Mirrors a real Enterprise-account response: every rate-limit window is
361+ // null because Enterprise plans have no 5-hour/7-day windows (#343).
362+ const enterpriseNullWindowsResponseBody = JSON . stringify ( {
363+ five_hour : null ,
364+ seven_day : null ,
365+ seven_day_oauth_apps : null ,
366+ seven_day_sonnet : null ,
367+ seven_day_opus : null ,
368+ extra_usage : {
369+ is_enabled : true ,
370+ monthly_limit : 50000 ,
371+ used_credits : 0 ,
372+ utilization : null ,
373+ currency : 'USD' ,
374+ disabled_reason : null
375+ }
376+ } ) ;
360377 const rateLimitedResponseBody = JSON . stringify ( {
361378 error : {
362379 message : 'Rate limited. Please try again later.' ,
@@ -717,6 +734,52 @@ describe('fetchUsageData error handling', () => {
717734 }
718735 } ) ;
719736
737+ it ( 'treats null rate-limit windows as complete for window reset fields' , ( ) => {
738+ const harness = createProbeHarness ( ) ;
739+
740+ try {
741+ const home = harness . createTokenHome ( 'enterprise-null-windows' ) ;
742+ const requiredFields = [ 'sessionUsage' , 'sessionResetAt' , 'weeklyUsage' , 'weeklyResetAt' , 'weeklySonnetResetAt' , 'weeklyOpusResetAt' ] ;
743+ const result = harness . runProbe ( {
744+ claudeConfigDir : home . claudeConfig ,
745+ home : home . home ,
746+ mode : 'success' ,
747+ nowMs,
748+ pathDir : home . bin ,
749+ requiredFields,
750+ responseBody : enterpriseNullWindowsResponseBody
751+ } ) ;
752+
753+ expect ( result . first ) . toEqual ( {
754+ sessionUsage : 0 ,
755+ weeklyUsage : 0 ,
756+ weeklySonnetUsage : 0 ,
757+ weeklyOpusUsage : 0 ,
758+ extraUsageEnabled : true ,
759+ extraUsageLimit : 50000 ,
760+ extraUsageCurrency : 'USD' ,
761+ extraUsageUsed : 0
762+ } ) ;
763+ expect ( result . second ) . toEqual ( result . first ) ;
764+ expect ( result . requestCount ) . toBe ( 1 ) ;
765+
766+ const cachedResult = harness . runProbe ( {
767+ claudeConfigDir : home . claudeConfig ,
768+ home : home . home ,
769+ mode : 'unexpected' ,
770+ nowMs : nowMs + 10000 ,
771+ pathDir : home . bin ,
772+ requiredFields
773+ } ) ;
774+
775+ expect ( cachedResult . first ) . toEqual ( result . first ) ;
776+ expect ( cachedResult . second ) . toEqual ( result . first ) ;
777+ expect ( cachedResult . requestCount ) . toBe ( 0 ) ;
778+ } finally {
779+ harness . cleanup ( ) ;
780+ }
781+ } ) ;
782+
720783 it ( 'keeps parse-error locks distinct from timeout locks' , ( ) => {
721784 const harness = createProbeHarness ( ) ;
722785
0 commit comments