86 lines
3.2 KiB
C
86 lines
3.2 KiB
C
/******************************************************************************
|
|
* @file test_bank_proposal.c
|
|
* @brief Tests unitaires du modèle bancaire et de l'analyse d'IBAN / RIB / BIC.
|
|
******************************************************************************/
|
|
#include "core/bank_proposal.h"
|
|
#include <glib.h>
|
|
|
|
static void test_iban_validation(void)
|
|
{
|
|
/* IBAN français synthétique avec MOD-97 et RIB valide */
|
|
const char *valid_fr = "FR4830002005500000000000052";
|
|
g_assert_true(bank_proposal_validate_iban(valid_fr));
|
|
|
|
|
|
|
|
/* IBAN invalide (mauvaise clé) */
|
|
const char *invalid_fr = "FR0030002005500000000000021";
|
|
g_assert_false(bank_proposal_validate_iban(invalid_fr));
|
|
|
|
/* IBAN trop court */
|
|
g_assert_false(bank_proposal_validate_iban("FR763000"));
|
|
}
|
|
|
|
static void test_bic_validation(void)
|
|
{
|
|
g_assert_true(bank_proposal_validate_bic("BNPAFRPPXXX"));
|
|
g_assert_true(bank_proposal_validate_bic("BNPAFRPP"));
|
|
g_assert_false(bank_proposal_validate_bic("BNPAFR"));
|
|
g_assert_false(bank_proposal_validate_bic("INVALID BIC!"));
|
|
}
|
|
|
|
static void test_french_rib_derivation(void)
|
|
{
|
|
const char *valid_fr = "FR4830002005500000000000052";
|
|
BankProposal *proposal = bank_proposal_analyze_text(valid_fr, "evidence-123");
|
|
g_assert_nonnull(proposal);
|
|
g_assert_true(proposal->is_iban_valid);
|
|
g_assert_true(proposal->is_derived_bban);
|
|
g_assert_cmpstr(proposal->country_code, ==, "FR");
|
|
g_assert_cmpstr(proposal->bank_code, ==, "30002");
|
|
g_assert_cmpstr(proposal->branch_code, ==, "00550");
|
|
g_assert_cmpstr(proposal->account_number, ==, "00000000000");
|
|
g_assert_cmpstr(proposal->rib_key, ==, "52");
|
|
g_assert_cmpstr(proposal->evidence_id, ==, "evidence-123");
|
|
g_assert_cmpstr(proposal->verification_status, ==, "proposed");
|
|
|
|
bank_proposal_free(proposal);
|
|
}
|
|
|
|
static void test_structured_values(void)
|
|
{
|
|
static const char text[] =
|
|
"IBAN : FR48 3000 2005 5000 0000 0000 052\n"
|
|
"BIC : bnpafrppxxx\n"
|
|
"Titulaire : Élodie Exemple\n"
|
|
"Banque : Banque Synthétique\n"
|
|
"Adresse de la banque : 1 rue des Tests\n";
|
|
BankProposal *proposal = bank_proposal_analyze_text(
|
|
text,
|
|
"synthetic-evidence"
|
|
);
|
|
|
|
g_assert_nonnull(proposal);
|
|
g_assert_cmpstr(proposal->raw_iban, ==,
|
|
"FR48 3000 2005 5000 0000 0000 052");
|
|
g_assert_cmpstr(proposal->normalized_iban, ==,
|
|
"FR4830002005500000000000052");
|
|
g_assert_cmpstr(proposal->raw_bic, ==, "bnpafrppxxx");
|
|
g_assert_cmpstr(proposal->bic, ==, "BNPAFRPPXXX");
|
|
g_assert_cmpstr(proposal->holder_name, ==, "Élodie Exemple");
|
|
g_assert_cmpstr(proposal->bank_name, ==, "Banque Synthétique");
|
|
g_assert_cmpstr(proposal->bank_address, ==, "1 rue des Tests");
|
|
g_assert_cmpstr(proposal->iban_validation, ==, "valid");
|
|
bank_proposal_free(proposal);
|
|
}
|
|
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
g_test_init(&argc, &argv, NULL);
|
|
g_test_add_func("/bank-proposal/iban-validation", test_iban_validation);
|
|
g_test_add_func("/bank-proposal/bic-validation", test_bic_validation);
|
|
g_test_add_func("/bank-proposal/french-rib-derivation", test_french_rib_derivation);
|
|
g_test_add_func("/bank-proposal/structured-values", test_structured_values);
|
|
return g_test_run();
|
|
}
|