Пример #1
0
    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)
Пример #2
0
 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.')
Пример #5
0
    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.')
Пример #8
0
 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)
Пример #10
0
    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)
Пример #11
0
 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()
         )
Пример #12
0
    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')
Пример #13
0
    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')
Пример #14
0
    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
                })
Пример #15
0
 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.')