Skip to content

Commit

Permalink
🐛 add tests to ensure crashing happens less often
Browse files Browse the repository at this point in the history
  • Loading branch information
itsthejoker committed Mar 20, 2023
1 parent c8a60d8 commit 529a7f6
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 6 deletions.
6 changes: 4 additions & 2 deletions blossom/authentication/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@ def post(
location = "/"

return HttpResponseRedirect(location)
return HttpResponseRedirect(request.build_absolute_uri())
else:
messages.error(request, "Sorry, that didn't look right. Try again?")
return HttpResponseRedirect(request.build_absolute_uri())
else:
messages.error(request, "Sorry, we don't recognize that login. Try again?")
messages.error(request, "Sorry, something went wrong. Try again?")
return HttpResponseRedirect(reverse("login"))


Expand Down
29 changes: 25 additions & 4 deletions blossom/website/tests/test_authentication.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,19 +35,40 @@ def test_login_bad_password(client: Client) -> None:
create_test_user()

response = client.post(
"/login/", {"email": guy.email, "password": "wrong password"}
"/login/", {"email": guy.email, "password": "wrong password"}, follow=True
)
assert response.status_code == 302
assert response.status_code == 200
assert len(list(response.context["messages"])) == 1
assert response.wsgi_request.user.is_anonymous
assert not response.wsgi_request.user.is_authenticated


def test_login_bad_user_info(client: Client) -> None:
"""Assert that attempting a login with the wrong username and password fails."""
response = client.post(
"/login/", {"email": "a@a.com", "password": "wrong password"}
"/login/", {"email": "a@a.com", "password": "wrong password"}, follow=True
)
assert response.status_code == 302
assert response.status_code == 200

messages = [m.message for m in response.context["messages"]]

assert len(messages) == 1
assert "didn't look right" in messages[0]
assert response.wsgi_request.user.is_anonymous
assert not response.wsgi_request.user.is_authenticated


def test_login_garbage_info(client: Client) -> None:
"""Assert that attempting a login with garbage fails cleanly."""
response = client.post(
"/login/", {"AAAAAA": "BBBBBBBB", "CCCCCCC": "DDDDDDD"}, follow=True
)
assert response.status_code == 200

messages = [m.message for m in response.context["messages"]]

assert len(messages) == 1
assert "something went wrong" in messages[0]
assert response.wsgi_request.user.is_anonymous
assert not response.wsgi_request.user.is_authenticated

Expand Down

0 comments on commit 529a7f6

Please sign in to comment.