Skip to content

Commit 4e60102

Browse files
committed
fixup! ✨(back) document as for access CRUD
1 parent b42cc47 commit 4e60102

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

src/backend/core/api/serializers.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,10 +686,26 @@ class DocumentAskForAccessSerializer(serializers.ModelSerializer):
686686
"""Serializer for document ask for access model"""
687687

688688
abilities = serializers.SerializerMethodField(read_only=True)
689+
user_id = serializers.PrimaryKeyRelatedField(
690+
queryset=models.User.objects.all(),
691+
write_only=True,
692+
source="user",
693+
required=False,
694+
allow_null=True,
695+
)
696+
user = UserSerializer(read_only=True)
689697

690698
class Meta:
691699
model = models.DocumentAskForAccess
692-
fields = ["id", "document", "user", "role", "created_at", "abilities"]
700+
fields = [
701+
"id",
702+
"document",
703+
"user",
704+
"user_id",
705+
"role",
706+
"created_at",
707+
"abilities",
708+
]
693709
read_only_fields = ["id", "document", "user", "role", "created_at", "abilities"]
694710

695711
def get_abilities(self, invitation) -> dict:

src/backend/core/tests/documents/test_api_documents_ask_for_access.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import pytest
88
from rest_framework.test import APIClient
99

10+
from core.api.serializers import UserSerializer
1011
from core.factories import (
1112
DocumentAskForAccessFactory,
1213
DocumentFactory,
@@ -203,6 +204,8 @@ def test_api_documents_ask_for_access_list_authenticated_own_request():
203204
)
204205

205206
user = UserFactory()
207+
user_data = UserSerializer(instance=user).data
208+
206209
document_ask_for_access = DocumentAskForAccessFactory(
207210
document=document, user=user, role=RoleChoices.READER
208211
)
@@ -220,7 +223,7 @@ def test_api_documents_ask_for_access_list_authenticated_own_request():
220223
{
221224
"id": str(document_ask_for_access.id),
222225
"document": str(document.id),
223-
"user": str(user.id),
226+
"user": user_data,
224227
"role": RoleChoices.READER,
225228
"created_at": document_ask_for_access.created_at.isoformat().replace(
226229
"+00:00", "Z"
@@ -286,12 +289,12 @@ def test_api_documents_ask_for_access_list_non_owner_or_admin(role):
286289
}
287290

288291

289-
@pytest.mark.parametrize("role", [RoleChoices.OWNER, RoleChoices.ADMIN])
292+
@pytest.mark.parametrize("role", [RoleChoices.OWNER])
290293
def test_api_documents_ask_for_access_list_owner_or_admin(role):
291294
"""Owner or admin users should be able to list document ask for access."""
292295
user = UserFactory()
293296
document = DocumentFactory(users=[(user, role)])
294-
document_ask_for_access = DocumentAskForAccessFactory.create_batch(
297+
document_ask_for_accesses = DocumentAskForAccessFactory.create_batch(
295298
3, document=document, role=RoleChoices.READER
296299
)
297300

@@ -308,7 +311,7 @@ def test_api_documents_ask_for_access_list_owner_or_admin(role):
308311
{
309312
"id": str(document_ask_for_access.id),
310313
"document": str(document.id),
311-
"user": str(document_ask_for_access.user.id),
314+
"user": UserSerializer(instance=document_ask_for_access.user).data,
312315
"role": RoleChoices.READER,
313316
"created_at": document_ask_for_access.created_at.isoformat().replace(
314317
"+00:00", "Z"
@@ -321,7 +324,7 @@ def test_api_documents_ask_for_access_list_owner_or_admin(role):
321324
"retrieve": True,
322325
},
323326
}
324-
for document_ask_for_access in document_ask_for_access
327+
for document_ask_for_access in document_ask_for_accesses
325328
],
326329
}
327330

@@ -385,6 +388,7 @@ def test_api_documents_ask_for_access_retrieve_owner_or_admin(role):
385388
document_ask_for_access = DocumentAskForAccessFactory(
386389
document=document, role=RoleChoices.READER
387390
)
391+
user_data = UserSerializer(instance=document_ask_for_access.user).data
388392

389393
client = APIClient()
390394
client.force_login(user)
@@ -396,7 +400,7 @@ def test_api_documents_ask_for_access_retrieve_owner_or_admin(role):
396400
assert response.json() == {
397401
"id": str(document_ask_for_access.id),
398402
"document": str(document.id),
399-
"user": str(document_ask_for_access.user.id),
403+
"user": user_data,
400404
"role": RoleChoices.READER,
401405
"created_at": document_ask_for_access.created_at.isoformat().replace(
402406
"+00:00", "Z"

0 commit comments

Comments
 (0)