Crypto Testing Fixtures for Foundation.
Provides comprehensive pytest fixtures for testing certificate functionality,
including valid/invalid certificates, keys, chains, and edge cases.
Functions
ca_cert
Create a self-signed CA certificate for testing.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture(scope="module")
def ca_cert() -> Certificate:
"""Create a self-signed CA certificate for testing."""
return Certificate.create_ca(
common_name="Test CA", organization_name="Test Organization", validity_days=365
)
|
cert_with_extra_whitespace(client_cert: Certificate) -> str
Returns a certificate PEM with extra whitespace.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def cert_with_extra_whitespace(client_cert: Certificate) -> str:
"""Returns a certificate PEM with extra whitespace."""
return f" {client_cert.cert_pem} \n\n "
|
cert_with_utf8_bom
cert_with_utf8_bom(client_cert: Certificate) -> str
Returns a certificate PEM with UTF-8 BOM.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def cert_with_utf8_bom(client_cert: Certificate) -> str:
"""Returns a certificate PEM with UTF-8 BOM."""
return "\ufeff" + client_cert.cert_pem
|
cert_with_windows_line_endings
cert_with_windows_line_endings(
client_cert: Certificate,
) -> str
Returns a certificate PEM with Windows line endings.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def cert_with_windows_line_endings(client_cert: Certificate) -> str:
"""Returns a certificate PEM with Windows line endings."""
return client_cert.cert_pem.replace("\n", "\r\n")
|
client_cert
client_cert() -> Certificate
Create a client certificate for testing.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture(scope="module")
def client_cert() -> Certificate:
"""Create a client certificate for testing."""
cert_pem = """-----BEGIN CERTIFICATE-----
MIIB+jCCAYGgAwIBAgIJAPsxOr78BIU0MAoGCCqGSM49BAMEMCgxEjAQBgNVBAoM
CUhhc2hpQ29ycDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDIwNTIzMTkzN1oX
DTI2MDIwNTIzMTkzN1owKDESMBAGA1UECgwJSGFzaGlDb3JwMRIwEAYDVQQDDAls
b2NhbGhvc3QwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARCi3SNYYDpSeScRM52tFYr
URzsPOE/ad8BzvpvL+mfy1c5oHQhh6KPnxpoo1WyDJGYplwPTGS68DvvWmolrPAt
C7I7r7spgyJS1358E5fA2NWk9/YPaiUzK2gsyrL9dKajdzB1MA8GA1UdEwEB/wQF
MAMBAf8wFAYDVR0RBA0wC4IJbG9jYWxob3N0MB0GA1UdJQQWMBQGCCsGAQUFBwMC
BggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCA6gwHQYDVR0OBBYEFOwuttXPh5kTPSpX
a2ex0+VKjlpaMAoGCCqGSM49BAMEA2cAMGQCMGbN17Zt1GxZ41cXTaQOKuv/BIQd
nkaRz51XrITKaULNie4bgW6gT94cTUFQ9SNwEAIwOpmKeZqYG9WHcqol4QEUmMVM
MY3jxMiLpb9Mt/ysstXmsrQY7UoLu+c6zfKwyTEJ
-----END CERTIFICATE-----"""
key_pem = """-----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDAkxo19KczdciRiJjOWEKGY5mH9s1D0aUS5XBdvktcaonIOdqNrkCt1
BC5YjEAVLNWgBwYFK4EEACKhZANiAARCi3SNYYDpSeScRM52tFYrURzsPOE/ad8B
zvpvL+mfy1c5oHQhh6KPnxpoo1WyDJGYplwPTGS68DvvWmolrPAtC7I7r7spgyJS
1358E5fA2NWk9/YPaiUzK2gsyrL9dKY=
-----END EC PRIVATE KEY-----"""
logger.debug(f"Created CLIENT_CERT fixture: {cert_pem[:30]}...")
return Certificate.from_pem(cert_pem=cert_pem, key_pem=key_pem)
|
empty_cert
Returns an empty certificate string.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def empty_cert() -> str:
"""Returns an empty certificate string."""
return ""
|
external_ca_pem
Provides an externally generated CA certificate PEM.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture(scope="module")
def external_ca_pem() -> str:
"""Provides an externally generated CA certificate PEM."""
return """-----BEGIN CERTIFICATE-----
MIIB4TCCAYegAwIBAgIJAPZ9vcVfR8AdMAoGCCqGSM49BAMCMFExCzAJBgNVBAYT
AlVTMQswCQYDVQQIDAJDQTEUMBIGA1UEBwwLU2FuIEZyYW5jaXNjbzEOMAwGA1UE
CgwFTXlPcmcxEzARBgNVBAMMCkV4dGVybmFsIENBMB4XDTI0MDgwMjEwNTgwMVoX
DTM0MDczMDEwNTgwMVowUTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMREwDwYD
VQQHDAhTYW5EaWVnbzEOMAwGA1UECgwFTXlPcmcxEzARBgNVBAMMCkV4dGVybmFs
IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEgyF5Y8upm+M3ZzO8P4n7q2sS+L4c
mhl5XGg3vIOwFf7lG8XZCgJ6Xy4t1t8oD3zY0m9X8H8Z4YhY7K6b7c8Y7Xv6Y9fV
Q8M7Jg9nJ0x5c1N40zQwZzKjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
BTADAQH/MB0GA1UdDgQWBBTGX00Gq7b09y/0C9eK0XgJp0mY7DAKBggqhkjOPQQD
AgNJADBGAiEAx1xH/b83/u5t7r29a/THZnFjQ7pvT2N0L4hG4BgGgXACIQD02W2+
MHB78ZWM+JOgikYj99qD6nLp0nkMyGmkSC7RYg==
-----END CERTIFICATE-----"""
|
invalid_cert_pem
invalid_cert_pem() -> str
Returns an invalid PEM certificate.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def invalid_cert_pem() -> str:
"""Returns an invalid PEM certificate."""
return "INVALID CERTIFICATE DATA"
|
invalid_key_pem
Returns an invalid PEM key.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def invalid_key_pem() -> str:
"""Returns an invalid PEM key."""
return "INVALID KEY DATA"
|
malformed_cert_pem() -> str
Returns a PEM certificate with incorrect headers.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def malformed_cert_pem() -> str:
"""Returns a PEM certificate with incorrect headers."""
return "-----BEGIN CERT-----\nMALFORMED DATA\n-----END CERT-----"
|
server_cert
server_cert() -> Certificate
Create a server certificate for testing.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture(scope="module")
def server_cert() -> Certificate:
"""Create a server certificate for testing."""
cert_pem = """-----BEGIN CERTIFICATE-----
MIIB+jCCAYGgAwIBAgIJAKrIoEQw7N9LMAoGCCqGSM49BAMEMCgxEjAQBgNVBAoM
CUhhc2hpQ29ycDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDIwNTIzMTkzN1oX
DTI2MDIwNTIzMTkzN1owKDESMBAGA1UECgwJSGFzaGlDb3JwMRIwEAYDVQQDDAls
b2NhbGhvc3QwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARMxEVmGX3a4IWPOAJ2MX2s
2Wj3KZ0Io5EwUPMkxknGheO2e55qeHp/tkEFzYt9AH8du1xJLKKFbsGV5q9vipGN
x5XMbj2RMdH5VXHTAdc/bLFFy9kybQqo300Rv6ViW2KjdzB1MA8GA1UdEwEB/wQF
MAMBAf8wFAYDVR0RBA0wC4IJbG9jYWxob3N0MB0GA1UdJQQWMBQGCCsGAQUFBwMC
BggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCA6gwHQYDVR0OBBYEFJy7Iz7whfiALYDB
TsM+IHXb1E8+MAoGCCqGSM49BAMEA2cAMGQCMFwxBS3lZSUprvrNGfJL83oGVY97
emQpHy/SEWpHBK8awn1XeTf+ZAwLaxc3K+AKqwIwPwIbIlmstd69zAYMFNHtzceN
XOzBx35sWRw92gr/hbE4hYeDBqEUwstSFNZ6MZu0
-----END CERTIFICATE-----"""
key_pem = """-----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDDZ1MORWFVI0HtgKv+zZys/5e1HVmfcs4bwdp3VEsuwS6an3gTwGnSP
Ce+bI6f/TvGgBwYFK4EEACKhZANiAARMxEVmGX3a4IWPOAJ2MX2s2Wj3KZ0Io5Ew
UPMkxknGheO2e55qeHp/tkEFzYt9AH8du1xJLKKFbsGV5q9vipGNx5XMbj2RMdH5
VXHTAdc/bLFFy9kybQqo300Rv6ViW2I=
-----END EC PRIVATE KEY-----"""
logger.debug(f"Created SERVER_CERT fixture: {cert_pem[:30]}...")
return Certificate.from_pem(cert_pem=cert_pem, key_pem=key_pem)
|
temporary_cert_file
temporary_cert_file(
tmp_path: any, client_cert: Certificate
) -> str
Creates a temporary file containing the client certificate.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def temporary_cert_file(tmp_path: any, client_cert: Certificate) -> str:
"""Creates a temporary file containing the client certificate."""
cert_file = tmp_path / "client_cert.pem"
cert_file.write_text(client_cert.cert_pem)
# Handle Windows drive letters in file URIs
cert_path = Path(cert_file)
if cert_path.drive: # Windows path with drive letter
return f"file:///{pathname2url(str(cert_file))}"
return f"file://{cert_file}"
|
temporary_key_file
temporary_key_file(
tmp_path: any, client_cert: Certificate
) -> str
Creates a temporary file containing the client private key.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def temporary_key_file(tmp_path: any, client_cert: Certificate) -> str:
"""Creates a temporary file containing the client private key."""
key_file = tmp_path / "client_key.pem"
key_file.write_text(client_cert.key_pem)
# Handle Windows drive letters in file URIs
key_path = Path(key_file)
if key_path.drive: # Windows path with drive letter
return f"file:///{pathname2url(str(key_file))}"
return f"file://{key_file}"
|
valid_cert_pem
valid_cert_pem(client_cert: Certificate) -> str
Get a valid certificate PEM from the client cert fixture.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture
def valid_cert_pem(client_cert: Certificate) -> str:
"""Get a valid certificate PEM from the client cert fixture."""
return client_cert.cert_pem
|
valid_key_pem
valid_key_pem(client_cert: Certificate) -> str
Get a valid key PEM from the client cert fixture.
Source code in provide/testkit/crypto/fixtures.py
| @pytest.fixture(scope="module")
def valid_key_pem(client_cert: Certificate) -> str:
"""Get a valid key PEM from the client cert fixture."""
return client_cert.key_pem
|