@@ -12,6 +12,26 @@ const { Resolver } = dns.promises;
12
12
//
13
13
// NOTE: tests won't work if you're behind a VPN with DNS blackholed
14
14
//
15
+ test . before ( async ( t ) => {
16
+ // attempt to setServers and perform a DNS lookup
17
+ const tangerine = new Tangerine ( ) ;
18
+ const resolver = new Resolver ( { timeout : 3000 , tries : 1 } ) ;
19
+ resolver . setServers ( tangerine . getServers ( ) ) ;
20
+
21
+ t . deepEqual ( resolver . getServers ( ) , tangerine . getServers ( ) ) ;
22
+
23
+ try {
24
+ t . log ( 'Testing VPN with DNS blackhole' ) ;
25
+ await resolver . resolve ( 'cloudflare.com' , 'A' ) ;
26
+ } catch ( err ) {
27
+ if ( err . code === dns . TIMEOUT ) {
28
+ t . context . isBlackholed = true ;
29
+ t . log ( 'VPN with DNS blackholed detected' ) ;
30
+ } else {
31
+ throw err ;
32
+ }
33
+ }
34
+ } ) ;
15
35
16
36
// new Tangerine(options)
17
37
test ( 'instance' , ( t ) => {
@@ -47,24 +67,22 @@ test('getServers and setServers', (t) => {
47
67
t . deepEqual ( tangerine . getServers ( ) , resolver . getServers ( ) ) ;
48
68
} ) ;
49
69
50
- test . todo ( 'getServers with ::0 returns accurate response' ) ;
51
- // test('getServers with ::0 returns accurate response', (t) => {
52
- // const servers = ['1.1.1.1', '::0'];
70
+ test . todo ( 'getServers with [::0] returns accurate response' ) ;
71
+ // test('getServers with [::0] returns accurate response', (t) => {
72
+ // const servers = ['1.1.1.1', '[::0]'];
73
+ // const tangerine = new Tangerine();
74
+ // const resolver = new Resolver();
53
75
// resolver.setServers(servers);
54
76
// tangerine.setServers(servers);
55
- // // t.log('tangerine.getServers', tangerine.getServers());
56
- // // t.log('resolver.getServers', resolver.getServers());
57
77
// t.deepEqual(tangerine.getServers(), resolver.getServers());
58
78
// });
59
79
60
80
test ( 'getServers with IPv6 returns accurate response' , ( t ) => {
61
81
const tangerine = new Tangerine ( ) ;
62
82
const resolver = new Resolver ( ) ;
63
- const servers = [ '1.1.1.1' , '2606:4700:4700::1002 ' ] ;
83
+ const servers = [ '1.1.1.1' , '2001:db8::1:80' , '[2001:db8::1]:8080 '] ;
64
84
resolver . setServers ( servers ) ;
65
85
tangerine . setServers ( servers ) ;
66
- // t.log('tangerine.getServers', tangerine.getServers());
67
- // t.log('resolver.getServers', resolver.getServers());
68
86
t . deepEqual ( tangerine . getServers ( ) , resolver . getServers ( ) ) ;
69
87
} ) ;
70
88
@@ -230,7 +248,7 @@ for (const host of [
230
248
test ( `resolve("${ host } ")` , async ( t ) => {
231
249
const tangerine = new Tangerine ( ) ;
232
250
const resolver = new Resolver ( ) ;
233
- resolver . setServers ( tangerine . getServers ( ) ) ;
251
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
234
252
let r1 = await tangerine . resolve ( host ) ;
235
253
let r2 = await resolver . resolve ( host ) ;
236
254
// see explanation below regarding this under "A" and "AAAA" in switch/case
@@ -245,7 +263,7 @@ for (const host of [
245
263
const resolver = new Resolver ( ) ;
246
264
247
265
// mirror DNS servers for accuracy (e.g. SOA)
248
- resolver . setServers ( tangerine . getServers ( ) ) ;
266
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
249
267
250
268
let h = host ;
251
269
if ( type === 'SRV' ) {
@@ -277,7 +295,7 @@ for (const host of [
277
295
test ( `resolve4("${ host } ")` , async ( t ) => {
278
296
const tangerine = new Tangerine ( ) ;
279
297
const resolver = new Resolver ( ) ;
280
- resolver . setServers ( tangerine . getServers ( ) ) ;
298
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
281
299
let r1 ;
282
300
try {
283
301
r1 = await tangerine . resolve4 ( host ) ;
@@ -299,7 +317,7 @@ for (const host of [
299
317
test ( `resolve6("${ host } ")` , async ( t ) => {
300
318
const tangerine = new Tangerine ( ) ;
301
319
const resolver = new Resolver ( ) ;
302
- resolver . setServers ( tangerine . getServers ( ) ) ;
320
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
303
321
let r1 ;
304
322
try {
305
323
r1 = await tangerine . resolve6 ( host ) ;
@@ -321,7 +339,7 @@ for (const host of [
321
339
test ( `resolveAny("${ host } ")` , async ( t ) => {
322
340
const tangerine = new Tangerine ( ) ;
323
341
const resolver = new Resolver ( ) ;
324
- resolver . setServers ( tangerine . getServers ( ) ) ;
342
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
325
343
326
344
let r1 ;
327
345
try {
@@ -344,7 +362,7 @@ for (const host of [
344
362
test ( `resolveCaa("${ host } ")` , async ( t ) => {
345
363
const tangerine = new Tangerine ( ) ;
346
364
const resolver = new Resolver ( ) ;
347
- resolver . setServers ( tangerine . getServers ( ) ) ;
365
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
348
366
349
367
let r1 ;
350
368
try {
@@ -367,7 +385,7 @@ for (const host of [
367
385
test ( `resolveCname("${ host } ")` , async ( t ) => {
368
386
const tangerine = new Tangerine ( ) ;
369
387
const resolver = new Resolver ( ) ;
370
- resolver . setServers ( tangerine . getServers ( ) ) ;
388
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
371
389
372
390
let r1 ;
373
391
try {
@@ -390,7 +408,7 @@ for (const host of [
390
408
test ( `resolveMx("${ host } ")` , async ( t ) => {
391
409
const tangerine = new Tangerine ( ) ;
392
410
const resolver = new Resolver ( ) ;
393
- resolver . setServers ( tangerine . getServers ( ) ) ;
411
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
394
412
395
413
let r1 ;
396
414
try {
@@ -413,7 +431,7 @@ for (const host of [
413
431
test ( `resolveNaptr("${ host } ")` , async ( t ) => {
414
432
const tangerine = new Tangerine ( ) ;
415
433
const resolver = new Resolver ( ) ;
416
- resolver . setServers ( tangerine . getServers ( ) ) ;
434
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
417
435
418
436
let r1 ;
419
437
try {
@@ -436,7 +454,7 @@ for (const host of [
436
454
test ( `resolveNs("${ host } ")` , async ( t ) => {
437
455
const tangerine = new Tangerine ( ) ;
438
456
const resolver = new Resolver ( ) ;
439
- resolver . setServers ( tangerine . getServers ( ) ) ;
457
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
440
458
441
459
let r1 ;
442
460
try {
@@ -459,7 +477,7 @@ for (const host of [
459
477
test ( `resolvePtr("${ host } ")` , async ( t ) => {
460
478
const tangerine = new Tangerine ( ) ;
461
479
const resolver = new Resolver ( ) ;
462
- resolver . setServers ( tangerine . getServers ( ) ) ;
480
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
463
481
464
482
let r1 ;
465
483
try {
@@ -482,7 +500,7 @@ for (const host of [
482
500
test ( `resolveSoa("${ host } ")` , async ( t ) => {
483
501
const tangerine = new Tangerine ( ) ;
484
502
const resolver = new Resolver ( ) ;
485
- resolver . setServers ( tangerine . getServers ( ) ) ;
503
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
486
504
487
505
let r1 ;
488
506
try {
@@ -505,7 +523,7 @@ for (const host of [
505
523
test ( `resolveSrv("${ host } ")` , async ( t ) => {
506
524
const tangerine = new Tangerine ( ) ;
507
525
const resolver = new Resolver ( ) ;
508
- resolver . setServers ( tangerine . getServers ( ) ) ;
526
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
509
527
510
528
let r1 ;
511
529
try {
@@ -528,7 +546,7 @@ for (const host of [
528
546
test ( `resolveTxt("${ host } ")` , async ( t ) => {
529
547
const tangerine = new Tangerine ( ) ;
530
548
const resolver = new Resolver ( ) ;
531
- resolver . setServers ( tangerine . getServers ( ) ) ;
549
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
532
550
533
551
let r1 ;
534
552
try {
@@ -564,7 +582,7 @@ test('reverse', async (t) => {
564
582
// returns an array of reversed hostnames from IP address
565
583
const tangerine = new Tangerine ( ) ;
566
584
const resolver = new Resolver ( ) ;
567
- resolver . setServers ( tangerine . getServers ( ) ) ;
585
+ if ( ! t . context . isBlackholed ) resolver . setServers ( tangerine . getServers ( ) ) ;
568
586
569
587
let r1 ;
570
588
try {
0 commit comments