diff --git a/hc/accounts/tests.py b/hc/accounts/tests.py deleted file mode 100644 index 7ce503c2..00000000 --- a/hc/accounts/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/hc/accounts/tests/__init__.py b/hc/accounts/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hc/accounts/tests/test_check_token.py b/hc/accounts/tests/test_check_token.py new file mode 100644 index 00000000..6084e65f --- /dev/null +++ b/hc/accounts/tests/test_check_token.py @@ -0,0 +1,17 @@ +from django.contrib.auth.models import User +from django.test import TestCase + + +class CheckTokenTestCase(TestCase): + + def test_it_redirects(self): + alice = User(username="alice") + alice.set_password("secret-token") + alice.save() + + r = self.client.get("/accounts/check_token/alice/secret-token/") + assert r.status_code == 302 + + # After login, password should be unusable + alice_again = User.objects.get(username="alice") + assert not alice_again.has_usable_password() diff --git a/hc/accounts/tests/test_login.py b/hc/accounts/tests/test_login.py new file mode 100644 index 00000000..40e335c3 --- /dev/null +++ b/hc/accounts/tests/test_login.py @@ -0,0 +1,32 @@ +from django.contrib.auth.models import User +from django.core import mail +from django.test import TestCase + +from hc.api.models import Check + + +class LoginTestCase(TestCase): + + def test_it_sends_link(self): + check = Check() + check.save() + + session = self.client.session + session["welcome_code"] = str(check.code) + session.save() + + form = {"email": "alice@example.org"} + + r = self.client.post("/accounts/login/", form) + assert r.status_code == 302 + + # An user should have been created + self.assertEqual(User.objects.count(), 1) + + # And email sent + self.assertEqual(len(mail.outbox), 1) + self.assertEqual(mail.outbox[0].subject, 'Log in to healthchecks.io') + + # And check should be associated with the new user + check_again = Check.objects.get(code=check.code) + assert check_again.user