|
|
- from django.contrib.auth.models import User
- from django.core import mail
- from django.test import TestCase
- from hc.api.models import Check
- from django.conf import settings
-
-
- 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": "[email protected]"}
-
- 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)
- subject = "Log in to %s" % settings.SITE_NAME
- self.assertEqual(mail.outbox[0].subject, subject)
-
- # And check should be associated with the new user
- check_again = Check.objects.get(code=check.code)
- assert check_again.user
-
- def test_it_pops_bad_link_from_session(self):
- self.client.session["bad_link"] = True
- self.client.get("/accounts/login/")
- assert "bad_link" not in self.client.session
-
- def test_it_handles_missing_welcome_check(self):
-
- # This check does not exist in database,
- # but login should still work.
- session = self.client.session
- session["welcome_code"] = "00000000-0000-0000-0000-000000000000"
- session.save()
-
- form = {"email": "[email protected]"}
-
- 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)
- subject = "Log in to %s" % settings.SITE_NAME
- self.assertEqual(mail.outbox[0].subject, subject)
|