mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-10-31 16:13:15 +00:00
32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
vi.mock('@/lib/admin/session', () => ({ getClientIP: () => '127.0.0.1' }));
|
|
|
|
import { forwardedClientHeaders } from '@/lib/auth/client-address';
|
|
|
|
describe('forwardedClientHeaders', () => {
|
|
it('forwards a client address', () => {
|
|
expect(forwardedClientHeaders('203.0.113.7')).toEqual({ 'X-Forwarded-For': '203.0.113.7' });
|
|
expect(forwardedClientHeaders('10.0.0.5')).toEqual({ 'X-Forwarded-For': '10.0.0.5' });
|
|
expect(forwardedClientHeaders('2001:db8::1')).toEqual({ 'X-Forwarded-For': '2001:db8::1' });
|
|
});
|
|
|
|
it('forwards nothing for a missing or malformed address', () => {
|
|
expect(forwardedClientHeaders(undefined)).toEqual({});
|
|
expect(forwardedClientHeaders('')).toEqual({});
|
|
expect(forwardedClientHeaders('0.0.0.0')).toEqual({});
|
|
expect(forwardedClientHeaders('::')).toEqual({});
|
|
expect(forwardedClientHeaders('not-an-ip')).toEqual({});
|
|
});
|
|
|
|
// Stalwart 1.0 with `clientIpSource: xForwardedFor` (what stalwart-migrate
|
|
// sets for a 0.16 server that used X-Forwarded-For) answers 400 Bad Request
|
|
// to any request whose forwarded client is a loopback address. 0.16 took it.
|
|
it('forwards nothing for a loopback address', () => {
|
|
expect(forwardedClientHeaders('127.0.0.1')).toEqual({});
|
|
expect(forwardedClientHeaders('127.8.9.10')).toEqual({});
|
|
expect(forwardedClientHeaders('::1')).toEqual({});
|
|
expect(forwardedClientHeaders('::ffff:127.0.0.1')).toEqual({});
|
|
});
|
|
});
|