Skip to content

Commit d5c7ae9

Browse files
committed
add tests
1 parent e81cad0 commit d5c7ae9

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

spec/Middlewares.spec.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,41 @@ describe('middlewares', () => {
152152
);
153153
});
154154

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+
155190
it('can allow all with masterKeyIPs', async () => {
156191
const combinations = [
157192
{

src/middlewares.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const getMountForRequest = function (req) {
2323
return req.protocol + '://' + req.get('host') + mountPath;
2424
};
2525

26-
const checkIpRanges = (ip, ranges = []) => {
26+
export const checkIpRanges = (ip, ranges = []) => {
2727
const getType = address => (isIPv4(address) ? 'ipv4' : 'ipv6');
2828
const clientType = getType(ip);
2929
const blocklist = new BlockList();

0 commit comments

Comments
 (0)