diff --git a/synapse/api/auth/base.py b/synapse/api/auth/base.py index c63607a6a6..e78ad7b21b 100644 --- a/synapse/api/auth/base.py +++ b/synapse/api/auth/base.py @@ -314,7 +314,8 @@ class BaseAuth: client_address, IPv6Address ): logger.error( - "Unable to view IP address of the requester. Check that you are setting the X-Forwarded-For header correctly in your reverse proxy. Assuming '127.0.0.1'" + "Unable to view IP address of the requester. " \ + "Check that you are setting the X-Forwarded-For header correctly in your reverse proxy." ) raise SynapseError( HTTPStatus.INTERNAL_SERVER_ERROR, diff --git a/tests/api/test_auth.py b/tests/api/test_auth.py index e7fcd928d7..1907a33112 100644 --- a/tests/api/test_auth.py +++ b/tests/api/test_auth.py @@ -23,6 +23,7 @@ from unittest.mock import AsyncMock, Mock import pymacaroons +from twisted.internet.address import IPv4Address from twisted.internet.testing import MemoryReactor from synapse.api.auth.internal import InternalAuth @@ -118,7 +119,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.get_user_by_access_token = AsyncMock(return_value=None) request = Mock(args={}) - request.getClientAddress.return_value.host = "127.0.0.1" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) request.args[b"access_token"] = [self.test_token] request.requestHeaders.getRawHeaders = mock_getRawHeaders() requester = self.get_success(self.auth.get_user_by_req(request)) @@ -137,7 +138,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.get_user_by_access_token = AsyncMock(return_value=None) request = Mock(args={}) - request.getClientAddress.return_value.host = "192.168.10.10" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="192.168.10.10", port=12345) request.args[b"access_token"] = [self.test_token] request.requestHeaders.getRawHeaders = mock_getRawHeaders() requester = self.get_success(self.auth.get_user_by_req(request)) @@ -156,7 +157,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.get_user_by_access_token = AsyncMock(return_value=None) request = Mock(args={}) - request.getClientAddress.return_value.host = "131.111.8.42" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="131.111.8.42", port=12345) request.args[b"access_token"] = [self.test_token] request.requestHeaders.getRawHeaders = mock_getRawHeaders() f = self.get_failure( @@ -209,7 +210,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.get_user_by_access_token = AsyncMock(return_value=None) request = Mock(args={}) - request.getClientAddress.return_value.host = "127.0.0.1" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) request.args[b"access_token"] = [self.test_token] request.args[b"user_id"] = [masquerading_user_id] request.requestHeaders.getRawHeaders = mock_getRawHeaders() @@ -231,7 +232,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.get_user_by_access_token = AsyncMock(return_value=None) request = Mock(args={}) - request.getClientAddress.return_value.host = "127.0.0.1" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) request.args[b"access_token"] = [self.test_token] request.args[b"user_id"] = [masquerading_user_id] request.requestHeaders.getRawHeaders = mock_getRawHeaders() @@ -261,7 +262,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.get_device = AsyncMock(return_value={"hidden": False}) request = Mock(args={}) - request.getClientAddress.return_value.host = "127.0.0.1" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) request.args[b"access_token"] = [self.test_token] request.args[b"user_id"] = [masquerading_user_id] request.args[b"org.matrix.msc3202.device_id"] = [masquerading_device_id] @@ -296,7 +297,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.get_device = AsyncMock(return_value=None) request = Mock(args={}) - request.getClientAddress.return_value.host = "127.0.0.1" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) request.args[b"access_token"] = [self.test_token] request.args[b"user_id"] = [masquerading_user_id] request.args[b"org.matrix.msc3202.device_id"] = [masquerading_device_id] @@ -320,7 +321,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.mark_access_token_as_used = AsyncMock(return_value=None) self.store.get_user_locked_status = AsyncMock(return_value=False) request = Mock(args={}) - request.getClientAddress.return_value.host = "127.0.0.1" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) request.args[b"access_token"] = [self.test_token] request.requestHeaders.getRawHeaders = mock_getRawHeaders() self.get_success(self.auth.get_user_by_req(request)) @@ -341,7 +342,7 @@ class AuthTestCase(unittest.HomeserverTestCase): self.store.insert_client_ip = AsyncMock(return_value=None) self.store.mark_access_token_as_used = AsyncMock(return_value=None) request = Mock(args={}) - request.getClientAddress.return_value.host = "127.0.0.1" + request.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) request.args[b"access_token"] = [self.test_token] request.requestHeaders.getRawHeaders = mock_getRawHeaders() self.get_success(self.auth.get_user_by_req(request)) diff --git a/tests/handlers/test_cas.py b/tests/handlers/test_cas.py index f677f3be2a..1135b38f2f 100644 --- a/tests/handlers/test_cas.py +++ b/tests/handlers/test_cas.py @@ -21,6 +21,7 @@ from typing import Any, Dict from unittest.mock import AsyncMock, Mock +from twisted.internet.address import IPv4Address from twisted.internet.testing import MemoryReactor from synapse.handlers.cas import CasResponse @@ -234,6 +235,7 @@ def _mock_request() -> Mock: "write", ] ) + mock.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) # `_disconnected` musn't be another `Mock`, otherwise it will be truthy. mock._disconnected = False return mock diff --git a/tests/handlers/test_oidc.py b/tests/handlers/test_oidc.py index 5207382f00..37a006fa0f 100644 --- a/tests/handlers/test_oidc.py +++ b/tests/handlers/test_oidc.py @@ -25,6 +25,7 @@ from urllib.parse import parse_qs, urlparse import pymacaroons +from twisted.internet.address import IPv4Address from twisted.internet.testing import MemoryReactor from synapse.handlers.sso import MappingException @@ -1684,5 +1685,5 @@ def _build_callback_request( request.args = {} request.args[b"code"] = [code.encode("utf-8")] request.args[b"state"] = [state.encode("utf-8")] - request.getClientAddress.return_value.host = ip_address + request.getClientAddress.return_value = IPv4Address(type="TCP", host=ip_address, port=12345) return request diff --git a/tests/handlers/test_saml.py b/tests/handlers/test_saml.py index f7cbf91113..77c07564d9 100644 --- a/tests/handlers/test_saml.py +++ b/tests/handlers/test_saml.py @@ -24,6 +24,7 @@ from unittest.mock import AsyncMock, Mock import attr +from twisted.internet.address import IPv4Address from twisted.internet.testing import MemoryReactor from synapse.api.errors import RedirectException @@ -424,4 +425,5 @@ def _mock_request() -> Mock: ) # `_disconnected` musn't be another `Mock`, otherwise it will be truthy. mock._disconnected = False + mock.getClientAddress.return_value = IPv4Address(type="TCP", host="127.0.0.1", port=12345) return mock