loko/streetup/bim/tests.py

65 lines
2.7 KiB
Python

from django.test import TestCase
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.core.files.uploadedfile import SimpleUploadedFile
from documents.models import ManagedDocument, DocumentVersion
User = get_user_model()
class BimViewerTestCase(TestCase):
def setUp(self):
self.user = User.objects.create_user(username="testuser", email="test@streetup.be", password="password123", is_superuser=True)
self.other_user = User.objects.create_user(username="otheruser", email="other@streetup.be", password="password123")
# Create sample IFC ManagedDocument
self.doc = ManagedDocument.objects.create(
title="Maquette Test BIM",
description="Fichier IFC de test",
created_by=self.user,
)
dummy_ifc_content = b"ISO-10303-21;\nHEADER;\nENDSEC;\nDATA;\n#1= IFCORGANIZATION('Test',$,$,$,$);\nENDSEC;\nEND-ISO-10303-21;\n"
self.version = DocumentVersion.objects.create(
document=self.doc,
version_number=1,
file=SimpleUploadedFile("model.ifc", dummy_ifc_content, content_type="application/x-step"),
uploaded_by=self.user,
)
self.doc.current_version = self.version
self.doc.title = "Maquette Test BIM"
self.doc.save()
def test_unauthenticated_user_redirected(self):
url = reverse("bim:viewer", kwargs={"doc_code": self.doc.uuid})
response = self.client.get(url)
self.assertEqual(response.status_code, 302)
def test_owner_can_access_viewer(self):
self.client.force_login(self.user)
url = reverse("bim:viewer", kwargs={"doc_code": self.doc.uuid})
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_info_api(self):
self.client.force_login(self.user)
url = reverse("bim:document_info", kwargs={"doc_code": self.doc.uuid})
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
json_data = response.json()
self.assertEqual(json_data["title"], "Maquette Test BIM")
self.assertEqual(json_data["uuid"], str(self.doc.uuid))
def test_download_api(self):
self.client.force_login(self.user)
url = reverse("bim:download_ifc", kwargs={"doc_code": self.doc.uuid})
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertIn(b"ISO-10303-21", b"".join(response.streaming_content))
def test_unauthorized_user_denied(self):
self.client.force_login(self.other_user)
url = reverse("bim:viewer", kwargs={"doc_code": self.doc.uuid})
response = self.client.get(url)
self.assertEqual(response.status_code, 403)