"""Test utilities. .. warning:: This module is not part of the public API. """ import os import sys import pkg_resources import unittest from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization import josepy as jose from OpenSSL import crypto def vector_path(*names): """Path to a test vector.""" return pkg_resources.resource_filename( __name__, os.path.join('testdata', *names)) def load_vector(*names): """Load contents of a test vector.""" # luckily, resource_string opens file in binary mode return pkg_resources.resource_string( __name__, os.path.join('testdata', *names)) def _guess_loader(filename, loader_pem, loader_der): _, ext = os.path.splitext(filename) if ext.lower() == '.pem': return loader_pem elif ext.lower() == '.der': return loader_der else: # pragma: no cover raise ValueError("Loader could not be recognized based on extension") def load_cert(*names): """Load certificate.""" loader = _guess_loader( names[-1], crypto.FILETYPE_PEM, crypto.FILETYPE_ASN1) return crypto.load_certificate(loader, load_vector(*names)) def load_comparable_cert(*names): """Load ComparableX509 cert.""" return jose.ComparableX509(load_cert(*names)) def load_csr(*names): """Load certificate request.""" loader = _guess_loader( names[-1], crypto.FILETYPE_PEM, crypto.FILETYPE_ASN1) return crypto.load_certificate_request(loader, load_vector(*names)) def load_comparable_csr(*names): """Load ComparableX509 certificate request.""" return jose.ComparableX509(load_csr(*names)) def load_rsa_private_key(*names): """Load RSA private key.""" loader = _guess_loader(names[-1], serialization.load_pem_private_key, serialization.load_der_private_key) return jose.ComparableRSAKey(loader( load_vector(*names), password=None, backend=default_backend())) def load_pyopenssl_private_key(*names): """Load pyOpenSSL private key.""" loader = _guess_loader( names[-1], crypto.FILETYPE_PEM, crypto.FILETYPE_ASN1) return crypto.load_privatekey(loader, load_vector(*names)) def skip_unless(condition, reason): # pragma: no cover """Skip tests unless a condition holds. This implements the basic functionality of unittest.skipUnless which is only available on Python 2.7+. :param bool condition: If ``False``, the test will be skipped :param str reason: the reason for skipping the test :rtype: callable :returns: decorator that hides tests unless condition is ``True`` """ if hasattr(unittest, "skipUnless"): return unittest.skipUnless(condition, reason) elif condition: return lambda cls: cls else: return lambda cls: None def broken_on_windows(function): """Decorator to skip temporarily a broken test on Windows.""" reason = 'Test is broken and ignored on windows but should be fixed.' return unittest.skipIf( sys.platform == 'win32' and os.environ.get('SKIP_BROKEN_TESTS_ON_WINDOWS', 'true') == 'true', reason)(function)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 727 B | 0644 |
|
challenges.py | File | 19.8 KB | 0644 |
|
challenges_test.py | File | 21.17 KB | 0644 |
|
client.py | File | 46.26 KB | 0644 |
|
client_test.py | File | 56.84 KB | 0644 |
|
crypto_util.py | File | 10.99 KB | 0644 |
|
crypto_util_test.py | File | 9.98 KB | 0644 |
|
errors.py | File | 3.57 KB | 0644 |
|
errors_test.py | File | 1.48 KB | 0644 |
|
fields.py | File | 1.7 KB | 0644 |
|
fields_test.py | File | 2.03 KB | 0644 |
|
jose_test.py | File | 1.92 KB | 0644 |
|
jws.py | File | 2.09 KB | 0644 |
|
jws_test.py | File | 2.03 KB | 0644 |
|
magic_typing.py | File | 534 B | 0644 |
|
magic_typing_test.py | File | 1.42 KB | 0644 |
|
messages.py | File | 19.11 KB | 0644 |
|
messages_test.py | File | 16.25 KB | 0644 |
|
standalone.py | File | 11.09 KB | 0644 |
|
standalone_test.py | File | 10.54 KB | 0644 |
|
test_util.py | File | 3.12 KB | 0644 |
|
util.py | File | 166 B | 0644 |
|
util_test.py | File | 456 B | 0644 |
|