@@ -4,17 +4,37 @@ import {
4
4
parseRateLimit ,
5
5
} from '../source/ratelimit-header-parser.js'
6
6
7
+ const itif = ( condition : boolean ) => ( condition ? it : it . skip )
8
+
7
9
describe ( 'parseRateLimitHeaders' , ( ) => {
8
- it ( 'should handle X-RateLimit-* headers in a fetch Headers object' , ( ) => {
9
- const headers = new Headers ( {
10
- 'X-RateLimit-Limit' : '100' ,
11
- 'X-RateLimit-Remaining' : '70' ,
12
- 'X-RateLimit-Reset' : Math . floor ( Date . now ( ) / 1000 ) . toString ( ) ,
13
- } )
10
+ // Note: Headers doesn't exist in node 16 or older
11
+ itif ( typeof Headers !== 'undefined' ) (
12
+ 'should handle X-RateLimit-* headers in a fetch Headers object' ,
13
+ ( ) => {
14
+ const headers = new Headers ( {
15
+ 'X-RateLimit-Limit' : '100' ,
16
+ 'X-RateLimit-Remaining' : '70' ,
17
+ 'X-RateLimit-Reset' : Math . floor ( Date . now ( ) / 1000 ) . toString ( ) ,
18
+ } )
19
+ expect ( parseRateLimit ( headers ) ) . toMatchObject ( {
20
+ limit : 100 ,
21
+ remaining : 70 ,
22
+ used : 30 ,
23
+ reset : expect . any ( Date ) , // Todo: mock the clock, then match to a specific date
24
+ } )
25
+ } ,
26
+ )
27
+
28
+ it ( 'should handle RateLimit-* headers in a node-style headers object' , ( ) => {
29
+ const headers = {
30
+ 'ratelimit-limit' : '60' ,
31
+ 'ratelimit-remaining' : '20' ,
32
+ 'ratelimit-reset' : new Date ( ) . toISOString ( ) ,
33
+ }
14
34
expect ( parseRateLimit ( headers ) ) . toMatchObject ( {
15
- limit : 100 ,
16
- remaining : 70 ,
17
- used : 30 ,
35
+ limit : 60 ,
36
+ remaining : 20 ,
37
+ used : 40 ,
18
38
reset : expect . any ( Date ) , // Todo: mock the clock, then match to a specific date
19
39
} )
20
40
} )
0 commit comments