import authnid sdn utils
This commit is contained in:
parent
f0a7bfcd0e
commit
4f8c0b81a0
13
atst/domain/authnid/utils.py
Normal file
13
atst/domain/authnid/utils.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: our sample SDN does not have an email address
|
||||||
|
def parse_sdn(sdn):
|
||||||
|
try:
|
||||||
|
parts = sdn.split(",")
|
||||||
|
cn_string = [piece for piece in parts if re.match("^CN=", piece)][0]
|
||||||
|
cn = cn_string.split("=")[-1]
|
||||||
|
info = cn.split(".")
|
||||||
|
return {"last_name": info[0], "first_name": info[1], "dod_id": info[-1]}
|
||||||
|
except (IndexError, AttributeError):
|
||||||
|
raise ValueError("'{}' is not a valid SDN".format(sdn))
|
21
tests/domain/authnid/test_utils.py
Normal file
21
tests/domain/authnid/test_utils.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import pytest
|
||||||
|
import atst.domain.authnid.utils as utils
|
||||||
|
|
||||||
|
DOD_SDN_INFO = {
|
||||||
|
'first_name': 'ART',
|
||||||
|
'last_name': 'GARFUNKEL',
|
||||||
|
'dod_id': '5892460358'
|
||||||
|
}
|
||||||
|
DOD_SDN = f"CN={DOD_SDN_INFO['last_name']}.{DOD_SDN_INFO['first_name']}.G.{DOD_SDN_INFO['dod_id']},OU=OTHER,OU=PKI,OU=DoD,O=U.S. Government,C=US"
|
||||||
|
|
||||||
|
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)
|
Loading…
x
Reference in New Issue
Block a user