diff --git a/budget/tests.py b/budget/tests.py index 9eea518..0f7c2a2 100644 --- a/budget/tests.py +++ b/budget/tests.py @@ -289,6 +289,11 @@ class BudgetTestCase(TestCase): self.assertTrue(models.Project.query.get("demo") is not None) def test_authentication(self): + # try to authenticate without credentials should redirect + # to the authentication page + resp = self.app.post("/authenticate") + self.assertIn("Authentication", resp.data) + # raclette that the login / logout process works self.create_project("raclette") diff --git a/budget/web.py b/budget/web.py index 0b302cd..77de026 100644 --- a/budget/web.py +++ b/budget/web.py @@ -72,7 +72,14 @@ def authenticate(project_id=None): if not form.id.data and request.args.get('project_id'): form.id.data = request.args['project_id'] project_id = form.id.data - project = Project.query.get(project_id) + if project_id is None: + #User doesn't provide project identifier, return to authenticate form + msg = _("You need to enter a project identifier") + form.errors["id"] = [msg] + return render_template("authenticate.html", form=form) + else: + project = Project.query.get(project_id) + create_project = False # We don't want to create the project by default if not project: # But if the user try to connect to an unexisting project, we will