def testTrustedProxies(self): TEST_ENVIRON = { 'REQUEST_METHOD': 'GET', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '80', 'REMOTE_ADDR': '127.0.0.1', 'HTTP_X_FORWARDED_FOR': '10.1.20.30, 192.168.1.100', } from StringIO import StringIO from ZPublisher.HTTPRequest import HTTPRequest, trusted_proxies s = StringIO('') env = TEST_ENVIRON.copy() request = HTTPRequest(s, env, None) self.assertEqual(request.getClientAddr(), '127.0.0.1') trusted_proxies.append('127.0.0.1') request = HTTPRequest(s, env, None) self.assertEqual(request.getClientAddr(), '192.168.1.100') trusted_proxies[0] = '192.168.1.100' env = TEST_ENVIRON.copy() env['REMOTE_ADDR'] = '192.168.1.100' request = HTTPRequest(s, env, None) self.assertEqual(request.getClientAddr(), '10.1.20.30') env = TEST_ENVIRON.copy() del env['REMOTE_ADDR'] request = HTTPRequest(s, env, None) self.assertEqual(request.getClientAddr(), '')
def test_getClientAddr_trusted_proxy_no_REMOTE_ADDR(self): from ZPublisher.HTTPRequest import trusted_proxies env = {'HTTP_X_FORWARDED_FOR': '10.1.20.30, 192.168.1.100'} orig = trusted_proxies[:] try: trusted_proxies.append('192.168.1.100') request = self._makeOne(environ=env) self.assertEqual(request.getClientAddr(), '') finally: trusted_proxies[:] = orig