mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
* fixes client ip detection for v6 * adds test for get_client_ip * Employ urlparse() to strip port numbers from IPs --------- Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
29 lines
1.3 KiB
Python
29 lines
1.3 KiB
Python
from django.test import TestCase, RequestFactory
|
|
|
|
from netaddr import IPAddress
|
|
from utilities.request import get_client_ip
|
|
|
|
|
|
class GetClientIPTests(TestCase):
|
|
def setUp(self):
|
|
self.factory = RequestFactory()
|
|
|
|
def test_ipv4_address(self):
|
|
request = self.factory.get('/', HTTP_X_FORWARDED_FOR='192.168.1.1')
|
|
self.assertEqual(get_client_ip(request), IPAddress('192.168.1.1'))
|
|
request = self.factory.get('/', HTTP_X_FORWARDED_FOR='192.168.1.1:8080')
|
|
self.assertEqual(get_client_ip(request), IPAddress('192.168.1.1'))
|
|
|
|
def test_ipv6_address(self):
|
|
request = self.factory.get('/', HTTP_X_FORWARDED_FOR='2001:db8::8a2e:370:7334')
|
|
self.assertEqual(get_client_ip(request), IPAddress('2001:db8::8a2e:370:7334'))
|
|
request = self.factory.get('/', HTTP_X_FORWARDED_FOR='[2001:db8::8a2e:370:7334]')
|
|
self.assertEqual(get_client_ip(request), IPAddress('2001:db8::8a2e:370:7334'))
|
|
request = self.factory.get('/', HTTP_X_FORWARDED_FOR='[2001:db8::8a2e:370:7334]:8080')
|
|
self.assertEqual(get_client_ip(request), IPAddress('2001:db8::8a2e:370:7334'))
|
|
|
|
def test_invalid_ip_address(self):
|
|
request = self.factory.get('/', HTTP_X_FORWARDED_FOR='invalid_ip')
|
|
with self.assertRaises(ValueError):
|
|
get_client_ip(request)
|