From 19fa36b194e5018653e477a0952e22a1394a1ad7 Mon Sep 17 00:00:00 2001 From: Victor Kannemacher Date: Tue, 2 Oct 2018 12:14:20 +0200 Subject: [PATCH] [bnporc] Handle new error at login with website error message When we face an error at login, bnp gives us a code. This code's signification is explained on at documentation page. This commit gets the message directly from the website. --- modules/bnporc/pp/browser.py | 4 +++- modules/bnporc/pp/pages.py | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/bnporc/pp/browser.py b/modules/bnporc/pp/browser.py index d0bc8e952e..b49f4f2c14 100644 --- a/modules/bnporc/pp/browser.py +++ b/modules/bnporc/pp/browser.py @@ -42,7 +42,7 @@ LifeInsurancesDetailPage, NatioVieProPage, CapitalisationPage, MarketListPage, MarketPage, MarketHistoryPage, MarketSynPage, RecipientsPage, ValidateTransferPage, RegisterTransferPage, AdvisorPage, - AddRecipPage, ActivateRecipPage, ProfilePage, ListDetailCardPage, + AddRecipPage, ActivateRecipPage, ProfilePage, ListDetailCardPage, ListErrorPage, ) @@ -75,6 +75,8 @@ class BNPParibasBrowser(JsonBrowserMixin, LoginBrowser): 'SEEA-pa01/devServer/seeaserver', 'https://mabanqueprivee.bnpparibas.net/fr/espace-prive/comptes-et-contrats\?u=%2FSEEA-pa01%2FdevServer%2Fseeaserver', LoginPage) + + list_error_page = URL('/rsc/contrib/document/properties/identification-fr-part-V1.json', ListErrorPage) con_threshold = URL('/fr/connexion/100-connexions', '/fr/connexion/mot-de-passe-expire', '/fr/espace-prive/100-connexions.*', diff --git a/modules/bnporc/pp/pages.py b/modules/bnporc/pp/pages.py index d3d18adba9..727ef02b4f 100644 --- a/modules/bnporc/pp/pages.py +++ b/modules/bnporc/pp/pages.py @@ -157,6 +157,12 @@ def __init__(self, page, image): self.check_symbols(self.symbols, page.browser.responses_dirname) +class ListErrorPage(JsonPage): + def get_error_message(self, error): + key = 'app.identification.erreur.' + str(error) + return self.doc[key] + + class LoginPage(JsonPage): @staticmethod def render_template(tmpl, **values): @@ -188,6 +194,7 @@ def on_load(self): error = cast(self.get('errorCode'), int, 0) # you can find api documentation on errors here : https://mabanque.bnpparibas/rsc/contrib/document/properties/identification-fr-part-V1.json if error: + error_page = self.browser.list_error_page.open() codes = [201, 21510, 203, 202] msg = self.get('message') if error in codes: @@ -200,6 +207,8 @@ def on_load(self): raise ActionNeeded(msg) elif error == 21: # "Ce service est momentanément indisponible. Veuillez renouveler votre demande ultérieurement." -> In reality, account is blocked because of too much wrongpass raise ActionNeeded(u"Compte bloqué") + elif error == 4: + raise ActionNeeded(error_page.get_error_message(error)) self.logger.debug('Unexpected error at login: "%s" (code=%s)' % (msg, error)) -- GitLab