1
1
import { Actor , ProxyConfiguration } from 'apify' ;
2
2
import { UserClient } from 'apify-client' ;
3
- import { Request , sleep } from 'crawlee' ;
3
+ import { type Dictionary , Request , sleep } from 'crawlee' ;
4
4
5
5
import { APIFY_ENV_VARS , LOCAL_APIFY_ENV_VARS } from '@apify/consts' ;
6
6
@@ -140,12 +140,12 @@ describe('ProxyConfiguration', () => {
140
140
} ) ;
141
141
142
142
test ( 'should throw on invalid groups and countryCode args' , async ( ) => {
143
- // @ts -expect-error invalid input
144
143
expect (
144
+ // @ts -expect-error invalid input
145
145
( ) => new ProxyConfiguration ( { groups : [ new Date ( ) ] } ) ,
146
146
) . toThrowError ( ) ;
147
- // @ts -expect-error invalid input
148
147
expect (
148
+ // @ts -expect-error invalid input
149
149
( ) => new ProxyConfiguration ( { groups : [ { } , 'fff' , 'ccc' ] } ) ,
150
150
) . toThrowError ( ) ;
151
151
expect (
@@ -154,13 +154,13 @@ describe('ProxyConfiguration', () => {
154
154
expect (
155
155
( ) => new ProxyConfiguration ( { groups : [ 'ffff' , 'fff' , 'cc$c' ] } ) ,
156
156
) . toThrowError ( ) ;
157
- // @ts -expect-error invalid input
158
157
expect (
158
+ // @ts -expect-error invalid input
159
159
( ) => new ProxyConfiguration ( { apifyProxyGroups : [ new Date ( ) ] } ) ,
160
160
) . toThrowError ( ) ;
161
161
162
- // @ts -expect-error invalid input
163
162
expect (
163
+ // @ts -expect-error invalid input
164
164
( ) => new ProxyConfiguration ( { countryCode : new Date ( ) } ) ,
165
165
) . toThrow ( ) ;
166
166
expect ( ( ) => new ProxyConfiguration ( { countryCode : 'aa' } ) ) . toThrow ( ) ;
@@ -231,7 +231,7 @@ describe('ProxyConfiguration', () => {
231
231
'http://proxy.com:6666' ,
232
232
] ;
233
233
const newUrlFunction = ( ) => {
234
- return customUrls . pop ( ) ;
234
+ return customUrls . pop ( ) ?? null ;
235
235
} ;
236
236
const proxyConfiguration = new ProxyConfiguration ( {
237
237
newUrlFunction,
@@ -248,14 +248,15 @@ describe('ProxyConfiguration', () => {
248
248
'http://proxy.com:4444' ,
249
249
) ;
250
250
251
+ // TODO enable strictNullChecks in tests
251
252
// through newProxyInfo()
252
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
253
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ? .url ) . toEqual (
253
254
'http://proxy.com:3333' ,
254
255
) ;
255
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
256
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ? .url ) . toEqual (
256
257
'http://proxy.com:2222' ,
257
258
) ;
258
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
259
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ? .url ) . toEqual (
259
260
'http://proxy.com:1111' ,
260
261
) ;
261
262
} ) ;
@@ -271,7 +272,7 @@ describe('ProxyConfiguration', () => {
271
272
] ;
272
273
const newUrlFunction = async ( ) => {
273
274
await sleep ( 5 ) ;
274
- return customUrls . pop ( ) ;
275
+ return customUrls . pop ( ) ?? null ;
275
276
} ;
276
277
const proxyConfiguration = new ProxyConfiguration ( {
277
278
newUrlFunction,
@@ -289,13 +290,13 @@ describe('ProxyConfiguration', () => {
289
290
) ;
290
291
291
292
// through newProxyInfo()
292
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
293
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
293
294
'http://proxy.com:3333' ,
294
295
) ;
295
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
296
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
296
297
'http://proxy.com:2222' ,
297
298
) ;
298
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
299
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
299
300
'http://proxy.com:1111' ,
300
301
) ;
301
302
} ) ;
@@ -312,12 +313,12 @@ describe('ProxyConfiguration', () => {
312
313
313
314
// @ts -expect-error private property
314
315
const { proxyUrls } = proxyConfiguration ;
315
- expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls [ 0 ] ) ;
316
- expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls [ 1 ] ) ;
317
- expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls [ 2 ] ) ;
318
- expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls [ 0 ] ) ;
319
- expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls [ 1 ] ) ;
320
- expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls [ 2 ] ) ;
316
+ expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls ! [ 0 ] ) ;
317
+ expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls ! [ 1 ] ) ;
318
+ expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls ! [ 2 ] ) ;
319
+ expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls ! [ 0 ] ) ;
320
+ expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls ! [ 1 ] ) ;
321
+ expect ( await proxyConfiguration . newUrl ( ) ) . toEqual ( proxyUrls ! [ 2 ] ) ;
321
322
} ) ;
322
323
323
324
test ( 'newProxyInfo() should return correctly rotated URL' , async ( ) => {
@@ -331,23 +332,23 @@ describe('ProxyConfiguration', () => {
331
332
332
333
// @ts -expect-error TODO private property?
333
334
const { proxyUrls } = proxyConfiguration ;
334
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
335
- proxyUrls [ 0 ] ,
335
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
336
+ proxyUrls ! [ 0 ] ,
336
337
) ;
337
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
338
- proxyUrls [ 1 ] ,
338
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
339
+ proxyUrls ! [ 1 ] ,
339
340
) ;
340
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
341
- proxyUrls [ 2 ] ,
341
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
342
+ proxyUrls ! [ 2 ] ,
342
343
) ;
343
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
344
- proxyUrls [ 0 ] ,
344
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
345
+ proxyUrls ! [ 0 ] ,
345
346
) ;
346
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
347
- proxyUrls [ 1 ] ,
347
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
348
+ proxyUrls ! [ 1 ] ,
348
349
) ;
349
- expect ( ( await proxyConfiguration . newProxyInfo ( ) ) . url ) . toEqual (
350
- proxyUrls [ 2 ] ,
350
+ expect ( ( await proxyConfiguration . newProxyInfo ( ) ) ! . url ) . toEqual (
351
+ proxyUrls ! [ 2 ] ,
351
352
) ;
352
353
} ) ;
353
354
@@ -372,38 +373,38 @@ describe('ProxyConfiguration', () => {
372
373
const { proxyUrls } = proxyConfiguration ;
373
374
// should use same proxy URL
374
375
expect ( await proxyConfiguration . newUrl ( sessions [ 0 ] ) ) . toEqual (
375
- proxyUrls [ 0 ] ,
376
+ proxyUrls ! [ 0 ] ,
376
377
) ;
377
378
expect ( await proxyConfiguration . newUrl ( sessions [ 0 ] ) ) . toEqual (
378
- proxyUrls [ 0 ] ,
379
+ proxyUrls ! [ 0 ] ,
379
380
) ;
380
381
expect ( await proxyConfiguration . newUrl ( sessions [ 0 ] ) ) . toEqual (
381
- proxyUrls [ 0 ] ,
382
+ proxyUrls ! [ 0 ] ,
382
383
) ;
383
384
384
385
// should rotate different proxies
385
386
expect ( await proxyConfiguration . newUrl ( sessions [ 1 ] ) ) . toEqual (
386
- proxyUrls [ 1 ] ,
387
+ proxyUrls ! [ 1 ] ,
387
388
) ;
388
389
expect ( await proxyConfiguration . newUrl ( sessions [ 2 ] ) ) . toEqual (
389
- proxyUrls [ 2 ] ,
390
+ proxyUrls ! [ 2 ] ,
390
391
) ;
391
392
expect ( await proxyConfiguration . newUrl ( sessions [ 3 ] ) ) . toEqual (
392
- proxyUrls [ 0 ] ,
393
+ proxyUrls ! [ 0 ] ,
393
394
) ;
394
395
expect ( await proxyConfiguration . newUrl ( sessions [ 4 ] ) ) . toEqual (
395
- proxyUrls [ 1 ] ,
396
+ proxyUrls ! [ 1 ] ,
396
397
) ;
397
398
expect ( await proxyConfiguration . newUrl ( sessions [ 5 ] ) ) . toEqual (
398
- proxyUrls [ 2 ] ,
399
+ proxyUrls ! [ 2 ] ,
399
400
) ;
400
401
401
402
// should remember already used session
402
403
expect ( await proxyConfiguration . newUrl ( sessions [ 1 ] ) ) . toEqual (
403
- proxyUrls [ 1 ] ,
404
+ proxyUrls ! [ 1 ] ,
404
405
) ;
405
406
expect ( await proxyConfiguration . newUrl ( sessions [ 3 ] ) ) . toEqual (
406
- proxyUrls [ 0 ] ,
407
+ proxyUrls ! [ 0 ] ,
407
408
) ;
408
409
} ) ;
409
410
@@ -510,13 +511,11 @@ describe('ProxyConfiguration', () => {
510
511
511
512
// through newProxyInfo()
512
513
expect (
513
- (
514
- await proxyConfiguration . newProxyInfo ( 'abc' , {
515
- request : new Request ( {
516
- url : 'http://example.com' ,
517
- } ) as any ,
518
- } )
519
- ) . url ,
514
+ ( await proxyConfiguration . newProxyInfo ( 'abc' , {
515
+ request : new Request ( {
516
+ url : 'http://example.com' ,
517
+ } ) as any ,
518
+ } ) ) ! . url ,
520
519
) . toEqual ( 'http://proxy.com:1111' ) ;
521
520
} ) ;
522
521
@@ -594,7 +593,7 @@ describe('Actor.createProxyConfiguration()', () => {
594
593
595
594
test ( 'should work without password (with token)' , async ( ) => {
596
595
process . env . APIFY_TOKEN = '123456789' ;
597
- const opts = { ...basicOpts } ;
596
+ const opts : Dictionary = { ...basicOpts } ;
598
597
delete opts . password ;
599
598
600
599
const getUserSpy = vitest . spyOn ( UserClient . prototype , 'get' ) ;
@@ -743,20 +742,18 @@ describe('Actor.createProxyConfiguration()', () => {
743
742
744
743
// through newUrl()
745
744
expect (
746
- await proxyConfiguration . newUrl ( 'abc' , {
745
+ await proxyConfiguration ! . newUrl ( 'abc' , {
747
746
request : new Request ( { url : 'http://example.com' } ) as any ,
748
747
} ) ,
749
748
) . toEqual ( 'http://proxy.com:1111' ) ;
750
749
751
750
// through newProxyInfo()
752
751
expect (
753
- (
754
- await proxyConfiguration . newProxyInfo ( 'abc' , {
755
- request : new Request ( {
756
- url : 'http://example.com' ,
757
- } ) as any ,
758
- } )
759
- ) . url ,
752
+ ( await proxyConfiguration ! . newProxyInfo ( 'abc' , {
753
+ request : new Request ( {
754
+ url : 'http://example.com' ,
755
+ } ) as any ,
756
+ } ) ) ! . url ,
760
757
) . toEqual ( 'http://proxy.com:1111' ) ;
761
758
} ) ;
762
759
@@ -784,7 +781,7 @@ describe('Actor.createProxyConfiguration()', () => {
784
781
} ) ;
785
782
786
783
// eslint-disable-next-line dot-notation
787
- expect ( proxyConfiguration [ 'tieredProxyUrls' ] ) . toEqual ( [
784
+ expect ( proxyConfiguration ! [ 'tieredProxyUrls' ] ) . toEqual ( [
788
785
[
789
786
'http://groups-GROUP1,country-CZ:password@proxy.apify.com:8000' ,
790
787
] ,
0 commit comments