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

GREG-100: Adding test for deleting invitation

parent c62421c6
No related branches found
No related tags found
1 merge request!129GREG-100: Cancel invitation
Pipeline #98749 failed
......@@ -4,7 +4,7 @@ from rest_framework.routers import DefaultRouter
from gregui.api.views.invitation import (
CheckInvitationView,
CreateInvitationView,
InvitationView,
InvitedGuestView,
)
from gregui.api.views.person import PersonSearchView, PersonView
......@@ -21,7 +21,7 @@ urlpatterns += [
re_path(r"units/$", UnitsViewSet.as_view(), name="units"),
path("invited/", InvitedGuestView.as_view(), name="invited-info"),
path("invited/<uuid>", CheckInvitationView.as_view(), name="invite-verify"),
path("invite/", CreateInvitationView.as_view(), name="invite-create"),
path("invite/", InvitationView.as_view(), name="invitation"),
path("person/<int:id>", PersonView.as_view(), name="person-get"),
path(
"person/search/<searchstring>", PersonSearchView.as_view(), name="person-search"
......
......@@ -20,9 +20,9 @@ from gregui.api.serializers.invitation import InviteGuestSerializer
from gregui.models import GregUserProfile
class CreateInvitationView(CreateAPIView, DestroyAPIView):
class InvitationView(CreateAPIView, DestroyAPIView):
"""
Invitation creation endpoint
Endpoint for invitation creation and cancelling
{
......
......@@ -4,8 +4,8 @@ from rest_framework import status
from rest_framework.reverse import reverse
from rest_framework.test import APIRequestFactory, force_authenticate
from greg.models import Identity, Person
from gregui.api.views.invitation import CreateInvitationView
from greg.models import Identity, Person, Role, Invitation, InvitationLink
from gregui.api.views.invitation import InvitationView
@pytest.mark.django_db
......@@ -16,16 +16,16 @@ def test_invite_guest(client, user_sponsor, unit_foo, role_type_foo):
"email": "test@example.com",
"role": {
"start_date": (
datetime.datetime.today() + datetime.timedelta(days=1)
datetime.datetime.today() + datetime.timedelta(days=1)
).strftime("%Y-%m-%d"),
"end_date": (
datetime.datetime.today() + datetime.timedelta(days=10)
datetime.datetime.today() + datetime.timedelta(days=10)
).strftime("%Y-%m-%d"),
"orgunit": unit_foo.id,
"type": role_type_foo.id,
},
}
url = reverse("gregui-v1:invite-create")
url = reverse("gregui-v1:invitation")
all_persons = Person.objects.all()
assert len(all_persons) == 0
......@@ -34,7 +34,7 @@ def test_invite_guest(client, user_sponsor, unit_foo, role_type_foo):
request = factory.post(url, data, format="json")
force_authenticate(request, user=user_sponsor)
view = CreateInvitationView.as_view()
view = InvitationView.as_view()
response = view(request)
assert response.status_code == status.HTTP_201_CREATED
......@@ -49,3 +49,21 @@ def test_invite_guest(client, user_sponsor, unit_foo, role_type_foo):
type=Identity.IdentityType.PRIVATE_EMAIL,
value="test@example.com",
).exists()
@pytest.mark.django_db
def test_invite_cancel(client, invitation_link, invitation, role, log_in, sponsor_guy, user_sponsor):
# TODO: Should all sponsors be allowed to delete arbitrary invitations?
log_in(user_sponsor)
url = reverse("gregui-v1:invitation")
# Check that the role is there
role = Role.objects.get(id=role.id)
response = client.delete("%s?role_id=%s" % (url, str(role.id)))
assert response.status_code == status.HTTP_200_OK
# The role, invitation and connected links should now have been removed
assert Role.objects.filter(id=role.id).count() == 0
assert Invitation.objects.filter(id=invitation.id).count() == 0
assert InvitationLink.objects.filter(invitation__id=invitation.id).count() == 0
......@@ -9,7 +9,6 @@ from django.utils.timezone import make_aware
from rest_framework.authtoken.admin import User
from rest_framework.test import APIClient
from greg.models import (
Invitation,
InvitationLink,
......@@ -26,6 +25,7 @@ from gregui.models import GregUserProfile
# see https://github.com/joke2k/faker/issues/753
logging.getLogger("faker").setLevel(logging.ERROR)
# OIDC stuff
@pytest.fixture
def claims():
......@@ -246,9 +246,8 @@ def greg_sponsors(data):
@pytest.fixture
def log_in(client, greg_users):
def _log_in(username):
user = greg_users[username]
def log_in(client):
def _log_in(user):
client.force_login(user=user)
# It seems like the session was not updated automatically this way
session = client.session
......
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