From 567cbf9101d952012195f2b682722b86e0005bbc Mon Sep 17 00:00:00 2001 From: Giorgio Salluzzo Date: Fri, 30 Dec 2016 11:48:38 +0100 Subject: [PATCH 1/2] Adding HTTPS test with urlopen(). --- mocket/mocket.py | 12 ++++++++---- tests/test_https.py | 5 ++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/mocket/mocket.py b/mocket/mocket.py index 0b65dfff..1239acf8 100644 --- a/mocket/mocket.py +++ b/mocket/mocket.py @@ -39,11 +39,11 @@ class SuperFakeSSLContext(object): """ For Python 3.6 """ - class FakeSetter(object): + class FakeSetter(int): def __set__(self, *args): pass options = FakeSetter() - verify_mode = FakeSetter() + verify_mode = FakeSetter(ssl.CERT_OPTIONAL) class FakeSSLContext(SuperFakeSSLContext): @@ -52,7 +52,11 @@ def __init__(self, sock=None, server_hostname=None, **kwargs): self.sock._host = server_hostname @staticmethod - def fake_wrap_socket(sock, *args, **kwargs): + def load_default_certs(*args, **kwargs): + pass + + @staticmethod + def wrap_socket(sock, *args, **kwargs): return sock def __getattr__(self, name): @@ -246,7 +250,7 @@ def enable(): socket.getaddrinfo = socket.__dict__['getaddrinfo'] = \ lambda host, port, family=None, socktype=None, proto=None, flags=None: [(2, 1, 6, '', (host, port))] socket.inet_aton = socket.__dict__['inet_aton'] = socket.gethostbyname - ssl.wrap_socket = ssl.__dict__['wrap_socket'] = FakeSSLContext.fake_wrap_socket + ssl.wrap_socket = ssl.__dict__['wrap_socket'] = FakeSSLContext.wrap_socket ssl.SSLSocket = ssl.__dict__['SSLSocket'] = MocketSocket ssl.SSLContext = ssl.__dict__['SSLSocket'] = FakeSSLContext diff --git a/tests/test_https.py b/tests/test_https.py index e0c01b67..565706fc 100644 --- a/tests/test_https.py +++ b/tests/test_https.py @@ -1,7 +1,9 @@ import json +from . import urlopen from mocket.mocket import mocketize from mocket.mockhttp import Entry + import requests import pytest @@ -27,6 +29,7 @@ def test_json(response): ) mocked_response = requests.get(url_to_mock).json() - assert response == mocked_response + mocked_response = json.loads(urlopen(url_to_mock).read().decode('utf-8')) + assert response == mocked_response From 93619bb8e074eee77d67d9d60bb6ca21b909d483 Mon Sep 17 00:00:00 2001 From: Giorgio Salluzzo Date: Fri, 30 Dec 2016 12:11:03 +0100 Subject: [PATCH 2/2] Fix for urlopen(). --- mocket/mocket.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mocket/mocket.py b/mocket/mocket.py index 1239acf8..5f423636 100644 --- a/mocket/mocket.py +++ b/mocket/mocket.py @@ -47,9 +47,10 @@ def __set__(self, *args): class FakeSSLContext(SuperFakeSSLContext): - def __init__(self, sock=None, server_hostname=None, **kwargs): - self.sock = sock - self.sock._host = server_hostname + def __init__(self, sock=None, server_hostname=None, *args, **kwargs): + if isinstance(sock, MocketSocket): + self.sock = sock + self.sock._host = server_hostname @staticmethod def load_default_certs(*args, **kwargs):