@@ -53,9 +53,29 @@ const noNodataNames = [
53
53
if ( process . browser )
54
54
return ;
55
55
56
+ function checkUBversion ( string ) {
57
+ const digits = string . split ( '.' ) ;
58
+
59
+ // Require support for ED448, at least version 1.8.x
60
+ if ( parseInt ( digits [ 0 ] ) > 1 )
61
+ return true ;
62
+
63
+ if ( parseInt ( digits [ 0 ] ) < 1 )
64
+ return false ;
65
+
66
+ if ( parseInt ( digits [ 1 ] ) < 8 )
67
+ return false ;
68
+
69
+ return true ;
70
+ }
71
+
56
72
describe ( 'Recursive' , function ( ) {
57
73
this . timeout ( 20000 ) ;
58
74
75
+ it ( `should return the version of libunbound: ${ udns . version } ` , ( ) => {
76
+ ;
77
+ } ) ;
78
+
59
79
for ( const Resolver of [ RecursiveResolver , UnboundResolver ] ) {
60
80
it ( 'should do a recursive resolution' , async ( ) => {
61
81
const res = new Resolver ( {
@@ -84,63 +104,65 @@ describe('Recursive', function() {
84
104
}
85
105
86
106
for ( const dns of [ rdns , udns ] ) {
87
- for ( const name of dnssecNames ) {
88
- if ( name === 'ed25519.nl' || name === 'ed448.nl' ) {
89
- if ( dns === udns && udns . version < '1.8.1' )
90
- continue ;
107
+ describe ( `${ dns === rdns ? 'JavaScript' : 'Unbound' } ` , function ( ) {
108
+ for ( const name of dnssecNames ) {
109
+ if ( name === 'ed25519.nl' || name === 'ed448.nl' ) {
110
+ if ( dns === udns && ! checkUBversion ( udns . version ) )
111
+ continue ;
112
+ }
113
+
114
+ it ( `should validate trust chain for ${ name } ` , async ( ) => {
115
+ const res = await dns . resolveRaw ( name , types . A ) ;
116
+ assert . strictEqual ( res . code , codes . NOERROR ) ;
117
+ assert ( res . answer . length > 0 ) ;
118
+ assert ( res . ad ) ;
119
+ } ) ;
91
120
}
92
121
93
- it ( `should validate trust chain for ${ name } ` , async ( ) => {
94
- const res = await dns . resolveRaw ( name , types . A ) ;
95
- assert . strictEqual ( res . code , codes . NOERROR ) ;
96
- assert ( res . answer . length > 0 ) ;
97
- assert ( res . ad ) ;
98
- } ) ;
99
- }
100
-
101
- for ( const name of nxNames ) {
102
- it ( `should validate NX proof for ${ name } ` , async ( ) => {
103
- const res = await dns . resolveRaw ( name , types . A ) ;
104
- assert . strictEqual ( res . code , codes . NXDOMAIN ) ;
105
- assert ( res . answer . length === 0 ) ;
106
- assert ( res . ad ) ;
107
- } ) ;
108
- }
109
-
110
- for ( const name of nodataNames ) {
111
- it ( `should validate NODATA proof for ${ name } ` , async ( ) => {
112
- const res = await dns . resolveRaw ( name , types . WKS ) ;
113
- assert . strictEqual ( res . code , codes . NOERROR ) ;
114
- assert ( res . answer . length === 0 ) ;
115
- assert ( res . ad ) ;
116
- } ) ;
117
- }
118
-
119
- for ( const name of noDnssecNames ) {
120
- it ( `should fail to validate trust chain for ${ name } ` , async ( ) => {
121
- const res = await dns . resolveRaw ( name , types . A ) ;
122
- assert . strictEqual ( res . code , codes . NOERROR ) ;
123
- assert ( res . answer . length > 0 ) ;
124
- assert ( ! res . ad ) ;
125
- } ) ;
126
- }
127
-
128
- for ( const name of noNxNames ) {
129
- it ( `should fail to validate NX proof for ${ name } ` , async ( ) => {
130
- const res = await dns . resolveRaw ( name , types . A ) ;
131
- assert . strictEqual ( res . code , codes . NXDOMAIN ) ;
132
- assert ( res . answer . length === 0 ) ;
133
- assert ( ! res . ad ) ;
134
- } ) ;
135
- }
136
-
137
- for ( const name of noNodataNames ) {
138
- it ( `should fail to validate NODATA proof for ${ name } ` , async ( ) => {
139
- const res = await dns . resolveRaw ( name , types . WKS ) ;
140
- assert . strictEqual ( res . code , codes . NOERROR ) ;
141
- assert ( res . answer . length === 0 ) ;
142
- assert ( ! res . ad ) ;
143
- } ) ;
144
- }
122
+ for ( const name of nxNames ) {
123
+ it ( `should validate NX proof for ${ name } ` , async ( ) => {
124
+ const res = await dns . resolveRaw ( name , types . A ) ;
125
+ assert . strictEqual ( res . code , codes . NXDOMAIN ) ;
126
+ assert ( res . answer . length === 0 ) ;
127
+ assert ( res . ad ) ;
128
+ } ) ;
129
+ }
130
+
131
+ for ( const name of nodataNames ) {
132
+ it ( `should validate NODATA proof for ${ name } ` , async ( ) => {
133
+ const res = await dns . resolveRaw ( name , types . WKS ) ;
134
+ assert . strictEqual ( res . code , codes . NOERROR ) ;
135
+ assert ( res . answer . length === 0 ) ;
136
+ assert ( res . ad ) ;
137
+ } ) ;
138
+ }
139
+
140
+ for ( const name of noDnssecNames ) {
141
+ it ( `should fail to validate trust chain for ${ name } ` , async ( ) => {
142
+ const res = await dns . resolveRaw ( name , types . A ) ;
143
+ assert . strictEqual ( res . code , codes . NOERROR ) ;
144
+ assert ( res . answer . length > 0 ) ;
145
+ assert ( ! res . ad ) ;
146
+ } ) ;
147
+ }
148
+
149
+ for ( const name of noNxNames ) {
150
+ it ( `should fail to validate NX proof for ${ name } ` , async ( ) => {
151
+ const res = await dns . resolveRaw ( name , types . A ) ;
152
+ assert . strictEqual ( res . code , codes . NXDOMAIN ) ;
153
+ assert ( res . answer . length === 0 ) ;
154
+ assert ( ! res . ad ) ;
155
+ } ) ;
156
+ }
157
+
158
+ for ( const name of noNodataNames ) {
159
+ it ( `should fail to validate NODATA proof for ${ name } ` , async ( ) => {
160
+ const res = await dns . resolveRaw ( name , types . WKS ) ;
161
+ assert . strictEqual ( res . code , codes . NOERROR ) ;
162
+ assert ( res . answer . length === 0 ) ;
163
+ assert ( ! res . ad ) ;
164
+ } ) ;
165
+ }
166
+ } ) ;
145
167
}
146
168
} ) ;
0 commit comments