50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
import base64
|
|
|
|
import pytest
|
|
import responses
|
|
|
|
from certctl.ca.adcs import AdcsAdapter, AdcsConfig, _b64_to_pem, _parse_req_id
|
|
|
|
|
|
def test_parse_req_id_from_html():
|
|
body = "some html certnew.cer?ReqID=123&something"
|
|
assert _parse_req_id(body) == "123"
|
|
|
|
|
|
def test_b64_to_pem_wraps():
|
|
raw = base64.b64encode(b"dummy").decode("ascii")
|
|
pem = _b64_to_pem(raw)
|
|
assert "BEGIN CERTIFICATE" in pem
|
|
assert "END CERTIFICATE" in pem
|
|
|
|
|
|
@responses.activate
|
|
def test_adcs_submit_and_collect():
|
|
config = AdcsConfig(
|
|
base_url="https://adcs.example/certsrv",
|
|
username="user",
|
|
password="pass",
|
|
verify=False,
|
|
)
|
|
adapter = AdcsAdapter(config)
|
|
|
|
responses.add(
|
|
responses.POST,
|
|
"https://adcs.example/certsrv/certfnsh.asp",
|
|
body="certnew.cer?ReqID=456&Enc=b64",
|
|
status=200,
|
|
)
|
|
cert_b64 = base64.b64encode(b"fakecert").decode("ascii")
|
|
responses.add(
|
|
responses.GET,
|
|
"https://adcs.example/certsrv/certnew.cer",
|
|
body=cert_b64,
|
|
status=200,
|
|
)
|
|
|
|
submit = adapter.submit_csr("CSRDATA")
|
|
assert submit.request_id == "456"
|
|
|
|
cert = adapter.collect_certificate("456")
|
|
assert "BEGIN CERTIFICATE" in cert
|