|
9 | 9 | from mocket import Mocket, MocketEntry, Mocketizer, mocketize |
10 | 10 | from mocket.mockhttp import Entry |
11 | 11 | from mocket.socket import MocketSocket |
12 | | -from mocket.ssl.context import MocketSSLContext |
| 12 | +from mocket.ssl.context import MocketSSLContext, mock_wrap_socket |
13 | 13 | from mocket.ssl.socket import MocketSSLSocket |
| 14 | +from mocket.urllib3 import mock_match_hostname |
14 | 15 |
|
15 | 16 |
|
16 | 17 | @pytest.mark.parametrize("blocking", (False, True)) |
@@ -163,6 +164,33 @@ def test_wrap_bio_preserves_empty_server_hostname_on_getpeercert(monkeypatch): |
163 | 164 | assert ssl_obj._address == ("", 443) |
164 | 165 |
|
165 | 166 |
|
| 167 | +def test_wrap_bio_with_invalid_mocket_address(monkeypatch): |
| 168 | + monkeypatch.setattr(Mocket, "_address", "invalid-address") |
| 169 | + ssl_obj = MocketSSLContext().wrap_bio( |
| 170 | + incoming=None, |
| 171 | + outgoing=None, |
| 172 | + server_hostname=None, |
| 173 | + ) |
| 174 | + |
| 175 | + assert ssl_obj._host is None |
| 176 | + assert ssl_obj._port is None |
| 177 | + |
| 178 | + |
| 179 | +def test_mock_wrap_socket_delegates_to_context(monkeypatch): |
| 180 | + expected = MocketSSLSocket() |
| 181 | + |
| 182 | + def fake_wrap_socket(self, sock, *args, **kwargs): |
| 183 | + return expected |
| 184 | + |
| 185 | + monkeypatch.setattr(MocketSSLContext, "wrap_socket", fake_wrap_socket) |
| 186 | + |
| 187 | + assert mock_wrap_socket(MocketSocket()) is expected |
| 188 | + |
| 189 | + |
| 190 | +def test_mock_match_hostname_returns_none(): |
| 191 | + assert mock_match_hostname("example.org", object()) is None |
| 192 | + |
| 193 | + |
166 | 194 | def test_getpeercert_does_not_overwrite_empty_host_when_port_missing(monkeypatch): |
167 | 195 | monkeypatch.setattr(Mocket, "_address", ("httpbin.local", 443)) |
168 | 196 | ssl_obj = MocketSSLSocket() |
|
0 commit comments