40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
import pytest
|
|
import atst.domain.authnid.utils as utils
|
|
from tests.mocks import DOD_SDN, FIXTURE_EMAIL_ADDRESS
|
|
|
|
|
|
def test_parse_sdn():
|
|
parsed = utils.parse_sdn(DOD_SDN)
|
|
assert parsed.get("first_name") == "ART"
|
|
assert parsed.get("last_name") == "GARFUNKEL"
|
|
assert parsed.get("dod_id") == "5892460358"
|
|
|
|
|
|
def test_parse_bad_sdn():
|
|
with pytest.raises(ValueError):
|
|
utils.parse_sdn("this has nothing to do with anything")
|
|
with pytest.raises(ValueError):
|
|
utils.parse_sdn(None)
|
|
|
|
|
|
def test_parse_email_cert():
|
|
cert_file = open("tests/fixtures/{}.crt".format(FIXTURE_EMAIL_ADDRESS), "rb").read()
|
|
email = utils.email_from_certificate(cert_file)
|
|
assert email == FIXTURE_EMAIL_ADDRESS
|
|
|
|
|
|
def test_parse_cert_with_no_email():
|
|
cert_file = open("tests/fixtures/no-email.crt", "rb").read()
|
|
with pytest.raises(ValueError) as excinfo:
|
|
email = utils.email_from_certificate(cert_file)
|
|
(message,) = excinfo.value.args
|
|
assert "email" in message
|
|
|
|
|
|
def test_parse_cert_with_no_san():
|
|
cert_file = open("tests/fixtures/no-san.crt", "rb").read()
|
|
with pytest.raises(ValueError) as excinfo:
|
|
email = utils.email_from_certificate(cert_file)
|
|
(message,) = excinfo.value.args
|
|
assert "subjectAltName" in message
|