[docs]
def mock_demographic_response():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<Responses>
<ResponseBase type="PersonDetailInquiryResponse">
<Errors/>
<RequestNumber/>
<RequestTypeCode>7711</RequestTypeCode>
<WasSuccessful>true</WasSuccessful>
<Addresses>
<PersOrgAddress>
<AddressLines>
<PersOrgAddressLine>
<AddressLineNumber>1</AddressLineNumber>
<AddressLineText>10124 Lake Creek Parkway</AddressLineText>
<AddressLineTypeCode>ST</AddressLineTypeCode>
</PersOrgAddressLine>
<PersOrgAddressLine>
<AddressLineNumber>2</AddressLineNumber>
<AddressLineText>4th Flr</AddressLineText>
<AddressLineTypeCode>ST</AddressLineTypeCode>
</PersOrgAddressLine>
</AddressLines>
<AddressNumber>213</AddressNumber>
<AddressUseCode>PRI</AddressUseCode>
<CensusTractNumber/>
<CityName>Austin</CityName>
<CountryCode>USA</CountryCode>
<CountrySubdivisionCode/>
<IsElectronic>false</IsElectronic>
<MailCode/>
<SMSANumber/>
<SeasonalAddress/>
<StateCode>TX</StateCode>
<ZipCode>78729</ZipCode>
<ZipSuffix>9999</ZipSuffix>
</PersOrgAddress>
</Addresses>
<DateLastMaintained>2019-10-07T00:00:00</DateLastMaintained>
<Demographics>
<AddDate>2013-12-31T00:00:00</AddDate>
<CreditRatingCode/>
<CreditReportCode/>
<CustomerKeyword/>
<CustomerTypeCode/>
<CustomerTypeDescription/>
<DateOfBirth>1988-07-23T00:00:00</DateOfBirth>
<DateOfDeath/>
<EducationLevel/>
<ForeignCertExpireDate/>
<GraduationDate/>
<IncomeLevel/>
<IsAllowPromCallsMsgs>true</IsAllowPromCallsMsgs>
<IsValid>true</IsValid>
<MailTypeCode/>
<MemberGroupCode>MEMB</MemberGroupCode>
<NumberOfDependents/>
<Occupation/>
<OwnOrRent/>
<PreferredLocaleCode/>
<PrivacyRequested>true</PrivacyRequested>
<PurgeFlag>false</PurgeFlag>
<Report1042sFlag>false</Report1042sFlag>
<ShareAccountNumber>200000714251</ShareAccountNumber>
<SpousePersonNumber/>
<TaxCountryCode>USA</TaxCountryCode>
<TaxCountryDescription>UNITED STATES</TaxCountryDescription>
<TaxId>123-85-2784</TaxId>
<TaxIdApplyDate/>
<TaxIdCertDate>2013-12-31T00:00:00</TaxIdCertDate>
<TaxIdDisplay>392-72-8696</TaxIdDisplay>
<TaxIdIsMasked>false</TaxIdIsMasked>
</Demographics>
<Documents/>
<ElectronicAddresses>
<PersOrgElectronicAddress>
<AddressNumber>214</AddressNumber>
<AddressUseCode>EML</AddressUseCode>
<ElectronicAddressLines>
<PersOrgElectronicAddressLine>
<AddressLineLastUpdatedDate/>
<AddressLineNumber>1</AddressLineNumber>
<AddressLineText>test@q2ebanking.com</AddressLineText>
<AddressLineTypeCode>ATTN</AddressLineTypeCode>
</PersOrgElectronicAddressLine>
</ElectronicAddressLines>
<IsElectronic>true</IsElectronic>
</PersOrgElectronicAddress>
</ElectronicAddresses>
<ForeignTaxTds/>
<MemberNumber>234567</MemberNumber>
<Name>
<FirstName>Q2First</FirstName>
<LastName>Q2Last</LastName>
<MiddleInitial>R</MiddleInitial>
<MiddleName/>
<NickName/>
<SalutationCode/>
<Suffix>Mr</Suffix>
</Name>
<Orgs/>
<PersExtOrgIds/>
<PersIds>
<PersonDetailPersId>
<CountryCode/>
<CountrySubdivisionCode/>
<Description>Driver's License (Unexpired)</Description>
<ExpireDate/>
<IdValue>B600 5367 4610 00</IdValue>
<IssueDate/>
<LastVerificationDate>2019-09-29T00:00:00</LastVerificationDate>
<PersIdTypeCode>1</PersIdTypeCode>
<StateCode>WI</StateCode>
</PersonDetailPersId>
</PersIds>
<PersTyps>
<PersonDetailPersType>
<TypeCode>CUST</TypeCode>
</PersonDetailPersType>
<PersonDetailPersType>
<TypeCode>EMP</TypeCode>
</PersonDetailPersType>
</PersTyps>
<PersonNumber>1234</PersonNumber>
<Phones>
<PersOrgPhone>
<AreaCode>123</AreaCode>
<CountryCode>USA</CountryCode>
<Exchange>456</Exchange>
<ForeignPhoneNumber/>
<IsPreferred>false</IsPreferred>
<PhoneCode/>
<PhoneExtension/>
<PhoneLastUpdatedDate/>
<PhoneNumber>7890</PhoneNumber>
<PhoneSequenceNumber>1234</PhoneSequenceNumber>
<PhoneUseCode>PER</PhoneUseCode>
</PersOrgPhone>
<PersOrgPhone>
<AreaCode>123</AreaCode>
<CountryCode>USA</CountryCode>
<Exchange>456</Exchange>
<ForeignPhoneNumber/>
<IsPreferred>false</IsPreferred>
<PhoneCode/>
<PhoneExtension/>
<PhoneLastUpdatedDate/>
<PhoneNumber>7890</PhoneNumber>
<PhoneSequenceNumber>1234</PhoneSequenceNumber>
<PhoneUseCode>BUS</PhoneUseCode>
</PersOrgPhone>
<PersOrgPhone>
<AreaCode>123</AreaCode>
<CountryCode>USA</CountryCode>
<Exchange>456</Exchange>
<ForeignPhoneNumber/>
<IsPreferred>false</IsPreferred>
<PhoneCode/>
<PhoneExtension/>
<PhoneLastUpdatedDate/>
<PhoneNumber>7890</PhoneNumber>
<PhoneSequenceNumber>1234</PhoneSequenceNumber>
<PhoneUseCode>CELL</PhoneUseCode>
</PersOrgPhone>
</Phones>
<UserFields>
<PersOrgUserField>
<UserFieldCode>8EDC</UserFieldCode>
<UserFieldDescription>Entity Date of Last Contact</UserFieldDescription>
<UserFieldValueDescription/>
<Value>2019-09-19</Value>
</PersOrgUserField>
<PersOrgUserField>
<UserFieldCode>GNDR</UserFieldCode>
<UserFieldDescription>Gender</UserFieldDescription>
<UserFieldValueDescription/>
<Value>F</Value>
</PersOrgUserField>
<PersOrgUserField>
<UserFieldCode>VEML</UserFieldCode>
<UserFieldDescription>Valid Email YN?</UserFieldDescription>
<UserFieldValueDescription/>
<Value>Y</Value>
</PersOrgUserField>
</UserFields>
</ResponseBase>
</Responses>
<UserAuthentication>
<Errors/>
<WasSuccessful>true</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""
[docs]
def get_mock_demo_mapper_cif_from_user_fields_response():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<Responses>
<ResponseBase type="PersonDetailInquiryResponse">
<Errors/>
<RequestNumber/>
<RequestTypeCode>7711</RequestTypeCode>
<WasSuccessful>true</WasSuccessful>
<Addresses>
<PersOrgAddress>
<AddressLines>
<PersOrgAddressLine>
<AddressLineNumber>1</AddressLineNumber>
<AddressLineText>10124 Lake Creek Parkway</AddressLineText>
<AddressLineTypeCode>ST</AddressLineTypeCode>
</PersOrgAddressLine>
<PersOrgAddressLine>
<AddressLineNumber>2</AddressLineNumber>
<AddressLineText>4th Flr</AddressLineText>
<AddressLineTypeCode>ST</AddressLineTypeCode>
</PersOrgAddressLine>
</AddressLines>
<AddressNumber>213</AddressNumber>
<AddressUseCode>PRI</AddressUseCode>
<CensusTractNumber/>
<CityName>Austin</CityName>
<CountryCode>USA</CountryCode>
<CountrySubdivisionCode/>
<IsElectronic>false</IsElectronic>
<MailCode/>
<SMSANumber/>
<SeasonalAddress/>
<StateCode>TX</StateCode>
<ZipCode>78729</ZipCode>
<ZipSuffix>9999</ZipSuffix>
</PersOrgAddress>
</Addresses>
<DateLastMaintained>2019-10-07T00:00:00</DateLastMaintained>
<Demographics>
<AddDate>2013-12-31T00:00:00</AddDate>
<CreditRatingCode/>
<CreditReportCode/>
<CustomerKeyword/>
<CustomerTypeCode/>
<CustomerTypeDescription/>
<DateOfBirth>1988-07-23T00:00:00</DateOfBirth>
<DateOfDeath/>
<EducationLevel/>
<ForeignCertExpireDate/>
<GraduationDate/>
<IncomeLevel/>
<IsAllowPromCallsMsgs>true</IsAllowPromCallsMsgs>
<IsValid>true</IsValid>
<MailTypeCode/>
<MemberGroupCode>MEMB</MemberGroupCode>
<NumberOfDependents/>
<Occupation/>
<OwnOrRent/>
<PreferredLocaleCode/>
<PrivacyRequested>true</PrivacyRequested>
<PurgeFlag>false</PurgeFlag>
<Report1042sFlag>false</Report1042sFlag>
<ShareAccountNumber>200000714251</ShareAccountNumber>
<SpousePersonNumber/>
<TaxCountryCode>USA</TaxCountryCode>
<TaxCountryDescription>UNITED STATES</TaxCountryDescription>
<TaxId>123-85-2784</TaxId>
<TaxIdApplyDate/>
<TaxIdCertDate>2013-12-31T00:00:00</TaxIdCertDate>
<TaxIdDisplay>392-72-8696</TaxIdDisplay>
<TaxIdIsMasked>false</TaxIdIsMasked>
</Demographics>
<Documents/>
<ElectronicAddresses>
<PersOrgElectronicAddress>
<AddressNumber>214</AddressNumber>
<AddressUseCode>EML</AddressUseCode>
<ElectronicAddressLines>
<PersOrgElectronicAddressLine>
<AddressLineLastUpdatedDate/>
<AddressLineNumber>1</AddressLineNumber>
<AddressLineText>test@q2ebanking.com</AddressLineText>
<AddressLineTypeCode>ATTN</AddressLineTypeCode>
</PersOrgElectronicAddressLine>
</ElectronicAddressLines>
<IsElectronic>true</IsElectronic>
</PersOrgElectronicAddress>
</ElectronicAddresses>
<ForeignTaxTds/>
<MemberNumber>234567</MemberNumber>
<Name>
<FirstName>Q2First</FirstName>
<LastName>Q2Last</LastName>
<MiddleInitial>R</MiddleInitial>
<MiddleName/>
<NickName/>
<SalutationCode/>
<Suffix>Mr</Suffix>
</Name>
<Orgs/>
<PersExtOrgIds/>
<PersIds>
<PersonDetailPersId>
<CountryCode/>
<CountrySubdivisionCode/>
<Description>Driver's License (Unexpired)</Description>
<ExpireDate/>
<IdValue>B600 5367 4610 00</IdValue>
<IssueDate/>
<LastVerificationDate>2019-09-29T00:00:00</LastVerificationDate>
<PersIdTypeCode>1</PersIdTypeCode>
<StateCode>WI</StateCode>
</PersonDetailPersId>
</PersIds>
<PersTyps>
<PersonDetailPersType>
<TypeCode>CUST</TypeCode>
</PersonDetailPersType>
<PersonDetailPersType>
<TypeCode>EMP</TypeCode>
</PersonDetailPersType>
</PersTyps>
<PersonNumber>1234</PersonNumber>
<Phones>
<PersOrgPhone>
<AreaCode>123</AreaCode>
<CountryCode>USA</CountryCode>
<Exchange>456</Exchange>
<ForeignPhoneNumber/>
<IsPreferred>false</IsPreferred>
<PhoneCode/>
<PhoneExtension/>
<PhoneLastUpdatedDate/>
<PhoneNumber>7890</PhoneNumber>
<PhoneSequenceNumber>1234</PhoneSequenceNumber>
<PhoneUseCode>PER</PhoneUseCode>
</PersOrgPhone>
<PersOrgPhone>
<AreaCode>123</AreaCode>
<CountryCode>USA</CountryCode>
<Exchange>456</Exchange>
<ForeignPhoneNumber/>
<IsPreferred>false</IsPreferred>
<PhoneCode/>
<PhoneExtension/>
<PhoneLastUpdatedDate/>
<PhoneNumber>7890</PhoneNumber>
<PhoneSequenceNumber>1234</PhoneSequenceNumber>
<PhoneUseCode>BUS</PhoneUseCode>
</PersOrgPhone>
<PersOrgPhone>
<AreaCode>123</AreaCode>
<CountryCode>USA</CountryCode>
<Exchange>456</Exchange>
<ForeignPhoneNumber/>
<IsPreferred>false</IsPreferred>
<PhoneCode/>
<PhoneExtension/>
<PhoneLastUpdatedDate/>
<PhoneNumber>7890</PhoneNumber>
<PhoneSequenceNumber>1234</PhoneSequenceNumber>
<PhoneUseCode>CELL</PhoneUseCode>
</PersOrgPhone>
<PersOrgPhone />
</Phones>
<UserFields>
<PersOrgUserField>
<UserFieldCode>8EDC</UserFieldCode>
<UserFieldDescription>Entity Date of Last Contact</UserFieldDescription>
<UserFieldValueDescription/>
<Value>2019-09-19</Value>
</PersOrgUserField>
<PersOrgUserField>
<UserFieldCode>GNDR</UserFieldCode>
<UserFieldDescription>Gender</UserFieldDescription>
<UserFieldValueDescription/>
<Value>F</Value>
</PersOrgUserField>
<PersOrgUserField>
<UserFieldCode>VEML</UserFieldCode>
<UserFieldDescription>Valid Email YN?</UserFieldDescription>
<UserFieldValueDescription/>
<Value>Y</Value>
</PersOrgUserField>
<PersOrgUserField>
<UserFieldCode>Q2ID</UserFieldCode>
<UserFieldDescription>Q2 EAgreement ID</UserFieldDescription>
<UserFieldValueDescription/>
<Value>P123456</Value>
</PersOrgUserField>
</UserFields>
</ResponseBase>
</Responses>
<UserAuthentication>
<Errors/>
<WasSuccessful>true</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""
[docs]
def mock_error_demographic_response():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<Responses>
<ResponseBase type="PersonDetailInquiryResponse">
<Errors>
<Error>
<ErrorMessage>One of the following: Person number, Member number or TaxId is required</ErrorMessage>
<ErrorNumber>100001</ErrorNumber>
<OraErrorMessage>User-Defined Exception</OraErrorMessage>
<RtxnExceptionMessage/>
<RtxnExceptionNumber/>
</Error>
</Errors>
<RequestNumber/>
<RequestTypeCode>7711</RequestTypeCode>
<WasSuccessful>false</WasSuccessful>
<Addresses/>
<DateLastMaintained/>
<Demographics>
<AddDate/>
<CreditRatingCode/>
<CreditReportCode/>
<CustomerKeyword/>
<CustomerTypeCode/>
<CustomerTypeDescription/>
<DateOfBirth/>
<DateOfDeath/>
<EducationLevel/>
<ForeignCertExpireDate/>
<GraduationDate/>
<IncomeLevel/>
<IsAllowPromCallsMsgs/>
<IsValid/>
<MailTypeCode/>
<MemberGroupCode/>
<NumberOfDependents/>
<Occupation/>
<OwnOrRent/>
<PreferredLocaleCode/>
<PrivacyRequested/>
<PurgeFlag/>
<Report1042sFlag/>
<ShareAccountNumber/>
<SpousePersonNumber/>
<TaxCountryCode/>
<TaxCountryDescription/>
<TaxId/>
<TaxIdApplyDate/>
<TaxIdCertDate/>
<TaxIdDisplay/>
<TaxIdIsMasked/>
</Demographics>
<Documents/>
<ElectronicAddresses/>
<ForeignTaxTds/>
<MemberNumber/>
<Name>
<FirstName/>
<LastName/>
<MiddleInitial/>
<MiddleName/>
<NickName/>
<SalutationCode/>
<Suffix/>
</Name>
<Orgs/>
<PersExtOrgIds/>
<PersIds/>
<PersTyps/>
<PersonNumber/>
<Phones/>
<UserFields/>
</ResponseBase>
</Responses>
<UserAuthentication>
<Errors/>
<WasSuccessful>true</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""
[docs]
def mock_error_user_authentication_response():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<Responses/>
<UserAuthentication>
<Errors>
<Error>
<ErrorMessage>java.lang.IllegalArgumentException: Length of Base64 encoded input string is not a multiple of 4. at DigitalSignatureVerify.base64decode(DIGITALSIGNATUREVERIFY_JAVA) at DigitalSignatureVerify.verif </ErrorMessage>
<ErrorNumber>510001</ErrorNumber>
<OraErrorMessage/>
<RtxnExceptionMessage/>
<RtxnExceptionNumber/>
</Error>
</Errors>
<WasSuccessful>false</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""
[docs]
def mock_update_demographic_response():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<Responses>
<ResponseBase type="PersonMaintenanceResponse">
<Errors/>
<RequestNumber/>
<RequestTypeCode>7707</RequestTypeCode>
<WasSuccessful>true</WasSuccessful>
<PersonNumber>1163</PersonNumber>
</ResponseBase>
</Responses>
<UserAuthentication>
<Errors/>
<WasSuccessful>true</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""
[docs]
def mock_error_update_demographic_info_response():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<Responses>
<ResponseBase type="PersonMaintenanceResponse">
<Errors>
<Error>
<ErrorMessage>Calling FUNC_IsPhoneDetailsValid.</ErrorMessage>
<ErrorNumber>6502</ErrorNumber>
<OraErrorMessage>ORA-06502: PL/SQL: numeric or value error: character string buffer too small</OraErrorMessage>
<RtxnExceptionMessage/>
<RtxnExceptionNumber/>
</Error>
</Errors>
<RequestNumber/>
<RequestTypeCode>7707</RequestTypeCode>
<WasSuccessful>false</WasSuccessful>
<PersonNumber/>
</ResponseBase>
</Responses>
<UserAuthentication>
<Errors/>
<WasSuccessful>true</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""
[docs]
def mock_error_update_demographic_info_response_2():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<UserAuthentication>
<Errors>
<Error>
<ErrorMessage>UserAuth has failed</ErrorMessage>
</Error>
</Errors>
<WasSuccessful>true</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""
[docs]
def mock_account_details_response():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<Responses>
<ResponseBase type="AccountDetailInquiryResponse">
<Errors/>
<RequestNumber/>
<RequestTypeCode>7702</RequestTypeCode>
<WasSuccessful>true</WasSuccessful>
<AccountClassDescription/>
<AccountCollateralAccounts/>
<AccountCurrencyCode>USD</AccountCurrencyCode>
<AccountExternalOrganizationIds/>
<AccountLoanLimitHistoryRecords/>
<AccountMaturityDate/>
<AccountNickName/>
<AccountNumber>100238054000</AccountNumber>
<Agreements>
<Agreement>
<AgreementNumber>13522</AgreementNumber>
<AgreementPersonNumber>171818</AgreementPersonNumber>
<AgreementTypeCode>VRU</AgreementTypeCode>
</Agreement>
<Agreement>
<AgreementNumber>46867</AgreementNumber>
<AgreementPersonNumber>583706</AgreementPersonNumber>
<AgreementTypeCode>VRU</AgreementTypeCode>
</Agreement>
<Agreement>
<AgreementNumber>363911</AgreementNumber>
<AgreementPersonNumber>583706</AgreementPersonNumber>
<AgreementTypeCode>DBT</AgreementTypeCode>
</Agreement>
</Agreements>
<AmountDue>0</AmountDue>
<AmountToPayCurrent/>
<AvailableBalance>914.13</AvailableBalance>
<AvailableCredit>0</AvailableCredit>
<AvailableToDraw/>
<Balances>
<Balance>
<AccuredInterest>0.12522</AccuredInterest>
<AvailableAmount>914.13</AvailableAmount>
<BalanceAmount>914.13</BalanceAmount>
<BalanceCategoryCode>NOTE</BalanceCategoryCode>
<BalanceTypeCode>BAL</BalanceTypeCode>
<CardHold>0</CardHold>
<CheckHold>0</CheckHold>
<CollectedMonthToDateAverage>914.13</CollectedMonthToDateAverage>
<CollectedYearToDateAverage>780.97</CollectedYearToDateAverage>
<ManagementHold>0</ManagementHold>
<MonthToDateAverage>914.13</MonthToDateAverage>
<ParticipantAgreementNumber/>
<YearToDateAverage>780.97</YearToDateAverage>
</Balance>
<Balance>
<AccuredInterest/>
<AvailableAmount/>
<BalanceAmount/>
<BalanceCategoryCode>NOTE</BalanceCategoryCode>
<BalanceTypeCode>INT</BalanceTypeCode>
<CardHold/>
<CheckHold/>
<CollectedMonthToDateAverage/>
<CollectedYearToDateAverage/>
<ManagementHold/>
<MonthToDateAverage/>
<ParticipantAgreementNumber/>
<YearToDateAverage/>
</Balance>
<Balance>
<AccuredInterest/>
<AvailableAmount/>
<BalanceAmount/>
<BalanceCategoryCode>COFF</BalanceCategoryCode>
<BalanceTypeCode>BAL</BalanceTypeCode>
<CardHold/>
<CheckHold/>
<CollectedMonthToDateAverage/>
<CollectedYearToDateAverage/>
<ManagementHold/>
<MonthToDateAverage/>
<ParticipantAgreementNumber/>
<YearToDateAverage/>
</Balance>
<Balance>
<AccuredInterest/>
<AvailableAmount/>
<BalanceAmount/>
<BalanceCategoryCode>NOTE</BalanceCategoryCode>
<BalanceTypeCode>GINT</BalanceTypeCode>
<CardHold/>
<CheckHold/>
<CollectedMonthToDateAverage/>
<CollectedYearToDateAverage/>
<ManagementHold/>
<MonthToDateAverage/>
<ParticipantAgreementNumber/>
<YearToDateAverage/>
</Balance>
</Balances>
<BillingLeadDaysOverride/>
<BorrowerAvailable/>
<BranchOrganizationName>GREEN BAY-LINEVILLE RD.</BranchOrganizationName>
<BranchOrganizationNumber>154</BranchOrganizationNumber>
<CardHoldAmount>0</CardHoldAmount>
<CheckHoldAmount>0</CheckHoldAmount>
<ClassNumber/>
<CloseReasonCode/>
<CloseReasonCodeDescription/>
<ContractDate/>
<CreditLimit/>
<CurrentAccountStatusCode>ACT</CurrentAccountStatusCode>
<CurrentAccountStatusDescription>Active</CurrentAccountStatusDescription>
<CurrentBalance>914.13</CurrentBalance>
<CurrentTerm/>
<CurrentYearInterestPaid/>
<DeliveryMethodCode>EML</DeliveryMethodCode>
<DeliveryMethodCodeDescription>Email</DeliveryMethodCodeDescription>
<DueDate/>
<EscrowBalance/>
<EscrowCurrentlyDue/>
<ExternalAmount/>
<ExternalAmountEffectiveDate/>
<ExternalAnnualCost/>
<ExternalEntityId/>
<ExternalEntityOrganizationNumber/>
<ExternalInterestRate/>
<ExternalOrganizationName/>
<FeesCurrentlyDue/>
<ForbearanceBalance/>
<HSAEvents/>
<InterestAccountCycleCode>EOQ</InterestAccountCycleCode>
<InterestAccountCycleCodeDescription>End of Quarter</InterestAccountCycleCodeDescription>
<InterestBalance/>
<InterestCurrentlyDue/>
<InterestDate/>
<InterestPaidToDate/>
<InterestRate>0.0025</InterestRate>
<InterestYield>0.0025023</InterestYield>
<IsChecks>true</IsChecks>
<IsExternalEntity>false</IsExternalEntity>
<IsFamily/>
<IsImminentDefault/>
<IsLoanLimit>false</IsLoanLimit>
<IsNewAccountClass/>
<IsPassbook>false</IsPassbook>
<IsPrinSurplusProc/>
<IsRestriction>false</IsRestriction>
<IsRestrictionExists/>
<IsRetirement>false</IsRetirement>
<IsRevolvingLoan/>
<IsTransactionAccount>true</IsTransactionAccount>
<IsValid>true</IsValid>
<LastContactDate>2019-10-18T00:00:00</LastContactDate>
<LastDepositDate/>
<LastInterestCreditAmount/>
<LastInterestCreditDate/>
<LastInterestRateChangeDate/>
<LastPaymentAmount/>
<LastPaymentDate/>
<LastRenewalDate/>
<LastStatementDate>2019-09-30T00:00:00</LastStatementDate>
<LateChargesCurrentlyDue/>
<LoanBranchOrganizationNumber/>
<LoanInterestRate/>
<LoanMaturityDate/>
<LoanNickName/>
<MLAggregateBalance/>
<MajorAccountTypeCode>SAV</MajorAccountTypeCode>
<ManagementHoldAmount>0</ManagementHoldAmount>
<MaturityAnticipatedPayoffDate/>
<MinorAccountTypeCode>SV01</MinorAccountTypeCode>
<MinorCustomerDescription>Regular</MinorCustomerDescription>
<NSFToleranceAmount/>
<NetLoanInProcessBalance/>
<NextPaymentDueDate/>
<OpenDate>1995-11-28T00:00:00</OpenDate>
<OperatingFundAccruedInt/>
<OperatingFundBalance/>
<OperatingFundIntRate/>
<OrgPersons/>
<OriginalLoanAmount/>
<OrignalLTVRatio/>
<OwnershipCode>JO</OwnershipCode>
<OwnershipCodeDescription>Joint OR</OwnershipCodeDescription>
<PaymentMethodCode/>
<PaymentStatus/>
<PayoffBalance/>
<PayoffBalanceAsOfDate/>
<PersonOrganizationUserFields/>
<PmtCalPeriods/>
<PrincipalBalance/>
<PrincipalCurrentlyDue/>
<PriorInterestRate/>
<PriorYearInterestPaid/>
<ProductFullName>Regular Savings</ProductFullName>
<ProductName>Regular</ProductName>
<RegD3Count/>
<RegD6Count/>
<RegDDAvailableBalance>914.13</RegDDAvailableBalance>
<RegEODOptional/>
<RegularPaymentAmount/>
<RemainingPayments/>
<RetirementAccountNumber/>
<RetirementPlanCategory/>
<RetirementPlanType/>
<Roles>
<RoleDetail>
<CanTransact>true</CanTransact>
<EntityName>PAMELA V. ERDMANN</EntityName>
<EntityNumber>583706</EntityNumber>
<EntityTypeCode>PERS</EntityTypeCode>
<IsEmployeeRole>false</IsEmployeeRole>
<RoleCode>OWN</RoleCode>
<RoleDescription>NonTax Owner</RoleDescription>
</RoleDetail>
<RoleDetail>
<CanTransact>true</CanTransact>
<EntityName>PAMELA V. ERDMANN</EntityName>
<EntityNumber>583706</EntityNumber>
<EntityTypeCode>PERS</EntityTypeCode>
<IsEmployeeRole>false</IsEmployeeRole>
<RoleCode>SIGN</RoleCode>
<RoleDescription>NonTax Signator</RoleDescription>
</RoleDetail>
<RoleDetail>
<CanTransact>true</CanTransact>
<EntityName>RICKY L. ERDMANN</EntityName>
<EntityNumber>171818</EntityNumber>
<EntityTypeCode>PERS</EntityTypeCode>
<IsEmployeeRole>false</IsEmployeeRole>
<RoleCode>TAX</RoleCode>
<RoleDescription>Tax Reported For</RoleDescription>
</RoleDetail>
<RoleDetail>
<CanTransact>true</CanTransact>
<EntityName>RICKY L. ERDMANN</EntityName>
<EntityNumber>171818</EntityNumber>
<EntityTypeCode>PERS</EntityTypeCode>
<IsEmployeeRole>false</IsEmployeeRole>
<RoleCode>OTAX</RoleCode>
<RoleDescription>Tax Reported Owner</RoleDescription>
</RoleDetail>
<RoleDetail>
<CanTransact>true</CanTransact>
<EntityName>RICKY L. ERDMANN</EntityName>
<EntityNumber>171818</EntityNumber>
<EntityTypeCode>PERS</EntityTypeCode>
<IsEmployeeRole>false</IsEmployeeRole>
<RoleCode>STAX</RoleCode>
<RoleDescription>Tax Reported Signator</RoleDescription>
</RoleDetail>
</Roles>
<ShareCurrentYearInterestPaid>1.04</ShareCurrentYearInterestPaid>
<SharePriorYearInterestPaid>1.74</SharePriorYearInterestPaid>
<SignerFullname>RICKY L. ERDMANN</SignerFullname>
<SignerPersonNumber>171818</SignerPersonNumber>
<SourceCode/>
<SourceCodeDescription/>
<StatementAccountCycleCode>EOM</StatementAccountCycleCode>
<StatementAccountCycleCodeDescription>End of Month</StatementAccountCycleCodeDescription>
<TaxOrganizationNumber/>
<TaxOwnerFullname>RICKY L. ERDMANN</TaxOwnerFullname>
<TaxPersonNumber>171818</TaxPersonNumber>
<TotalAmountCurrentlyDue/>
<TotalPerDiem/>
<UCFToleranceAmount/>
</ResponseBase>
</Responses>
<UserAuthentication>
<Errors/>
<WasSuccessful>true</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""
[docs]
def mock_demographic_response_without_phone_and_email_nodes():
return """
<SubmitRequestResponse>
<SubmitRequestResult>
<Output>
<ExtensionResponses/>
<Responses>
<ResponseBase type="PersonDetailInquiryResponse">
<Errors/>
<RequestNumber/>
<RequestTypeCode>7711</RequestTypeCode>
<WasSuccessful>true</WasSuccessful>
<Addresses>
<PersOrgAddress>
<AddressLines>
<PersOrgAddressLine>
<AddressLineNumber>1</AddressLineNumber>
<AddressLineText>10124 Lake Creek Parkway</AddressLineText>
<AddressLineTypeCode>ST</AddressLineTypeCode>
</PersOrgAddressLine>
</AddressLines>
<AddressNumber>213</AddressNumber>
<AddressUseCode>PRI</AddressUseCode>
<CensusTractNumber/>
<CityName>Austin</CityName>
<CountryCode>USA</CountryCode>
<CountrySubdivisionCode/>
<IsElectronic>false</IsElectronic>
<MailCode/>
<SMSANumber/>
<SeasonalAddress/>
<StateCode>TX</StateCode>
<ZipCode>78729</ZipCode>
<ZipSuffix/>
</PersOrgAddress>
</Addresses>
<DateLastMaintained>2019-10-07T00:00:00</DateLastMaintained>
<Demographics>
<AddDate>2013-12-31T00:00:00</AddDate>
<CreditRatingCode/>
<CreditReportCode/>
<CustomerKeyword/>
<CustomerTypeCode/>
<CustomerTypeDescription/>
<DateOfBirth>1988-07-23T00:00:00</DateOfBirth>
<DateOfDeath/>
<EducationLevel/>
<ForeignCertExpireDate/>
<GraduationDate/>
<IncomeLevel/>
<IsAllowPromCallsMsgs>true</IsAllowPromCallsMsgs>
<IsValid>true</IsValid>
<MailTypeCode/>
<MemberGroupCode>MEMB</MemberGroupCode>
<NumberOfDependents/>
<Occupation/>
<OwnOrRent/>
<PreferredLocaleCode/>
<PrivacyRequested>true</PrivacyRequested>
<PurgeFlag>false</PurgeFlag>
<Report1042sFlag>false</Report1042sFlag>
<ShareAccountNumber>200000714251</ShareAccountNumber>
<SpousePersonNumber/>
<TaxCountryCode>USA</TaxCountryCode>
<TaxCountryDescription>UNITED STATES</TaxCountryDescription>
<TaxId>123-85-2784</TaxId>
<TaxIdApplyDate/>
<TaxIdCertDate>2013-12-31T00:00:00</TaxIdCertDate>
<TaxIdDisplay>392-72-8696</TaxIdDisplay>
<TaxIdIsMasked>false</TaxIdIsMasked>
</Demographics>
<Documents/>
<ElectronicAddresses/>
<ForeignTaxTds/>
<MemberNumber>234567</MemberNumber>
<Name>
<FirstName>Q2First</FirstName>
<LastName>Q2Last</LastName>
<MiddleInitial>R</MiddleInitial>
<MiddleName/>
<NickName/>
<SalutationCode/>
<Suffix/>
</Name>
<Orgs/>
<PersExtOrgIds/>
<PersIds>
<PersonDetailPersId>
<CountryCode/>
<CountrySubdivisionCode/>
<Description>Driver's License (Unexpired)</Description>
<ExpireDate/>
<IdValue>B600 5367 4610 00</IdValue>
<IssueDate/>
<LastVerificationDate>2019-09-29T00:00:00</LastVerificationDate>
<PersIdTypeCode>1</PersIdTypeCode>
<StateCode>WI</StateCode>
</PersonDetailPersId>
</PersIds>
<PersTyps>
<PersonDetailPersType>
<TypeCode>CUST</TypeCode>
</PersonDetailPersType>
<PersonDetailPersType>
<TypeCode>EMP</TypeCode>
</PersonDetailPersType>
</PersTyps>
<PersonNumber>1234</PersonNumber>
<Phones/>
<UserFields>
<PersOrgUserField>
<UserFieldCode>8EDC</UserFieldCode>
<UserFieldDescription>Entity Date of Last Contact</UserFieldDescription>
<UserFieldValueDescription/>
<Value>2019-09-19</Value>
</PersOrgUserField>
<PersOrgUserField>
<UserFieldCode>GNDR</UserFieldCode>
<UserFieldDescription>Gender</UserFieldDescription>
<UserFieldValueDescription/>
<Value>F</Value>
</PersOrgUserField>
<PersOrgUserField>
<UserFieldCode>VEML</UserFieldCode>
<UserFieldDescription>Valid Email YN?</UserFieldDescription>
<UserFieldValueDescription/>
<Value>Y</Value>
</PersOrgUserField>
</UserFields>
</ResponseBase>
</Responses>
<UserAuthentication>
<Errors/>
<WasSuccessful>true</WasSuccessful>
</UserAuthentication>
</Output>
</SubmitRequestResult>
</SubmitRequestResponse>
"""