from lxml import etree, objectify
from q2_cores import data_helpers
[docs]
def mock_demographic_response_no_phone():
response = get_base_demo_response()
root = objectify.fromstring(response)
phone_node = root.find(".//PHONES")
parent_node = phone_node.getparent()
parent_node.remove(phone_node)
objectify.SubElement(parent_node, "PHONES")
response = etree.tostring(root)
return decorate_response(response, 1904)
[docs]
def mock_demographic_response_no_address():
response = get_base_demo_response()
root = objectify.fromstring(response)
address_node = root.find(".//ADDRESSES")
parent_node = address_node.getparent()
parent_node.remove(address_node)
objectify.SubElement(parent_node, "ADDRESSES")
response = etree.tostring(root)
return decorate_response(response, 1904)
[docs]
def get_base_demo_response():
response = """
<ENTITY_DATA_INQ>
<ROW_TYPE>ENTITYDATA</ROW_TYPE>
<INDEX>1</INDEX>
<ENTITY_DATA>
<ENTITYTYP>PERS</ENTITYTYP>
<ENTITYNBR>67430</ENTITYNBR>
<PREFIX></PREFIX>
<SUFFIX></SUFFIX>
<FIRST_NAME>{first_name}</FIRST_NAME>
<MI></MI>
<LAST_NAME>{last_name}</LAST_NAME>
<DOB>{dob}</DOB>
<MMNM>{mothers_maiden_name}</MMNM>
<TAXID>{ssn}</TAXID>
<ADDRESSES>
<ADDRESS>
<ADDRUSECD>PRI</ADDRUSECD>
<ADDRNBR>142867</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>BUS</ADDRUSECD>
<ADDRNBR>142868</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>SEA</ADDRUSECD>
<ADDRNBR>142869</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>AL01</ADDRUSECD>
<ADDRNBR>142869</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>AL02</ADDRUSECD>
<ADDRNBR>142869</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>AL03</ADDRUSECD>
<ADDRNBR>142869</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
</ADDRESSES>
<ADDRESS_TOT>1</ADDRESS_TOT>
<EMAIL>{email}</EMAIL>
<PHONES>
<PHONE>
<PHONEUSECD>PER</PHONEUSECD>
<PHONESEQ>3043</PHONESEQ>
<AREACD>{phone_1_ac}</AREACD>
<EXCHANGE>{phone_1_exch}</EXCHANGE>
<PHONENBR>{phone_1_suffix}</PHONENBR>
<PHONEEXTEN></PHONEEXTEN>
<FOREIGNPHONENBR></FOREIGNPHONENBR>
<CTRYCD>USA</CTRYCD>
</PHONE>
<PHONE>
<PHONEUSECD>CELL</PHONEUSECD>
<PHONESEQ>18274</PHONESEQ>
<AREACD>{cell_ac}</AREACD>
<EXCHANGE>{cell_exch}</EXCHANGE>
<PHONENBR>{cell_suffix}</PHONENBR>
<PHONEEXTEN></PHONEEXTEN>
<FOREIGNPHONENBR></FOREIGNPHONENBR>
<CTRYCD>USA</CTRYCD>
</PHONE>
</PHONES>
<PHONE_TOT>2</PHONE_TOT>
<ENTITY_ID_DATA></ENTITY_ID_DATA>
<ID_TOT>0</ID_TOT>
<ASOF>20160908160907</ASOF>
<USR>123456789</USR>
</ENTITY_DATA>
</ENTITY_DATA_INQ>""".format(
first_name=data_helpers.FIRSTNAME,
last_name=data_helpers.LASTNAME,
dob=data_helpers.DOB,
mothers_maiden_name=data_helpers.MOTHERSMAIDENNAME,
ssn=data_helpers.SOCIALSECURITY,
address_1=data_helpers.ADDRESS1,
address_2=data_helpers.ADDRESS2,
city=data_helpers.CITY,
state_abbrev=data_helpers.STATEABBRV,
zipcode=data_helpers.ZIP,
email=data_helpers.EMAIL,
phone_1_ac=data_helpers.PHONEAREACODE,
phone_1_exch=data_helpers.PHONEEXCHANGE,
phone_1_suffix=data_helpers.PHONESUFFIX,
cell_ac=data_helpers.CELLAREACODE,
cell_exch=data_helpers.CELLEXCHANGE,
cell_suffix=data_helpers.CELLSUFFIX,
)
return response
[docs]
def mock_demographic_response():
response = get_base_demo_response()
return decorate_response(response, 1904)
[docs]
def decorate_response(response, itc_code):
response = [
f"ITC\t{itc_code}\t1",
data_helpers.normalize_xml_str(response),
"ITC\t1\t0",
]
return "\n".join(response)
[docs]
def mock_demographic_response_with_namespace():
response = """<ENTITY_DATA_INQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ROW_TYPE>ENTITYDATA</ROW_TYPE>
<INDEX>1</INDEX>
<ENTITY_DATA>
<ENTITYTYP>PERS</ENTITYTYP>
<ENTITYNBR>67430</ENTITYNBR>
<PREFIX></PREFIX>
<SUFFIX></SUFFIX>
<FIRST_NAME>{first_name}</FIRST_NAME>
<MI></MI>
<LAST_NAME>{last_name}</LAST_NAME>
<DOB>{dob}</DOB>
<MMNM>{mothers_maiden_name}</MMNM>
<TAXID>{ssn}</TAXID>
<ADDRESSES>
<ADDRESS>
<ADDRUSECD>PRI</ADDRUSECD>
<ADDRNBR>142867</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>BUS</ADDRUSECD>
<ADDRNBR>142868</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>SEA</ADDRUSECD>
<ADDRNBR>142869</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>AL01</ADDRUSECD>
<ADDRNBR>142869</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>AL02</ADDRUSECD>
<ADDRNBR>142869</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
<ADDRESS>
<ADDRUSECD>AL03</ADDRUSECD>
<ADDRNBR>142869</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
</ADDRESSES>
<ADDRESS_TOT>1</ADDRESS_TOT>
<EMAIL>{email}</EMAIL>
<PHONES>
<PHONE>
<PHONEUSECD>PER</PHONEUSECD>
<PHONESEQ>3043</PHONESEQ>
<AREACD>{phone_1_ac}</AREACD>
<EXCHANGE>{phone_1_exch}</EXCHANGE>
<PHONENBR>{phone_1_suffix}</PHONENBR>
<PHONEEXTEN></PHONEEXTEN>
<FOREIGNPHONENBR></FOREIGNPHONENBR>
<CTRYCD>USA</CTRYCD>
</PHONE>
<PHONE>
<PHONEUSECD>CELL</PHONEUSECD>
<PHONESEQ>18274</PHONESEQ>
<AREACD>{cell_ac}</AREACD>
<EXCHANGE>{cell_exch}</EXCHANGE>
<PHONENBR>{cell_suffix}</PHONENBR>
<PHONEEXTEN></PHONEEXTEN>
<FOREIGNPHONENBR></FOREIGNPHONENBR>
<CTRYCD>USA</CTRYCD>
</PHONE>
</PHONES>
<PHONE_TOT>2</PHONE_TOT>
<ENTITY_ID_DATA></ENTITY_ID_DATA>
<ID_TOT>0</ID_TOT>
<ASOF>20160908160907</ASOF>
<USR>123456789</USR>
</ENTITY_DATA>
</ENTITY_DATA_INQ>""".format(
first_name=data_helpers.FIRSTNAME,
last_name=data_helpers.LASTNAME,
dob=data_helpers.DOB,
mothers_maiden_name=data_helpers.MOTHERSMAIDENNAME,
ssn=data_helpers.SOCIALSECURITY,
address_1=data_helpers.ADDRESS1,
address_2=data_helpers.ADDRESS2,
city=data_helpers.CITY,
state_abbrev=data_helpers.STATEABBRV,
zipcode=data_helpers.ZIP,
email=data_helpers.EMAIL,
phone_1_ac=data_helpers.PHONEAREACODE,
phone_1_exch=data_helpers.PHONEEXCHANGE,
phone_1_suffix=data_helpers.PHONESUFFIX,
cell_ac=data_helpers.CELLAREACODE,
cell_exch=data_helpers.CELLEXCHANGE,
cell_suffix=data_helpers.CELLSUFFIX,
)
response = ["ITC\t1512\t1", data_helpers.normalize_xml_str(response), "ITC\t1\t0"]
return "\n".join(response)
[docs]
def mock_demographic_response_with_error():
return "ITC 85 2Security Violation INVALID SSN/PIN Offset:INVALID SSN/PIN Offset - IRBH - IRB - TC96ITC 1 0"
[docs]
def mock_unexpected_demographic_response():
return mock_demographic_response().replace("\t", " ")
[docs]
def mock_demographic_unknown_types():
response = """
<ENTITY_DATA_INQ>
<ROW_TYPE>ENTITYDATA</ROW_TYPE>
<INDEX>1</INDEX>
<ENTITY_DATA>
<ENTITYTYP>PERS</ENTITYTYP>
<ENTITYNBR>67430</ENTITYNBR>
<PREFIX></PREFIX>
<SUFFIX></SUFFIX>
<FIRST_NAME>{first_name}</FIRST_NAME>
<MI></MI>
<LAST_NAME>{last_name}</LAST_NAME>
<DOB>{dob}</DOB>
<MMNM>{mothers_maiden_name}</MMNM>
<TAXID>{ssn}</TAXID>
<ADDRESSES>
<ADDRESS>
<ADDRUSECD>HOME</ADDRUSECD>
<ADDRNBR>142867</ADDRNBR>
<ADDRLINE1>{address_1}</ADDRLINE1>
<ADDRLINE2>{address_2}</ADDRLINE2>
<ADDRLINE3></ADDRLINE3>
<ADDRLINE4></ADDRLINE4>
<ADDRLINE5></ADDRLINE5>
<CITY>{city}</CITY>
<STATE>{state_abbrev}</STATE>
<ZIP>{zipcode}</ZIP>
</ADDRESS>
</ADDRESSES>
<ADDRESS_TOT>1</ADDRESS_TOT>
<EMAIL>{email}</EMAIL>
<PHONES>
<PHONE>
<PHONEUSECD>HOME</PHONEUSECD>
<PHONESEQ>3043</PHONESEQ>
<AREACD>{phone_1_ac}</AREACD>
<EXCHANGE>{phone_1_exch}</EXCHANGE>
<PHONENBR>{phone_1_suffix}</PHONENBR>
<PHONEEXTEN></PHONEEXTEN>
<FOREIGNPHONENBR></FOREIGNPHONENBR>
<CTRYCD>USA</CTRYCD>
</PHONE>
</PHONES>
<PHONE_TOT>1</PHONE_TOT>
<ENTITY_ID_DATA></ENTITY_ID_DATA>
<ID_TOT>0</ID_TOT>
<ASOF>20160908160907</ASOF>
<USR>123456789</USR>
</ENTITY_DATA>
</ENTITY_DATA_INQ>""".format(
first_name=data_helpers.FIRSTNAME,
last_name=data_helpers.LASTNAME,
dob=data_helpers.DOB,
mothers_maiden_name=data_helpers.MOTHERSMAIDENNAME,
ssn=data_helpers.SOCIALSECURITY,
address_1=data_helpers.ADDRESS1,
address_2=data_helpers.ADDRESS2,
city=data_helpers.CITY,
state_abbrev=data_helpers.STATEABBRV,
zipcode=data_helpers.ZIP,
email=data_helpers.EMAIL,
phone_1_ac=data_helpers.PHONEAREACODE,
phone_1_exch=data_helpers.PHONEEXCHANGE,
phone_1_suffix=data_helpers.PHONESUFFIX,
)
response = ["ITC\t1904\t1", data_helpers.normalize_xml_str(response), "ITC\t1\t0"]
return "\n".join(response)
[docs]
def mock_email_core_response():
response = (
"ITC 63 111 523291410 EML E-Mail Address abc@email.comITC 71 111 523291410 BEML Activity Mgr"
" email xyz@email.comITC 63 111 523291410 UNK E-Mail Address def@email.com"
)
return response
[docs]
def mock_update_email_response():
response = """
<PROCREQ PROC="1200">
<RESPONSE>OK</RESPONSE>
</PROCREQ>
"""
response = [data_helpers.normalize_xml_str(response), "ITC\t1\t0"]
return "\n".join(response)
[docs]
def mock_fail_update_email():
response = """
<PROCREQ PROC="1200">
<RESPONSE>
<FAILED_MESSAGE>CORE REFUSES TO UPDATE</FAILED_MESSAGE>
</RESPONSE>
</PROCREQ>
"""
response = [data_helpers.normalize_xml_str(response), "ITC\t1\t0"]
return "\n".join(response)