diff --git a/modules/edfparticulier/browser.py b/modules/edfparticulier/browser.py index 9fadc2eb22d3b0e9c7101e64db7baf72ee1ad5f9..d4f0f8d97d1244b300438a8a0958fc3e521d4904 100644 --- a/modules/edfparticulier/browser.py +++ b/modules/edfparticulier/browser.py @@ -31,7 +31,7 @@ from .pages import ( HomePage, AuthenticatePage, AuthorizePage, WrongPasswordPage, CheckAuthenticatePage, ProfilPage, - DocumentsPage, WelcomePage, UnLoggedPage, ProfilePage, BillDownload, + DocumentsPage, WelcomePage, UnLoggedPage, ProfilePage, BillDownload, XUIPage, ) @@ -43,6 +43,7 @@ class EdfParticulierBrowser(LoginBrowser, StatesMixin): BASEURL = 'https://particulier.edf.fr' home = URL('/fr/accueil/contrat-et-conso/mon-compte-edf.html', HomePage) + xuipage = URL(r'https://espace-client.edf.fr/sso/XUI/#login/&realm=(?P.*)&goto=(?P.*)', XUIPage) authenticate = URL(r'https://espace-client.edf.fr/sso/json/authenticate', AuthenticatePage) authorize = URL(r'https://espace-client.edf.fr/sso/oauth2/INTERNET/authorize', AuthorizePage) wrong_password = URL( @@ -108,7 +109,13 @@ def do_login(self): self.logger.info('already logged') return - self.authenticate.go(method='POST', params=auth_params) + if not self.xuipage.is_here(): + raise AssertionError('Wrong workflow - authentication has changed, please report error') + + auth_params['goto'] = self.page.params.get('goto', '') + self.session.cookies.clear() + + self.authenticate.go(method='POST', params=auth_params, data='') data = self.page.get_data() data['callbacks'][0]['input'][0]['value'] = self.username diff --git a/modules/edfparticulier/pages.py b/modules/edfparticulier/pages.py index 90010c337afa0410af7745c34d07bf6d2d34d8a9..cdde3a9bbc5372ce39c3bb75eb84035887cf06e7 100644 --- a/modules/edfparticulier/pages.py +++ b/modules/edfparticulier/pages.py @@ -38,6 +38,10 @@ class HomePage(HTMLPage): pass +class XUIPage(HTMLPage): + pass + + class AuthenticatePage(JsonPage): def has_captcha_request(self): return self.doc['stage'] == "RecaptchaModuleS1"