File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -223,6 +223,33 @@ def test_registered_user_login_bad_password(self, app):
223223 not in response
224224 )
225225
226+ @pytest .mark .ckan_config ("ckan.recaptcha.privatekey" , "foo" )
227+ def test_registered_user_login_bad_password_or_captcha (self , app ):
228+ """
229+ Registered user is redirected to appropriate place if they submit
230+ invalid login details at /user/login.
231+ Login failure gives a different message if reCAPTCHA is enabled.
232+ """
233+
234+ # make a user
235+ user = factories .User ()
236+
237+ # get the form
238+ response = app .post (
239+ url_for ("user.login" ),
240+ data = {"login" : user ["name" ], "password" : "BadPass1" , "save" : "" },
241+ )
242+
243+ # the response is the login page again
244+ assert '<h1 class="page-heading">Login</h1>' in response
245+ assert "Login failed. Bad username or password or CAPTCHA." in response
246+ # and we're definitely not on the dashboard.
247+ assert '<a href="/dashboard">Dashboard</a>' not in response
248+ assert (
249+ '<span class="username">{0}</span>' .format (user ["fullname" ])
250+ not in response
251+ )
252+
226253 def test_user_logout_url_redirect (self , app , user ):
227254 """_logout url redirects to logged out page.
228255 """
Original file line number Diff line number Diff line change @@ -587,7 +587,10 @@ def login() -> Union[Response, str]:
587587 rotate_token ()
588588 return next_page_or_default (next )
589589 else :
590- err = _ (u"Login failed. Bad username or password." )
590+ if config .get ('ckan.recaptcha.privatekey' ):
591+ err = _ (u"Login failed. Bad username or password or CAPTCHA." )
592+ else :
593+ err = _ (u"Login failed. Bad username or password." )
591594 h .flash_error (err )
592595 return base .render ("user/login.html" , extra_vars )
593596
You can’t perform that action at this time.
0 commit comments