Skip to content

Commit dc07af7

Browse files
committed
Merge branch 'main' into esp32spi-and-wiznet5k-socketpool
2 parents 85713ef + 9322a01 commit dc07af7

File tree

4 files changed

+103
-34
lines changed

4 files changed

+103
-34
lines changed

tests/conftest.py

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import sys
88

99
import mocket
10+
import pytest
1011

1112

1213
# pylint: disable=unused-argument
@@ -33,20 +34,49 @@ class WIZNET5K_SocketPool(SocketPool): # pylint: disable=too-few-public-methods
3334
name = "adafruit_wiznet5k_socketpool"
3435

3536

36-
socketpool_module = type(sys)("socketpool")
37-
socketpool_module.SocketPool = mocket.MocketPool
38-
sys.modules["socketpool"] = socketpool_module
39-
40-
esp32spi_module = type(sys)("adafruit_esp32spi")
41-
esp32spi_socket_module = type(sys)("adafruit_esp32spi_socketpool")
42-
esp32spi_socket_module.SocketPool = ESP32SPI_SocketPool
43-
sys.modules["adafruit_esp32spi"] = esp32spi_module
44-
sys.modules["adafruit_esp32spi.adafruit_esp32spi_socketpool"] = esp32spi_socket_module
45-
46-
wiznet5k_module = type(sys)("adafruit_wiznet5k")
47-
wiznet5k_socketpool_module = type(sys)("adafruit_wiznet5k_socketpool")
48-
wiznet5k_socketpool_module.SocketPool = WIZNET5K_SocketPool
49-
sys.modules["adafruit_wiznet5k"] = wiznet5k_module
50-
sys.modules["adafruit_wiznet5k.adafruit_wiznet5k_socketpool"] = (
37+
@pytest.fixture
38+
def circuitpython_socketpool_module():
39+
socketpool_module = type(sys)("socketpool")
40+
socketpool_module.SocketPool = mocket.MocketPool
41+
sys.modules["socketpool"] = socketpool_module
42+
yield
43+
del sys.modules["socketpool"]
44+
45+
46+
@pytest.fixture
47+
def adafruit_esp32spi_socket_module():
48+
esp32spi_module = type(sys)("adafruit_esp32spi")
49+
esp32spi_socket_module = type(sys)("adafruit_esp32spi_socketpool")
50+
esp32spi_socket_module.SocketPool = ESP32SPI_SocketPool
51+
sys.modules["adafruit_esp32spi"] = esp32spi_module
52+
sys.modules["adafruit_esp32spi.adafruit_esp32spi_socketpool"] = esp32spi_socket_module
53+
yield
54+
del sys.modules["adafruit_esp32spi"]
55+
del sys.modules["adafruit_esp32spi.adafruit_esp32spi_socket"]
56+
57+
58+
@pytest.fixture
59+
def adafruit_wiznet5k_socket_module():
60+
wiznet5k_module = type(sys)("adafruit_wiznet5k")
61+
wiznet5k_socketpool_module = type(sys)("adafruit_wiznet5k_socketpool")
62+
wiznet5k_socketpool_module.SocketPool = WIZNET5K_SocketPool
63+
wiznet5k_socket_module.SOCK_STREAM = 0x21
64+
sys.modules["adafruit_wiznet5k"] = wiznet5k_module
65+
sys.modules["adafruit_wiznet5k.adafruit_wiznet5k_socketpool"] = (
5166
wiznet5k_socketpool_module
67+
yield
68+
del sys.modules["adafruit_wiznet5k"]
69+
del sys.modules["adafruit_wiznet5k.adafruit_wiznet5k_socket"]
70+
71+
72+
@pytest.fixture(autouse=True)
73+
def reset_connection_manager(monkeypatch):
74+
monkeypatch.setattr(
75+
"adafruit_connection_manager._global_socketpool",
76+
{},
77+
)
78+
monkeypatch.setattr(
79+
"adafruit_connection_manager._global_ssl_contexts",
80+
{},
81+
)
5282
)

tests/get_radio_test.py

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,36 @@
55
""" Get socketpool and ssl_context Tests """
66

77
import ssl
8+
from unittest import mock
89

910
import mocket
1011
import pytest
1112

1213
import adafruit_connection_manager
1314

1415

15-
def test_get_radio_socketpool_wifi():
16+
def test_get_radio_socketpool_wifi( # pylint: disable=unused-argument
17+
circuitpython_socketpool_module,
18+
):
1619
radio = mocket.MockRadio.Radio()
1720
socket_pool = adafruit_connection_manager.get_radio_socketpool(radio)
1821
assert isinstance(socket_pool, mocket.MocketPool)
1922

2023

21-
def test_get_radio_socketpool_esp32spi():
24+
def test_get_radio_socketpool_esp32spi( # pylint: disable=unused-argument
25+
adafruit_esp32spi_socket_module,
26+
):
2227
radio = mocket.MockRadio.ESP_SPIcontrol()
2328
socket_pool = adafruit_connection_manager.get_radio_socketpool(radio)
2429
assert socket_pool.__name__ == "adafruit_esp32spi_socketpool"
2530

2631

27-
def test_get_radio_socketpool_wiznet5k():
32+
def test_get_radio_socketpool_wiznet5k( # pylint: disable=unused-argument
33+
adafruit_wiznet5k_socket_module,
34+
):
2835
radio = mocket.MockRadio.WIZNET5K()
29-
socket_pool = adafruit_connection_manager.get_radio_socketpool(radio)
36+
with mock.patch("sys.implementation", return_value=[9, 0, 0]):
37+
socket_pool = adafruit_connection_manager.get_radio_socketpool(radio)
3038
assert socket_pool.__name__ == "adafruit_wiznet5k_socketpool"
3139

3240

@@ -37,28 +45,37 @@ def test_get_radio_socketpool_unsupported():
3745
assert "Unsupported radio class" in str(context)
3846

3947

40-
def test_get_radio_socketpool_returns_same_one():
48+
def test_get_radio_socketpool_returns_same_one( # pylint: disable=unused-argument
49+
circuitpython_socketpool_module,
50+
):
4151
radio = mocket.MockRadio.Radio()
4252
socket_pool_1 = adafruit_connection_manager.get_radio_socketpool(radio)
4353
socket_pool_2 = adafruit_connection_manager.get_radio_socketpool(radio)
4454
assert socket_pool_1 == socket_pool_2
4555

4656

47-
def test_get_radio_ssl_context_wifi():
57+
def test_get_radio_ssl_context_wifi( # pylint: disable=unused-argument
58+
circuitpython_socketpool_module,
59+
):
4860
radio = mocket.MockRadio.Radio()
4961
ssl_contexts = adafruit_connection_manager.get_radio_ssl_context(radio)
5062
assert isinstance(ssl_contexts, ssl.SSLContext)
5163

5264

53-
def test_get_radio_ssl_context_esp32spi():
65+
def test_get_radio_ssl_context_esp32spi( # pylint: disable=unused-argument
66+
adafruit_esp32spi_socket_module,
67+
):
5468
radio = mocket.MockRadio.ESP_SPIcontrol()
5569
ssl_contexts = adafruit_connection_manager.get_radio_ssl_context(radio)
5670
assert isinstance(ssl_contexts, adafruit_connection_manager._FakeSSLContext)
5771

5872

59-
def test_get_radio_ssl_context_wiznet5k():
73+
def test_get_radio_ssl_context_wiznet5k( # pylint: disable=unused-argument
74+
adafruit_wiznet5k_socket_module,
75+
):
6076
radio = mocket.MockRadio.WIZNET5K()
61-
ssl_contexts = adafruit_connection_manager.get_radio_ssl_context(radio)
77+
with mock.patch("sys.implementation", return_value=[9, 0, 0]):
78+
ssl_contexts = adafruit_connection_manager.get_radio_ssl_context(radio)
6279
assert isinstance(ssl_contexts, adafruit_connection_manager._FakeSSLContext)
6380

6481

@@ -69,7 +86,9 @@ def test_get_radio_ssl_context_unsupported():
6986
assert "Unsupported radio class" in str(context)
7087

7188

72-
def test_get_radio_ssl_context_returns_same_one():
89+
def test_get_radio_ssl_context_returns_same_one( # pylint: disable=unused-argument
90+
circuitpython_socketpool_module,
91+
):
7392
radio = mocket.MockRadio.Radio()
7493
ssl_contexts_1 = adafruit_connection_manager.get_radio_ssl_context(radio)
7594
ssl_contexts_2 = adafruit_connection_manager.get_radio_ssl_context(radio)

tests/get_socket_test.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,9 @@ def test_get_socket_runtime_error_ties_again_only_once():
217217
free_sockets_mock.assert_called_once()
218218

219219

220-
def test_fake_ssl_context_connect():
220+
def test_fake_ssl_context_connect( # pylint: disable=unused-argument
221+
adafruit_esp32spi_socket_module,
222+
):
221223
mock_pool = mocket.MocketPool()
222224
mock_socket_1 = mocket.Mocket()
223225
mock_pool.socket.return_value = mock_socket_1
@@ -234,7 +236,9 @@ def test_fake_ssl_context_connect():
234236
socket._socket.connect.assert_called_once()
235237

236238

237-
def test_fake_ssl_context_connect_error():
239+
def test_fake_ssl_context_connect_error( # pylint: disable=unused-argument
240+
adafruit_esp32spi_socket_module,
241+
):
238242
mock_pool = mocket.MocketPool()
239243
mock_socket_1 = mocket.Mocket()
240244
mock_pool.socket.return_value = mock_socket_1

tests/fake_ssl_context_test.py renamed to tests/ssl_context_test.py

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,26 @@
22
#
33
# SPDX-License-Identifier: Unlicense
44

5-
""" FakeSLLSocket Tests """
5+
""" SLL Context Tests """
6+
7+
import ssl
68

79
import mocket
810
import pytest
911

1012
import adafruit_connection_manager
1113

1214

13-
def test_connect_https():
15+
def test_connect_esp32spi_https( # pylint: disable=unused-argument
16+
adafruit_esp32spi_socket_module,
17+
):
1418
mock_pool = mocket.MocketPool()
1519
mock_socket_1 = mocket.Mocket()
16-
mock_pool.socket.return_value = mock_socket_1
20+
mock_socket_2 = mocket.Mocket()
21+
mock_pool.socket.side_effect = [
22+
mock_socket_1,
23+
mock_socket_2,
24+
]
1725

1826
radio = mocket.MockRadio.ESP_SPIcontrol()
1927
ssl_context = adafruit_connection_manager.get_radio_ssl_context(radio)
@@ -24,15 +32,23 @@ def test_connect_https():
2432
mocket.MOCK_HOST_1, 443, "https:", ssl_context=ssl_context
2533
)
2634
assert socket != mock_socket_1
35+
assert socket != mock_socket_2
2736
assert socket._socket == mock_socket_1
2837
assert isinstance(socket, adafruit_connection_manager._FakeSSLSocket)
2938

3039

31-
def test_connect_https_not_supported():
32-
mock_pool = mocket.MocketPool()
33-
mock_socket_1 = mocket.Mocket()
34-
mock_pool.socket.return_value = mock_socket_1
40+
def test_connect_wifi_https( # pylint: disable=unused-argument
41+
circuitpython_socketpool_module,
42+
):
43+
radio = mocket.MockRadio.Radio()
44+
ssl_context = adafruit_connection_manager.get_radio_ssl_context(radio)
45+
assert isinstance(ssl_context, ssl.SSLContext)
46+
3547

48+
def test_connect_wiznet5k_https_not_supported( # pylint: disable=unused-argument
49+
adafruit_wiznet5k_socket_module,
50+
):
51+
mock_pool = mocket.MocketPool()
3652
radio = mocket.MockRadio.WIZNET5K()
3753
ssl_context = adafruit_connection_manager.get_radio_ssl_context(radio)
3854
connection_manager = adafruit_connection_manager.ConnectionManager(mock_pool)

0 commit comments

Comments
 (0)