Skip to content
Snippets Groups Projects
Commit 8de0cfbf authored by Tore.Brede's avatar Tore.Brede
Browse files

GREG-85: Adding TODO and some tests

parent 69943bd6
No related branches found
No related tags found
1 merge request!113GREG-85: Guest registration page
...@@ -12,6 +12,7 @@ def _validateNorwegianNationalIdNumber(value): ...@@ -12,6 +12,7 @@ def _validateNorwegianNationalIdNumber(value):
class GuestRegisterSerializer(serializers.ModelSerializer): class GuestRegisterSerializer(serializers.ModelSerializer):
# TODO first_name and last_name set as not required to throwing an exception if they are not included in what is sent back from the frontend. It is perhaps not required that they are in the reponse from the client if the guest should be allowed to change them
first_name = serializers.CharField(required=False) first_name = serializers.CharField(required=False)
last_name = serializers.CharField(required=False) last_name = serializers.CharField(required=False)
email = serializers.CharField(required=True) email = serializers.CharField(required=True)
...@@ -65,8 +66,9 @@ class GuestRegisterSerializer(serializers.ModelSerializer): ...@@ -65,8 +66,9 @@ class GuestRegisterSerializer(serializers.ModelSerializer):
# TODO: we only want to allow changing the name if we don't have one # TODO: we only want to allow changing the name if we don't have one
# from a reliable source (Feide/KORR) # from a reliable source (Feide/KORR)
instance.first_name = validated_data["first_name"] # TODO Comment back in after it is decided if name updates are allowed
instance.last_name = validated_data["last_name"] # instance.first_name = validated_data["first_name"]
# instance.last_name = validated_data["last_name"]
return instance return instance
......
...@@ -4,7 +4,7 @@ from rest_framework import status ...@@ -4,7 +4,7 @@ from rest_framework import status
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from rest_framework.test import APIClient from rest_framework.test import APIClient
from greg.models import InvitationLink, Person from greg.models import InvitationLink, Person, Identity
@pytest.mark.django_db @pytest.mark.django_db
...@@ -44,7 +44,7 @@ def test_get_invited_info_no_session(client, invitation_link): ...@@ -44,7 +44,7 @@ def test_get_invited_info_no_session(client, invitation_link):
@pytest.mark.django_db @pytest.mark.django_db
def test_get_invited_info_session_okay( def test_get_invited_info_session_okay(
client, invitation_link, person_foo_data, sponsor_guy_data, role_type_foo, unit_foo client, invitation_link, person_foo_data, sponsor_guy_data, role_type_foo, unit_foo
): ):
# get a session # get a session
client.get( client.get(
...@@ -78,7 +78,7 @@ def test_get_invited_info_session_okay( ...@@ -78,7 +78,7 @@ def test_get_invited_info_session_okay(
@pytest.mark.django_db @pytest.mark.django_db
def test_get_invited_info_expired_link( def test_get_invited_info_expired_link(
client, invitation_link, invitation_expired_date client, invitation_link, invitation_expired_date
): ):
# Get a session while link is valid # Get a session while link is valid
client.get( client.get(
...@@ -96,7 +96,7 @@ def test_get_invited_info_expired_link( ...@@ -96,7 +96,7 @@ def test_get_invited_info_expired_link(
@pytest.mark.django_db @pytest.mark.django_db
def test_invited_guest_can_post_information( def test_invited_guest_can_post_information(
client: APIClient, invitation_link, person_foo_data client: APIClient, invitation_link, person_foo_data
): ):
# get a session # get a session
client.get( client.get(
...@@ -109,7 +109,7 @@ def test_invited_guest_can_post_information( ...@@ -109,7 +109,7 @@ def test_invited_guest_can_post_information(
# post updated info to confirm from guest # post updated info to confirm from guest
new_email = "private@example.org" new_email = "private@example.org"
new_phone = "+4712345678" new_phone = "+4712345678"
data = dict(email=new_email, mobile_phone=new_phone, **person_foo_data) data = dict(email=new_email, mobile_phone=new_phone)
response = client.post( response = client.post(
reverse("gregui-v1:invited-info"), reverse("gregui-v1:invited-info"),
data, data,
...@@ -120,13 +120,12 @@ def test_invited_guest_can_post_information( ...@@ -120,13 +120,12 @@ def test_invited_guest_can_post_information(
# Check that the object was updated in the database # Check that the object was updated in the database
assert Person.objects.count() == 1 assert Person.objects.count() == 1
assert person.private_email.value == new_email
assert person.private_mobile.value == new_phone assert person.private_mobile.value == new_phone
@pytest.mark.django_db @pytest.mark.django_db
def test_post_invited_info_expired_session( def test_post_invited_info_expired_session(
client, invitation_link, invitation_expired_date client, invitation_link, invitation_expired_date
): ):
# get a session # get a session
client.get( client.get(
...@@ -155,3 +154,70 @@ def test_post_invited_info_deleted_inv_link(client, invitation_link): ...@@ -155,3 +154,70 @@ def test_post_invited_info_deleted_inv_link(client, invitation_link):
# invitation link # invitation link
response = client.post(reverse("gregui-v1:invited-info")) response = client.post(reverse("gregui-v1:invited-info"))
assert response.status_code == status.HTTP_403_FORBIDDEN assert response.status_code == status.HTTP_403_FORBIDDEN
@pytest.mark.django_db
def test_post_invited_info_invalid_national_id_number(
client, invitation_link, person_foo_data, person
):
data = {"mobile_phone": "+4707543001", "email": "test@example.com", "fnr": "123"}
url = reverse("gregui-v1:invited-info")
assert person.fnr is None
session = client.session
session["invite_id"] = str(invitation_link.uuid)
session.save()
response = client.post(url, data, format="json")
# The request should fail and the fnr-property should stay unchanged
assert response.status_code == status.HTTP_400_BAD_REQUEST
person.refresh_from_db()
assert person.fnr is None
@pytest.mark.django_db
def test_post_invited_info_valid_national_id_number(
client, invitation_link, person_foo_data, person
):
fnr = "11120618212"
data = {"mobile_phone": "+4707543001", "email": "test@example.com", "fnr": fnr}
url = reverse("gregui-v1:invited-info")
assert person.fnr is None
session = client.session
session["invite_id"] = str(invitation_link.uuid)
session.save()
response = client.post(url, data, format="json")
assert response.status_code == status.HTTP_200_OK
person.refresh_from_db()
assert person.fnr.value == fnr
@pytest.mark.django_db
def test_email_update(client, invitation_link, person_foo_data, person):
email_test = "test@example.com"
url = reverse("gregui-v1:invited-info")
Identity.objects.create(
person=person,
type=Identity.IdentityType.PRIVATE_EMAIL,
value=email_test,
)
person.private_email.refresh_from_db()
assert person.private_email.value == email_test
session = client.session
session["invite_id"] = str(invitation_link.uuid)
session.save()
data = {"mobile_phone": "+4707543001", "email": "test2@example.com"}
response = client.post(url, data, format="json")
assert response.status_code == status.HTTP_200_OK
person.private_email.refresh_from_db()
assert person.private_email.value == "test2@example.com"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment