@@ -152,6 +152,41 @@ describe('middlewares', () => {
152
152
) ;
153
153
} ) ;
154
154
155
+ it ( 'should match address' , ( ) => {
156
+ const ipv6 = '2001:0db8:85a3:0000:0000:8a2e:0370:7334' ;
157
+ const anotherIpv6 = '::ffff:101.10.0.1' ;
158
+ const ipv4 = '192.168.0.101' ;
159
+ const localhostV6 = '::1' ;
160
+ const localhostV62 = '::ffff:127.0.0.1' ;
161
+ const localhostV4 = '127.0.0.1' ;
162
+
163
+ const v6 = [ ipv6 , anotherIpv6 ] ;
164
+ v6 . forEach ( ip => {
165
+ expect ( middlewares . checkIpRanges ( ip , [ '::/0' ] ) ) . toBe ( true ) ;
166
+ expect ( middlewares . checkIpRanges ( ip , [ '::' ] ) ) . toBe ( true ) ;
167
+ expect ( middlewares . checkIpRanges ( ip , [ '0.0.0.0' ] ) ) . toBe ( false ) ;
168
+ expect ( middlewares . checkIpRanges ( ip , [ '123.123.123.123' ] ) ) . toBe ( false ) ;
169
+ } ) ;
170
+
171
+ expect ( middlewares . checkIpRanges ( ipv6 , [ anotherIpv6 ] ) ) . toBe ( false ) ;
172
+ expect ( middlewares . checkIpRanges ( ipv6 , [ ipv6 ] ) ) . toBe ( true ) ;
173
+ expect ( middlewares . checkIpRanges ( ipv6 , [ '2001:db8:85a3:0:0:8a2e:0:0/100' ] ) ) . toBe ( true ) ;
174
+
175
+ expect ( middlewares . checkIpRanges ( ipv4 , [ '::' ] ) ) . toBe ( false ) ;
176
+ expect ( middlewares . checkIpRanges ( ipv4 , [ '::/0' ] ) ) . toBe ( true ) ;
177
+ expect ( middlewares . checkIpRanges ( ipv4 , [ '0.0.0.0' ] ) ) . toBe ( true ) ;
178
+ expect ( middlewares . checkIpRanges ( ipv4 , [ '123.123.123.123' ] ) ) . toBe ( false ) ;
179
+ expect ( middlewares . checkIpRanges ( ipv4 , [ ipv4 ] ) ) . toBe ( true ) ;
180
+ expect ( middlewares . checkIpRanges ( ipv4 , [ '192.168.0.0/24' ] ) ) . toBe ( true ) ;
181
+
182
+ expect ( middlewares . checkIpRanges ( localhostV4 , [ '::1' ] ) ) . toBe ( false ) ;
183
+ expect ( middlewares . checkIpRanges ( localhostV6 , [ '::1' ] ) ) . toBe ( true ) ;
184
+ // ::ffff:127.0.0.1 is a padded ipv4 address but not ::1
185
+ expect ( middlewares . checkIpRanges ( localhostV62 , [ '::1' ] ) ) . toBe ( false ) ;
186
+ // ::ffff:127.0.0.1 is a padded ipv4 address and is a match for 127.0.0.1
187
+ expect ( middlewares . checkIpRanges ( localhostV62 , [ '127.0.0.1' ] ) ) . toBe ( true ) ;
188
+ } ) ;
189
+
155
190
it ( 'can allow all with masterKeyIPs' , async ( ) => {
156
191
const combinations = [
157
192
{
0 commit comments