65 lines
2.7 KiB
Python
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)
|