Mudanza de repo
This commit is contained in:
85
api/datastage/tests.py
Normal file
85
api/datastage/tests.py
Normal file
@@ -0,0 +1,85 @@
|
||||
|
||||
from django.urls import reverse
|
||||
from rest_framework.test import APITestCase, APIClient
|
||||
from rest_framework import status
|
||||
from django.contrib.auth import get_user_model
|
||||
from api.organization.models import Organizacion
|
||||
from .models import DataStage
|
||||
from io import BytesIO
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
class DataStageViewSetTests(APITestCase):
|
||||
def setUp(self):
|
||||
self.org = Organizacion.objects.create(nombre="OrgTest", is_active=True, is_verified=True)
|
||||
self.org2 = Organizacion.objects.create(nombre="OrgTest2", is_active=True, is_verified=True)
|
||||
self.admin = User.objects.create_user(username="admin", password="adminpass", organizacion=self.org)
|
||||
self.admin.groups.create(name="admin")
|
||||
self.superuser = User.objects.create_superuser(username="superuser", password="superpass")
|
||||
self.importador = User.objects.create_user(username="importador", password="importpass", organizacion=self.org2, is_importador=True, rfc="RFC123456789")
|
||||
self.importador.groups.create(name="importador")
|
||||
self.client = APIClient()
|
||||
|
||||
def test_admin_sees_only_own_org(self):
|
||||
ds1 = DataStage.objects.create(nombre="DS1", almacenamiento=10, organizacion=self.org, archivo=SimpleUploadedFile("a.txt", b"a"))
|
||||
ds2 = DataStage.objects.create(nombre="DS2", almacenamiento=20, organizacion=self.org2, archivo=SimpleUploadedFile("b.txt", b"b"))
|
||||
self.client.force_authenticate(user=self.admin)
|
||||
url = reverse('datastage-list')
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
nombres = [ds['nombre'] for ds in response.data]
|
||||
self.assertIn("DS1", nombres)
|
||||
self.assertNotIn("DS2", nombres)
|
||||
|
||||
def test_superuser_sees_all(self):
|
||||
ds1 = DataStage.objects.create(nombre="DS1", almacenamiento=10, organizacion=self.org, archivo=SimpleUploadedFile("a.txt", b"a"))
|
||||
ds2 = DataStage.objects.create(nombre="DS2", almacenamiento=20, organizacion=self.org2, archivo=SimpleUploadedFile("b.txt", b"b"))
|
||||
self.client.force_authenticate(user=self.superuser)
|
||||
url = reverse('datastage-list')
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
nombres = [ds['nombre'] for ds in response.data]
|
||||
self.assertIn("DS1", nombres)
|
||||
self.assertIn("DS2", nombres)
|
||||
|
||||
def test_importador_cannot_create(self):
|
||||
self.client.force_authenticate(user=self.importador)
|
||||
url = reverse('datastage-list')
|
||||
file_content = BytesIO(b"dummy data")
|
||||
file = SimpleUploadedFile("test.txt", file_content.read(), content_type="text/plain")
|
||||
data = {
|
||||
"nombre": "DataStageImportador",
|
||||
"almacenamiento": 10,
|
||||
"archivo": file
|
||||
}
|
||||
response = self.client.post(url, data, format='multipart')
|
||||
self.assertNotIn(response.status_code, [status.HTTP_201_CREATED, status.HTTP_200_OK])
|
||||
|
||||
def test_list_datastages(self):
|
||||
url = reverse('datastage-list')
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
def test_create_datastage(self):
|
||||
url = reverse('datastage-list')
|
||||
file_content = BytesIO(b"dummy data")
|
||||
file = SimpleUploadedFile("test.txt", file_content.read(), content_type="text/plain")
|
||||
data = {
|
||||
"nombre": "DataStageTest",
|
||||
"almacenamiento": 10,
|
||||
"archivo": file
|
||||
}
|
||||
response = self.client.post(url, data, format='multipart')
|
||||
self.assertIn(response.status_code, [status.HTTP_201_CREATED, status.HTTP_200_OK])
|
||||
|
||||
def test_update_datastage(self):
|
||||
# First create
|
||||
file_content = BytesIO(b"dummy data")
|
||||
file = SimpleUploadedFile("test.txt", file_content.read(), content_type="text/plain")
|
||||
ds = DataStage.objects.create(nombre="DataStageTest", almacenamiento=10, organizacion=self.org, archivo=file)
|
||||
url = reverse('datastage-detail', args=[ds.id])
|
||||
data = {"almacenamiento": 20}
|
||||
response = self.client.patch(url, data)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(response.data['almacenamiento'], 20)
|
||||
Reference in New Issue
Block a user