def test_invalid_accounts(self): errors = [] for bank_data in self.invalid_combinations: try: BrazilianBank.get(bank_data['bank_code'])( branch=bank_data['branch'], branch_digit=bank_data['branch_digit'], account=bank_data['account'], account_digit=bank_data['account_digit'], ).execute() errors.append(bank_data) except ( InvalidBranch, InvalidAccount, InvalidBranchAndAccountCombination, ): # that's the expected scenario # just like an assertRaises for multiple exceptions pass if errors: msg = '{} accounts were not successfully validated.'.format( len(errors)) for error in errors: msg += ('\naccount_number_validator("{}", "{}", "{}") ' 'returned True (expected False)').format(*error) self.fail(msg)
def test_not_implemented_bank(self): with self.assertRaises(BankNotImplemented) as e: BrazilianBank.get(999) self.assertEqual( str(e.exception), ('Bank code "999" is not implemented for country "BR" ' 'or it does not exist at all.'), )
def test_invalid_branch_account_combination(self): data = { 'bank_code': '033', 'branch': '2006', 'branch_digit': '', 'account': '01008407', 'account_digit': '1', # should be '4' } with self.assertRaises(InvalidBranchAndAccountCombination) as e: BrazilianBank.get(data['bank_code'])(**data).execute() self.assertEqual(e.exception.message, 'Combination (branch="2006", account="01008407-1") does not match.')
def test_invalid_account_digit(self): data = { 'bank_code': '237', 'branch': '1769', 'branch_digit': '8', 'account': '200040', 'account_digit': '1', # should be '7' } with self.assertRaises(InvalidAccount) as e: BrazilianBank.get(data['bank_code'])(**data).execute() self.assertEqual(e.exception.message, 'Account "0200040-1" is wrong.')
def test_invalid_branch_digit(self): data = { 'bank_code': '237', 'branch': '1769', 'branch_digit': '1', # should be '8' 'account': '200040', 'account_digit': '7', } with self.assertRaises(InvalidBranch) as e: BrazilianBank.get(data['bank_code'])(**data).execute() self.assertEqual(str(e.exception), 'Branch "1769-1" is wrong.')
def test_invalid_branch_account_combination(self): data = { 'bank_code': '033', 'branch': '2006', 'branch_digit': '', 'account': '01008407', 'account_digit': '1', # should be '4' } with self.assertRaises(InvalidBranchAndAccountCombination) as e: BrazilianBank.get(data['bank_code'])(**data).execute() self.assertEquals(e.exception.message, 'Combination (branch="2006", account="01008407-1") does not match.')
def test_invalid_account_digit(self): data = { 'bank_code': '237', 'branch': '1769', 'branch_digit': '8', 'account': '200040', 'account_digit': '1', # should be '7' } with self.assertRaises(InvalidAccount) as e: BrazilianBank.get(data['bank_code'])(**data).execute() self.assertEquals(e.exception.message, 'Account "0200040-1" is wrong.')
def test_common(self): for branch, expected_dv in BANRISUL['correct_data']: self.assertTrue( BrazilianBank.get('041')( branch=branch, branch_digit=expected_dv, account='1', account_digit='1', ).validate_branch_digit())
def test_valid_accounts(self): errors = [] for bank_data in self.valid_combinations: try: BrazilianBank.get(bank_data['bank_code'])( branch=bank_data['branch'], branch_digit=bank_data['branch_digit'], account=bank_data['account'], account_digit=bank_data['account_digit'] ).execute() except (InvalidBranch, InvalidAccount, InvalidBranchAndAccountCombination): errors.append(bank_data) if errors: msg = '{} accounts were not successfully validated.'.format(len(errors)) for error in errors: msg += "\naccount_number_validator('{}', '{}', '{}') returned False (expected True)".format(*error) self.fail(msg)
def test_common(self): for branch, expected_dv in BANRISUL['correct_data']: self.assertTrue( BrazilianBank.get('041')( branch=branch, branch_digit=expected_dv, account='1', account_digit='1' ).validate_branch_digit() )
def setUp(self): super(PreconditionExceptionsTestCase, self).setUp() self.valid_data = { 'branch': '1769', 'branch_digit': '8', 'account': '200040', 'account_digit': '7', } self.bank = BrazilianBank.get('237')
def clean(self): cleaned_data = super().clean() banco = str(cleaned_data.get("banco")) numero_agencia = str(cleaned_data.get("numero_agencia")) digito_verificador_agencia = str( cleaned_data.get("digito_verificador_agencia")) numero_conta_bancaria = str(cleaned_data.get("numero_conta_bancaria")) digito_verificador_conta_bancaria = str( cleaned_data.get("digito_verificador_conta_bancaria")) BANKS = requests.get( 'https://gist.githubusercontent.com/antoniopresto/d73888dab087ae35a7cf41a61d8a3cbc/raw/43c94b305367afa82734f6fb4480f55e77e08a6e/banco_codigo.json' ).json() label_banco = None for bank in BANKS: if bank['value'] == banco: label_banco = bank['label'] try: bank_class = BrazilianBank.get(banco) bank_class( branch=numero_agencia, branch_digit=digito_verificador_agencia, account=numero_conta_bancaria, account_digit=digito_verificador_conta_bancaria).execute() except InvalidBranch: raise forms.ValidationError(self.error_messages['invalid_branch'], code='invalid_branch', params={ 'agencia_e_digito': numero_agencia + '-' + digito_verificador_agencia }) except InvalidAccount: raise forms.ValidationError(self.error_messages['invalid_account'], code='invalid_account', params={ 'conta_e_digito': numero_conta_bancaria + '-' + digito_verificador_conta_bancaria }) except InvalidBranchAndAccountCombination: raise forms.ValidationError( self.error_messages['invalid_branch_and_account_combination'], code='invalid_branch_and_account_combination', params={ 'agencia': numero_agencia, 'conta_e_digito': numero_conta_bancaria + '-' + digito_verificador_conta_bancaria }) except InvalidBranchlength: raise forms.ValidationError( self.error_messages['invalid_branch_length'], code='invalid_branch_length', params={ 'banco': label_banco, 'agencia_length': bank_class.branch_length }) except InvalidAccountlength: raise forms.ValidationError( self.error_messages['invalid_account_length'], code='invalid_account_length', params={ 'banco': label_banco, 'conta_length': bank_class.account_length }) except MissingBranchDigit: raise forms.ValidationError( self.error_messages['missing_branch_digit'], code='missing_branch_digit', params={ 'banco': label_banco, 'digito_agencia_length': bank_class.branch_digit_length }) except UnexpectedBranchDigit: raise forms.ValidationError( self.error_messages['unexpected_branch_digit'], code='unexpected_branch_digit', params={ 'banco': label_banco, 'digito_agencia_length': bank_class.branch_digit_length }) except MissingAccountDigit: raise forms.ValidationError( self.error_messages['missing_account_digit'], code='missing_account_digit', params={ 'banco': label_banco, 'digito_conta_length': bank_class.account_digit_length }) except UnexpectedAccountDigit: raise forms.ValidationError( self.error_messages['unexpected_account_digit'], code='unexpected_account_digit', params={ 'banco': label_banco, 'digito_conta_length': bank_class.account_digit_length })
def test_not_implemented_bank(self): with self.assertRaises(BankNotImplemented) as e: BrazilianBank.get(999) self.assertEquals(e.exception.message, 'Bank code "999" is not implemented for country "BR"- or it does not exist at all.')