Files
2026-09-18 19:45:17 -07:00

44 lines
1.7 KiB
Python

from cryptography import x509
from cryptography.hazmat.primitives.serialization import Encoding
from cryptography.x509 import load_pem_x509_csr
from tests.helpers import sign_csr
from cert_portal.certsrv import CertsrvClient
from cert_portal.enrollment import SID_SAN_URI_PREFIX
from cert_portal.issue import ProfileIssuer
class _FakeCertsrv:
def __init__(self, ca_key, ca_cert):
self.ca_key = ca_key
self.ca_cert = ca_cert
self.last_csr = None
def submit_csr(self, csr_pem, template=None):
pem = csr_pem if isinstance(csr_pem, bytes) else csr_pem.encode("ascii")
self.last_csr = pem
csr = load_pem_x509_csr(pem)
cert = sign_csr(csr, self.ca_key, self.ca_cert)
return cert.public_bytes(Encoding.PEM)
def test_issue_signs_profile_for_user(settings, directory_user, test_ca):
ca_key, ca_cert = test_ca
fake = _FakeCertsrv(ca_key, ca_cert)
issuer = ProfileIssuer(settings, certsrv=fake)
issued = issuer.issue(directory_user)
assert issued.upn == directory_user.upn
assert issued.sid == directory_user.sid
assert issued.filename.endswith(".mobileconfig")
assert issued.signed_mobileconfig.startswith(b"\x30")
assert b"com.apple.security.pkcs12" in issued.signed_mobileconfig
csr = load_pem_x509_csr(fake.last_csr)
san = csr.extensions.get_extension_for_class(x509.SubjectAlternativeName).value
uris = [n.value for n in san if isinstance(n, x509.UniformResourceIdentifier)]
assert f"{SID_SAN_URI_PREFIX}{directory_user.sid}" in uris
def test_ntlm_username_includes_domain(settings):
client = CertsrvClient(settings)
assert client._ntlm_user() == "EXAMPLE\\portal"