feat: test account verification email
parent
19682874ba
commit
f6c89999e9
|
@ -15,8 +15,13 @@
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
import time
|
import time
|
||||||
|
import os
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
from urllib.parse import urlparse, urlunparse
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from django.core import mail
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.core.management import call_command
|
from django.core.management import call_command
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
@ -128,6 +133,11 @@ class LoginTest(TestCase):
|
||||||
|
|
||||||
|
|
||||||
class RegistrationTest(TestCase):
|
class RegistrationTest(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.username = "register_user"
|
||||||
|
self.password = "2i3j4;1qlk2asdf"
|
||||||
|
self.email = "register_user@example.com"
|
||||||
|
|
||||||
def test_register_template_works(self):
|
def test_register_template_works(self):
|
||||||
"""
|
"""
|
||||||
Tests if register template renders
|
Tests if register template renders
|
||||||
|
@ -143,23 +153,28 @@ class RegistrationTest(TestCase):
|
||||||
|
|
||||||
# passwords don't match
|
# passwords don't match
|
||||||
msg = {
|
msg = {
|
||||||
"username": "register_user",
|
"username": self.username,
|
||||||
"password": "2i3j4;1qlk2asdf",
|
"password": self.password,
|
||||||
"email": "register_user@example.com",
|
"email": self.email,
|
||||||
"confirm_password": "foo@example.com",
|
"confirm_password": self.email,
|
||||||
}
|
}
|
||||||
resp = c.post(reverse("accounts.register"), msg)
|
resp = c.post(reverse("accounts.register"), msg)
|
||||||
self.assertEqual(resp.status_code, 400)
|
self.assertEqual(resp.status_code, 400)
|
||||||
|
|
||||||
# register user
|
# register user
|
||||||
msg["confirm_password"] = msg["password"]
|
msg["confirm_password"] = self.password
|
||||||
resp = c.post(reverse("accounts.register"), msg)
|
resp = c.post(reverse("accounts.register"), msg)
|
||||||
self.assertEqual(resp.status_code, 302)
|
self.assertEqual(resp.status_code, 302)
|
||||||
|
|
||||||
user = get_user_model().objects.get(username=msg["username"])
|
user = get_user_model().objects.get(username=self.username)
|
||||||
self.assertEqual(user.is_active, False)
|
self.assertEqual(user.is_active, False)
|
||||||
challenge = AccountConfirmChallenge.objects.get(owned_by=user)
|
challenge = AccountConfirmChallenge.objects.get(owned_by=user)
|
||||||
|
|
||||||
|
# verify is email is sent
|
||||||
|
self.assertEqual(len(mail.outbox), 1)
|
||||||
|
self.assertEqual(challenge.verification_link() in mail.outbox[0].body, True)
|
||||||
|
self.assertEqual(mail.outbox[0].to, [self.email])
|
||||||
|
|
||||||
pending_url = challenge.pending_url()
|
pending_url = challenge.pending_url()
|
||||||
self.assertEqual(resp.headers["location"], pending_url)
|
self.assertEqual(resp.headers["location"], pending_url)
|
||||||
resend_url = reverse("accounts.verify.resend", args=(challenge.public_ref,))
|
resend_url = reverse("accounts.verify.resend", args=(challenge.public_ref,))
|
||||||
|
@ -167,20 +182,25 @@ class RegistrationTest(TestCase):
|
||||||
# visit pending URL
|
# visit pending URL
|
||||||
resp = c.get(pending_url)
|
resp = c.get(pending_url)
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertEqual(str.encode(msg["email"]) in resp.content, True)
|
self.assertEqual(str.encode(self.email) in resp.content, True)
|
||||||
self.assertEqual(str.encode(resend_url) in resp.content, True)
|
self.assertEqual(str.encode(resend_url) in resp.content, True)
|
||||||
|
|
||||||
resp = c.post(resend_url)
|
resp = c.post(resend_url)
|
||||||
self.assertEqual(resp.status_code, 302)
|
self.assertEqual(resp.status_code, 302)
|
||||||
self.assertEqual(resp.headers["location"], pending_url)
|
self.assertEqual(resp.headers["location"], pending_url)
|
||||||
|
|
||||||
|
# check resend
|
||||||
|
self.assertEqual(len(mail.outbox), 2)
|
||||||
|
|
||||||
resp = c.get(challenge.verification_link())
|
resp = c.get(challenge.verification_link())
|
||||||
self.assertEqual(resp.status_code, 200)
|
self.assertEqual(resp.status_code, 200)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
str.encode(challenge.verification_link()) in resp.content, True
|
str.encode(challenge.verification_link()) in resp.content, True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# check verification link in email
|
||||||
resp = c.post(challenge.verification_link())
|
resp = c.post(challenge.verification_link())
|
||||||
|
|
||||||
self.assertEqual(resp.status_code, 302)
|
self.assertEqual(resp.status_code, 302)
|
||||||
self.assertEqual(resp.headers["location"], reverse("accounts.login"))
|
self.assertEqual(resp.headers["location"], reverse("accounts.login"))
|
||||||
user.refresh_from_db()
|
user.refresh_from_db()
|
||||||
|
|
Loading…
Reference in New Issue