Skip to content

Commit 9d03b6e

Browse files
authored
Merge pull request #39 from mindflayer/fix-ssl
Adding HTTPS test with urlopen().
2 parents dd42277 + 93619bb commit 9d03b6e

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

mocket/mocket.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,25 @@
3939

4040
class SuperFakeSSLContext(object):
4141
""" For Python 3.6 """
42-
class FakeSetter(object):
42+
class FakeSetter(int):
4343
def __set__(self, *args):
4444
pass
4545
options = FakeSetter()
46-
verify_mode = FakeSetter()
46+
verify_mode = FakeSetter(ssl.CERT_OPTIONAL)
4747

4848

4949
class FakeSSLContext(SuperFakeSSLContext):
50-
def __init__(self, sock=None, server_hostname=None, **kwargs):
51-
self.sock = sock
52-
self.sock._host = server_hostname
50+
def __init__(self, sock=None, server_hostname=None, *args, **kwargs):
51+
if isinstance(sock, MocketSocket):
52+
self.sock = sock
53+
self.sock._host = server_hostname
5354

5455
@staticmethod
55-
def fake_wrap_socket(sock, *args, **kwargs):
56+
def load_default_certs(*args, **kwargs):
57+
pass
58+
59+
@staticmethod
60+
def wrap_socket(sock, *args, **kwargs):
5661
return sock
5762

5863
def __getattr__(self, name):
@@ -246,7 +251,7 @@ def enable():
246251
socket.getaddrinfo = socket.__dict__['getaddrinfo'] = \
247252
lambda host, port, family=None, socktype=None, proto=None, flags=None: [(2, 1, 6, '', (host, port))]
248253
socket.inet_aton = socket.__dict__['inet_aton'] = socket.gethostbyname
249-
ssl.wrap_socket = ssl.__dict__['wrap_socket'] = FakeSSLContext.fake_wrap_socket
254+
ssl.wrap_socket = ssl.__dict__['wrap_socket'] = FakeSSLContext.wrap_socket
250255
ssl.SSLSocket = ssl.__dict__['SSLSocket'] = MocketSocket
251256
ssl.SSLContext = ssl.__dict__['SSLSocket'] = FakeSSLContext
252257

tests/test_https.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import json
2+
from . import urlopen
23

34
from mocket.mocket import mocketize
45
from mocket.mockhttp import Entry
6+
57
import requests
68
import pytest
79

@@ -27,6 +29,7 @@ def test_json(response):
2729
)
2830

2931
mocked_response = requests.get(url_to_mock).json()
30-
3132
assert response == mocked_response
3233

34+
mocked_response = json.loads(urlopen(url_to_mock).read().decode('utf-8'))
35+
assert response == mocked_response

0 commit comments

Comments
 (0)