Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions organization/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ class CloudSerializer(serializers.Serializer):
name = serializers.CharField(max_length=255)


class CloudIdSerializer(serializers.Serializer):
cloud_id = serializers.IntegerField(required=True)


class RegisterCloudSerializer(serializers.Serializer):
id = serializers.IntegerField(
required=True,
)
id = serializers.IntegerField(required=True)
55 changes: 55 additions & 0 deletions organization/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
from unittest.mock import patch

from django.urls import reverse
from rest_framework import status
from rest_framework.test import APITestCase

from user.models import User


class TestCreateCloud(APITestCase):
def setUp(self):
super().setUp()
self.user = User.objects.create(
username="John Doe", first_name="John", last_name="Doe"
)
self.client.force_authenticate(user=self.user, token="don't care for now")

# Need to patch where the function is used because it can be loaded before the mock
@patch("organization.views.get_jwt_value", return_value=b"jwt-token")
@patch("organization.views.get_access_token", return_value="access-token")
@patch(
"bimdata_api_client.api.collaboration_api.CollaborationApi.create_cloud",
return_value={"id": 456},
)
@patch(
"bimdata_api_client.api.webhook_api.WebhookApi.create_web_hook",
return_value={"id": 789},
)
def test_create_cloud(
self, create_web_hook, create_cloud, get_access_token, get_jwt_value
):
url = reverse("v1:create_cloud")
body = {"organization_id": 123, "name": "Test"}

response = self.client.post(url, data=body)

assert response.status_code == status.HTTP_201_CREATED
assert response.data["cloud_id"] == 456
create_cloud.assert_called_once()
create_web_hook.assert_called_once()

@patch("organization.views.IsSelfClient.has_permission", return_value=True)
@patch("organization.views.get_access_token", return_value="access-token")
@patch(
"bimdata_api_client.api.webhook_api.WebhookApi.create_web_hook",
return_value={"id": 789},
)
def test_register_cloud(self, create_web_hook, get_access_token, has_permission):
url = reverse("v1:register_cloud")
body = {"id": 456}

response = self.client.post(url, data=body)

assert response.status_code == status.HTTP_204_NO_CONTENT
create_web_hook.assert_called_once()
7 changes: 5 additions & 2 deletions organization/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from externals.bimdata_api import ApiClient
from externals.keycloak import get_access_token
from organization.permissions import IsSelfClient
from organization.serializers import CloudIdSerializer
from organization.serializers import CloudSerializer
from organization.serializers import RegisterCloudSerializer
from user.auth import get_jwt_value
Expand All @@ -19,7 +20,7 @@
tags=["platform"],
operation_id="createCloud",
request=CloudSerializer,
responses={status.HTTP_204_NO_CONTENT: None},
responses={status.HTTP_201_CREATED: CloudIdSerializer},
)
@api_view(["POST"])
@permission_classes([permissions.IsAuthenticated])
Expand All @@ -40,7 +41,9 @@ def create_cloud(request):
],
access_token=get_access_token(),
)
return Response(status=status.HTTP_204_NO_CONTENT)
serializer = CloudIdSerializer(data={"cloud_id": cloud["id"]})
serializer.is_valid()
return Response(status=status.HTTP_201_CREATED, data=serializer.data)


@extend_schema(
Expand Down