mirror of https://github.com/home-assistant/core
59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
"""Test Home Assistant ssl utility functions."""
|
|
|
|
from unittest.mock import MagicMock, Mock, patch
|
|
|
|
import pytest
|
|
|
|
from homeassistant.util.ssl import (
|
|
SSLCipherList,
|
|
client_context,
|
|
create_no_verify_ssl_context,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_sslcontext():
|
|
"""Mock the ssl lib."""
|
|
return MagicMock(set_ciphers=Mock(return_value=True))
|
|
|
|
|
|
def test_client_context(mock_sslcontext) -> None:
|
|
"""Test client context."""
|
|
with patch("homeassistant.util.ssl.ssl.SSLContext", return_value=mock_sslcontext):
|
|
client_context()
|
|
mock_sslcontext.set_ciphers.assert_not_called()
|
|
|
|
client_context(SSLCipherList.MODERN)
|
|
mock_sslcontext.set_ciphers.assert_not_called()
|
|
|
|
client_context(SSLCipherList.INTERMEDIATE)
|
|
mock_sslcontext.set_ciphers.assert_not_called()
|
|
|
|
client_context(SSLCipherList.INSECURE)
|
|
mock_sslcontext.set_ciphers.assert_not_called()
|
|
|
|
|
|
def test_no_verify_ssl_context(mock_sslcontext) -> None:
|
|
"""Test no verify ssl context."""
|
|
with patch("homeassistant.util.ssl.ssl.SSLContext", return_value=mock_sslcontext):
|
|
create_no_verify_ssl_context()
|
|
mock_sslcontext.set_ciphers.assert_not_called()
|
|
|
|
create_no_verify_ssl_context(SSLCipherList.MODERN)
|
|
mock_sslcontext.set_ciphers.assert_not_called()
|
|
|
|
create_no_verify_ssl_context(SSLCipherList.INTERMEDIATE)
|
|
mock_sslcontext.set_ciphers.assert_not_called()
|
|
|
|
create_no_verify_ssl_context(SSLCipherList.INSECURE)
|
|
mock_sslcontext.set_ciphers.assert_not_called()
|
|
|
|
|
|
def test_ssl_context_caching() -> None:
|
|
"""Test that SSLContext instances are cached correctly."""
|
|
|
|
assert client_context() is client_context(SSLCipherList.PYTHON_DEFAULT)
|
|
assert create_no_verify_ssl_context() is create_no_verify_ssl_context(
|
|
SSLCipherList.PYTHON_DEFAULT
|
|
)
|