5
5
import ssl
6
6
7
7
import urllib3
8
- from urllib3 .connection import match_hostname as urllib3_match_hostname
9
- from urllib3 .util .ssl_ import ssl_wrap_socket as urllib3_ssl_wrap_socket
10
-
11
- try :
12
- from urllib3 .util .ssl_ import wrap_socket as urllib3_wrap_socket
13
- except ImportError :
14
- urllib3_wrap_socket = None
15
-
16
8
17
9
try : # pragma: no cover
18
10
from urllib3 .contrib .pyopenssl import extract_from_urllib3 , inject_into_urllib3
21
13
except ImportError :
22
14
pyopenssl_override = False
23
15
24
- true_socket = socket .socket
25
- true_create_connection = socket .create_connection
26
- true_gethostbyname = socket .gethostbyname
27
- true_gethostname = socket .gethostname
28
- true_getaddrinfo = socket .getaddrinfo
29
- true_socketpair = socket .socketpair
30
- true_ssl_wrap_socket = getattr (
31
- ssl , "wrap_socket" , None
32
- ) # from Py3.12 it's only under SSLContext
33
- true_ssl_socket = ssl .SSLSocket
34
- true_ssl_context = ssl .SSLContext
35
- true_inet_pton = socket .inet_pton
36
- true_urllib3_wrap_socket = urllib3_wrap_socket
37
- true_urllib3_ssl_wrap_socket = urllib3_ssl_wrap_socket
38
- true_urllib3_match_hostname = urllib3_match_hostname
39
-
40
16
41
17
def enable (
42
18
namespace : str | None = None ,
43
19
truesocket_recording_dir : str | None = None ,
44
20
skip_response_cache : bool = False ,
45
21
) -> None :
46
22
from mocket .mocket import Mocket
47
- from mocket .socket import MocketSocket , create_connection , socketpair
48
- from mocket .ssl import FakeSSLContext
23
+ from mocket .socket import (
24
+ MocketSocket ,
25
+ mock_create_connection ,
26
+ mock_getaddrinfo ,
27
+ mock_gethostbyname ,
28
+ mock_gethostname ,
29
+ mock_inet_pton ,
30
+ mock_socketpair ,
31
+ mock_urllib3_match_hostname ,
32
+ )
33
+ from mocket .ssl .context import MocketSSLContext
49
34
50
35
Mocket ._namespace = namespace
51
36
Mocket ._truesocket_recording_dir = truesocket_recording_dir
@@ -58,42 +43,54 @@ def enable(
58
43
socket .socket = socket .__dict__ ["socket" ] = MocketSocket
59
44
socket ._socketobject = socket .__dict__ ["_socketobject" ] = MocketSocket
60
45
socket .SocketType = socket .__dict__ ["SocketType" ] = MocketSocket
61
- socket .create_connection = socket .__dict__ ["create_connection" ] = create_connection
62
- socket .gethostname = socket .__dict__ ["gethostname" ] = lambda : "localhost"
63
- socket .gethostbyname = socket .__dict__ ["gethostbyname" ] = lambda host : "127.0.0.1"
64
- socket .getaddrinfo = socket .__dict__ ["getaddrinfo" ] = (
65
- lambda host , port , family = None , socktype = None , proto = None , flags = None : [
66
- (2 , 1 , 6 , "" , (host , port ))
67
- ]
68
- )
69
- socket .socketpair = socket .__dict__ ["socketpair" ] = socketpair
70
- ssl .wrap_socket = ssl .__dict__ ["wrap_socket" ] = FakeSSLContext .wrap_socket
71
- ssl .SSLContext = ssl .__dict__ ["SSLContext" ] = FakeSSLContext
72
- socket .inet_pton = socket .__dict__ ["inet_pton" ] = lambda family , ip : bytes (
73
- "\x7f \x00 \x00 \x01 " , "utf-8"
46
+ socket .create_connection = socket .__dict__ ["create_connection" ] = (
47
+ mock_create_connection
74
48
)
49
+ socket .gethostname = socket .__dict__ ["gethostname" ] = mock_gethostname
50
+ socket .gethostbyname = socket .__dict__ ["gethostbyname" ] = mock_gethostbyname
51
+ socket .getaddrinfo = socket .__dict__ ["getaddrinfo" ] = mock_getaddrinfo
52
+ socket .socketpair = socket .__dict__ ["socketpair" ] = mock_socketpair
53
+ ssl .wrap_socket = ssl .__dict__ ["wrap_socket" ] = MocketSSLContext .wrap_socket
54
+ ssl .SSLContext = ssl .__dict__ ["SSLContext" ] = MocketSSLContext
55
+ socket .inet_pton = socket .__dict__ ["inet_pton" ] = mock_inet_pton
75
56
urllib3 .util .ssl_ .wrap_socket = urllib3 .util .ssl_ .__dict__ ["wrap_socket" ] = (
76
- FakeSSLContext .wrap_socket
57
+ MocketSSLContext .wrap_socket
77
58
)
78
59
urllib3 .util .ssl_ .ssl_wrap_socket = urllib3 .util .ssl_ .__dict__ [
79
60
"ssl_wrap_socket"
80
- ] = FakeSSLContext .wrap_socket
61
+ ] = MocketSSLContext .wrap_socket
81
62
urllib3 .util .ssl_wrap_socket = urllib3 .util .__dict__ ["ssl_wrap_socket" ] = (
82
- FakeSSLContext .wrap_socket
63
+ MocketSSLContext .wrap_socket
83
64
)
84
65
urllib3 .connection .ssl_wrap_socket = urllib3 .connection .__dict__ [
85
66
"ssl_wrap_socket"
86
- ] = FakeSSLContext .wrap_socket
67
+ ] = MocketSSLContext .wrap_socket
87
68
urllib3 .connection .match_hostname = urllib3 .connection .__dict__ [
88
69
"match_hostname"
89
- ] = lambda * args : None
70
+ ] = mock_urllib3_match_hostname
90
71
if pyopenssl_override : # pragma: no cover
91
72
# Take out the pyopenssl version - use the default implementation
92
73
extract_from_urllib3 ()
93
74
94
75
95
76
def disable () -> None :
96
77
from mocket .mocket import Mocket
78
+ from mocket .socket import (
79
+ true_create_connection ,
80
+ true_getaddrinfo ,
81
+ true_gethostbyname ,
82
+ true_gethostname ,
83
+ true_inet_pton ,
84
+ true_socket ,
85
+ true_socketpair ,
86
+ true_urllib3_match_hostname ,
87
+ )
88
+ from mocket .ssl .context import (
89
+ true_ssl_context ,
90
+ true_ssl_wrap_socket ,
91
+ true_urllib3_ssl_wrap_socket ,
92
+ true_urllib3_wrap_socket ,
93
+ )
97
94
98
95
socket .socket = socket .__dict__ ["socket" ] = true_socket
99
96
socket ._socketobject = socket .__dict__ ["_socketobject" ] = true_socket
0 commit comments