parent
1d519d70dc
commit
44354cb681
@ -1,3 +0,0 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
@ -0,0 +1 @@
|
||||
from .views import *
|
||||
@ -0,0 +1,147 @@
|
||||
from http import HTTPStatus
|
||||
from django.test import TestCase, Client
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext as _
|
||||
from django.contrib.auth.models import User, Group
|
||||
|
||||
from members.models import Member, DIVERSE
|
||||
from ..models import RegistrationPassword, initial_user_setup
|
||||
|
||||
|
||||
class RegisterViewTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
|
||||
# Create a test member with invite key
|
||||
self.member = Member.objects.create(
|
||||
prename='Test',
|
||||
lastname='User',
|
||||
birth_date=timezone.now().date(),
|
||||
email='test@example.com',
|
||||
gender=DIVERSE,
|
||||
invite_as_user_key='test_key_123'
|
||||
)
|
||||
|
||||
# Create a registration password
|
||||
self.registration_password = RegistrationPassword.objects.create(
|
||||
password='test_password'
|
||||
)
|
||||
|
||||
# Get or create Standard group for user setup
|
||||
self.standard_group, created = Group.objects.get_or_create(name='Standard')
|
||||
|
||||
def test_register_get_without_key_redirects(self):
|
||||
"""Test GET request without key redirects to startpage."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
||||
|
||||
def test_register_post_without_key_redirects(self):
|
||||
"""Test POST request without key redirects to startpage."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.post(url)
|
||||
self.assertEqual(response.status_code, HTTPStatus.FOUND)
|
||||
|
||||
def test_register_get_with_empty_key_shows_failed(self):
|
||||
"""Test GET request with empty key shows registration failed page."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.get(url, {'key': ''})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('Something went wrong. The registration key is invalid or has expired.'))
|
||||
|
||||
def test_register_get_with_invalid_key_shows_failed(self):
|
||||
"""Test GET request with invalid key shows registration failed page."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.get(url, {'key': 'invalid_key'})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('Something went wrong. The registration key is invalid or has expired.'))
|
||||
|
||||
def test_register_get_with_valid_key_shows_password_form(self):
|
||||
"""Test GET request with valid key shows password entry form."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.get(url, {'key': self.member.invite_as_user_key})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('Set login data'))
|
||||
self.assertContains(response, _('Welcome, '))
|
||||
self.assertContains(response, self.member.prename)
|
||||
|
||||
def test_register_post_without_password_shows_failed(self):
|
||||
"""Test POST request without password shows registration failed page."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.post(url, {'key': self.member.invite_as_user_key})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('Something went wrong. The registration key is invalid or has expired.'))
|
||||
|
||||
def test_register_post_with_wrong_password_shows_error(self):
|
||||
"""Test POST request with wrong password shows error message."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.post(url, {
|
||||
'key': self.member.invite_as_user_key,
|
||||
'password': 'wrong_password'
|
||||
})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('You entered a wrong password.'))
|
||||
|
||||
def test_register_post_with_correct_password_shows_form(self):
|
||||
"""Test POST request with correct password shows user creation form."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.post(url, {
|
||||
'key': self.member.invite_as_user_key,
|
||||
'password': self.registration_password.password
|
||||
})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('Set login data'))
|
||||
self.assertContains(response, self.member.suggested_username())
|
||||
|
||||
def test_register_post_with_save_and_invalid_form_shows_errors(self):
|
||||
"""Test POST request with save but invalid form shows form errors."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.post(url, {
|
||||
'key': self.member.invite_as_user_key,
|
||||
'password': self.registration_password.password,
|
||||
'save': 'true',
|
||||
'username': '', # Invalid - empty username
|
||||
'password1': 'testpass123',
|
||||
'password2': 'different_pass' # Invalid - passwords don't match
|
||||
})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('Set login data'))
|
||||
|
||||
def test_register_post_with_save_and_valid_form_shows_success(self):
|
||||
"""Test POST request with save and valid form shows success page."""
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.post(url, {
|
||||
'key': self.member.invite_as_user_key,
|
||||
'password': self.registration_password.password,
|
||||
'save': 'true',
|
||||
'username': 'testuser',
|
||||
'password1': 'testpass123',
|
||||
'password2': 'testpass123'
|
||||
})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('You successfully set your login data. You can now proceed to'))
|
||||
|
||||
# Verify user was created and associated with member
|
||||
user = User.objects.get(username='testuser')
|
||||
self.assertEqual(user.is_staff, True)
|
||||
self.member.refresh_from_db()
|
||||
self.assertEqual(self.member.user, user)
|
||||
self.assertEqual(self.member.invite_as_user_key, '')
|
||||
|
||||
def test_register_post_with_save_and_no_standard_group_shows_failed(self):
|
||||
"""Test POST request with save but no Standard group shows failed page."""
|
||||
# Delete the Standard group
|
||||
self.standard_group.delete()
|
||||
|
||||
url = reverse('logindata:register')
|
||||
response = self.client.post(url, {
|
||||
'key': self.member.invite_as_user_key,
|
||||
'password': self.registration_password.password,
|
||||
'save': 'true',
|
||||
'username': 'testuser',
|
||||
'password1': 'testpass123',
|
||||
'password2': 'testpass123'
|
||||
})
|
||||
self.assertEqual(response.status_code, HTTPStatus.OK)
|
||||
self.assertContains(response, _('Something went wrong. The registration key is invalid or has expired.'))
|
||||
Loading…
Reference in New Issue