Commit 0fe5ef45 authored by Antoine's avatar Antoine
Browse files

Add support to BrowserQuestion WebOOB exception. Fixes #848.

parent 252c866f
......@@ -13,6 +13,7 @@ export function get(name) {
const Errors = {
ACTION_NEEDED: get('ACTION_NEEDED'),
AUTH_METHOD_NYI: get('AUTH_METHOD_NYI'),
BROWSER_QUESTION: get('BROWSER_QUESTION'),
EXPIRED_PASSWORD: get('EXPIRED_PASSWORD'),
GENERIC_EXCEPTION: get('GENERIC_EXCEPTION'),
INVALID_PARAMETERS: get('INVALID_PARAMETERS'),
......
......@@ -555,6 +555,9 @@ function handleFirstSyncError(err) {
case Errors.AUTH_METHOD_NYI:
notify.error($t('client.sync.auth_method_nyi'));
break;
case Errors.BROWSER_QUESTION:
notify.error($t('client.sync.browser_question'));
break;
default:
genericErrorHandler(err);
break;
......
......@@ -18,6 +18,7 @@ from weboob.exceptions import (
AuthMethodNotImplemented,
BrowserIncorrectPassword,
BrowserPasswordExpired,
BrowserQuestion,
NoAccountsException,
ModuleInstallError,
ModuleLoadError
......@@ -151,6 +152,8 @@ class FakeBankModule(Module, CapBank):
raise BrowserPasswordExpired
if login == 'authmethodnotimplemented':
raise AuthMethodNotImplemented
if login == 'browserquestion':
raise BrowserQuestion
if login not in ['noerror', 'session']:
self.random_errors(rate)
......
......@@ -93,6 +93,7 @@ with open(ERRORS_PATH, 'r') as f:
INTERNAL_ERROR = ERRORS['INTERNAL_ERROR']
NO_PASSWORD = ERRORS['NO_PASSWORD']
CONNECTION_ERROR = ERRORS['CONNECTION_ERROR']
BROWSER_QUESTION = ERRORS['BROWSER_QUESTION']
def fail_unset_field(field, error_type=INVALID_PARAMETERS):
......@@ -126,6 +127,7 @@ try:
AuthMethodNotImplemented,
BrowserIncorrectPassword,
BrowserPasswordExpired,
BrowserQuestion,
NoAccountsException,
ModuleInstallError,
ModuleLoadError
......@@ -622,6 +624,8 @@ class Connector(object):
results['error_code'] = UNKNOWN_MODULE
except BrowserPasswordExpired:
results['error_code'] = EXPIRED_PASSWORD
except BrowserQuestion:
results['error_code'] = BROWSER_QUESTION
except AuthMethodNotImplemented:
results['error_code'] = AUTH_METHOD_NYI
except ActionNeeded as exc:
......
{
"ACTION_NEEDED": "ACTION_NEEDED",
"AUTH_METHOD_NYI": "AUTH_METHOD_NYI",
"BROWSER_QUESTION": "BROWSER_QUESTION",
"CONNECTION_ERROR": "CONNECTION_ERROR",
"EXPIRED_PASSWORD": "EXPIRED_PASSWORD",
"GENERIC_EXCEPTION": "GENERIC_EXCEPTION",
......
......@@ -418,6 +418,7 @@
"unknown_error": "This is an error unknown to Kresus, please try updating Weboob, and if it doesn't work, please report the error.",
"action_needed": "Your bank's website requires a manual action from you. Please log in manually on your bank's website, follow the instructions, and try again.",
"auth_method_nyi": "The authentication method set for your account is not supported by the module. Please change it on your bank's website to use Kresus.",
"browser_question": "This bank requires to input extra information (for example a One Time Password). Kresus does not implement this feature yet. Try again after disabling the 2 factor authentication.",
"weboob_not_installed": "Weboob is not installed. You will now be redirected to the dedicated help page."
},
"type": {
......@@ -522,6 +523,7 @@
"ACTION_NEEDED": "A manual action is required on your bank's website",
"GENERIC_EXCEPTION": "Unknown error",
"AUTH_METHOD_NYI": "The active authentication method on the bank website is not supported by the module.",
"BROWSER_QUESTION": "Accessing this bank requires to input extra information (for example a One Time Password). Kresus does not implement this feature yet. You can disable the two factor authentication and try again.",
"CONNECTION_ERROR": "The server couldn't connect to one data provider (modules repositories or bank web sites).",
"text": "Kresus detected the following error when fetching operations from the bank %{bank}: \n%{error} (%{message}).\n",
"pause_poll": "Please note no automatic polling will be retried until you fix the problem"
......
......@@ -418,6 +418,7 @@
"unknown_error": "Erreur inconnue de Kresus : essayez de mettre à jour Weboob, et si cela ne règle pas votre problème, merci de signaler l'erreur aux auteurs de Kresus.",
"action_needed": "Le site web de votre banque nécessite une action manuelle de votre part. Veuillez vous connecter sur le site de votre banque, suivez les instructions et réessayez.",
"auth_method_nyi": "La méthode d'authentification configurée pour votre compte n'est pas supportée par le module. Veuillez modifier ce paramètre sur le site de votre banque pour utiliser Kresus.",
"browser_question": "Cette banque nécessite de saisir une information supplémentaire (par exemple un mot de passe temporaire), Kresus ne sait pas encore gérer cette fonctionnalité. Désactivez l'authentification à deux facteurs et rééssayez.",
"weboob_not_installed": "Weboob n'est pas installé. Vous allez maintenant être redirigé vers la page d'aide associée."
},
"type": {
......@@ -522,6 +523,7 @@
"ACTION_NEEDED": "Une action manuelle est requise sur le site web de votre banque",
"GENERIC_EXCEPTION": "Erreur inconnue",
"AUTH_METHOD_NYI": "La méthode d'authentification sélectionnée sur votre compte n'est pas implémentée par le module.",
"BROWSER_QUESTION": "La connexion à cette banque nécessite une information supplémentaire (comme un mot de passe à usage unique). Veuillez désactiver l'authentification à deux facteurs et rééssayez.",
"CONNECTION_ERROR": "Votre serveur n'a pu se connecter à un service distant (dépôt de modules ou le site web de la banque).",
"text": "Kresus a détecté les erreurs suivantes lors de la récupération des opérations des comptes attachés à la banque %{bank} : \n%{error} (%{message}).\n",
"pause_poll": "Veuillez noter qu'aucun import automatique des opérations ne sera tenté tant que vous n'avez pas corrigé les problèmes de connexion."
......
......@@ -14,7 +14,8 @@ import {
WEBOOB_NOT_INSTALLED,
INVALID_PARAMETERS,
NO_PASSWORD,
AUTH_METHOD_NYI
AUTH_METHOD_NYI,
BROWSER_QUESTION
} from '../../shared/errors.json';
const { callWeboob, SessionsMap } = testing;
......@@ -189,6 +190,20 @@ async function makeDefectSituation(command) {
checkError(result, AUTH_METHOD_NYI);
});
it(`call "${command}" command, the user has to input extra data should raise "BROWSER_QUESTION"`, async () => {
let result = await callWeboobBefore(command, {
bank: 'fakeweboobbank',
password: 'password',
login: 'browserquestion',
customFields: JSON.stringify([
{ name: 'website', value: 'par' },
{ name: 'foobar', value: 'toto' }
])
});
checkError(result, BROWSER_QUESTION);
});
});
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment