feat: test account verification email

wip-custom-settings-list
Aravinth Manivannan 2022-06-20 16:09:47 +05:30
parent 19682874ba
commit f6c89999e9
Signed by: realaravinth
GPG Key ID: AD9F0F08E855ED88
1 changed files with 27 additions and 7 deletions

View File

@ -15,8 +15,13 @@
# 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/>.
import time
import os
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.core.management import call_command
from django.urls import reverse
@ -128,6 +133,11 @@ class LoginTest(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):
"""
Tests if register template renders
@ -143,23 +153,28 @@ class RegistrationTest(TestCase):
# passwords don't match
msg = {
"username": "register_user",
"password": "2i3j4;1qlk2asdf",
"email": "register_user@example.com",
"confirm_password": "foo@example.com",
"username": self.username,
"password": self.password,
"email": self.email,
"confirm_password": self.email,
}
resp = c.post(reverse("accounts.register"), msg)
self.assertEqual(resp.status_code, 400)
# register user
msg["confirm_password"] = msg["password"]
msg["confirm_password"] = self.password
resp = c.post(reverse("accounts.register"), msg)
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)
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()
self.assertEqual(resp.headers["location"], pending_url)
resend_url = reverse("accounts.verify.resend", args=(challenge.public_ref,))
@ -167,20 +182,25 @@ class RegistrationTest(TestCase):
# visit pending URL
resp = c.get(pending_url)
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)
resp = c.post(resend_url)
self.assertEqual(resp.status_code, 302)
self.assertEqual(resp.headers["location"], pending_url)
# check resend
self.assertEqual(len(mail.outbox), 2)
resp = c.get(challenge.verification_link())
self.assertEqual(resp.status_code, 200)
self.assertEqual(
str.encode(challenge.verification_link()) in resp.content, True
)
# check verification link in email
resp = c.post(challenge.verification_link())
self.assertEqual(resp.status_code, 302)
self.assertEqual(resp.headers["location"], reverse("accounts.login"))
user.refresh_from_db()