Create: collector_api tests
This commit is contained in:
parent
5fd2bc953e
commit
30939755f7
0
logs_collector/collector/api/tests/__init__.py
Normal file
0
logs_collector/collector/api/tests/__init__.py
Normal file
31
logs_collector/collector/api/tests/test_urls.py
Normal file
31
logs_collector/collector/api/tests/test_urls.py
Normal file
@ -0,0 +1,31 @@
|
||||
from django.urls import resolve, reverse
|
||||
from django.test import TestCase
|
||||
|
||||
from collector.api import views
|
||||
|
||||
|
||||
class TestUrls(TestCase):
|
||||
|
||||
def test_list_all_archives_url_is_resolved(self):
|
||||
url = reverse('collector_api:archive-list')
|
||||
self.assertEquals(resolve(url).func.cls, views.ArchiveViewSet)
|
||||
|
||||
def test_detail_archive_url_is_resolved(self):
|
||||
url = reverse('collector_api:archive-detail', args=[1])
|
||||
self.assertEquals(resolve(url).func.cls, views.ArchiveViewSet)
|
||||
|
||||
def test_list_all_tickets_url_is_resolved(self):
|
||||
url = reverse('collector_api:ticket-list')
|
||||
self.assertEquals(resolve(url).func.cls, views.TicketViewSet)
|
||||
|
||||
def test_detail_ticket_url_is_resolved(self):
|
||||
url = reverse('collector_api:ticket-detail', args=[1488228])
|
||||
self.assertEquals(resolve(url).func.cls, views.TicketViewSet)
|
||||
|
||||
def test_list_all_platforms_url_is_resolved(self):
|
||||
url = reverse('collector_api:platform-list')
|
||||
self.assertEquals(resolve(url).func.cls, views.PlatformViewSet)
|
||||
|
||||
def test_detail_platform_url_is_resolved(self):
|
||||
url = reverse('collector_api:platform-detail', args=['vm6'])
|
||||
self.assertEquals(resolve(url).func.cls, views.PlatformViewSet)
|
111
logs_collector/collector/api/tests/test_views.py
Normal file
111
logs_collector/collector/api/tests/test_views.py
Normal file
@ -0,0 +1,111 @@
|
||||
from pathlib import Path
|
||||
from django.core.files.base import ContentFile
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.urls import reverse
|
||||
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APITestCase
|
||||
|
||||
from collector.models import Archive, Platform, Ticket
|
||||
|
||||
|
||||
def delete_test_files(ticket):
|
||||
test_file = settings.MEDIA_ROOT_FOR_SENSITIVE_FILES / Path(str(ticket))
|
||||
test_file.unlink(missing_ok=True)
|
||||
|
||||
|
||||
class TestViews(APITestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.test_user = User.objects.create(
|
||||
username='oops',
|
||||
password='hG2wS231YPWmj3'
|
||||
)
|
||||
self.test_platform = Platform.objects.create(
|
||||
name='vm6',
|
||||
pretty_name='VMmanager 6'
|
||||
)
|
||||
self.test_ticket = Ticket.objects.create(
|
||||
number=1488228,
|
||||
platform=self.test_platform,
|
||||
token='e04f4c3c-ef80-49ee-a2c3-89b737a67cdb',
|
||||
user=self.test_user
|
||||
)
|
||||
self.archive_list_url = reverse('collector_api:archive-list')
|
||||
self.test_file = ContentFile(b'...', name='test.tar.gz')
|
||||
self.test_upload_data = {'file': self.test_file}
|
||||
|
||||
def test_success_upload_file_from_anon_user(self):
|
||||
response = self.client.post(
|
||||
self.archive_list_url,
|
||||
self.test_upload_data,
|
||||
format='multipart',
|
||||
headers={'Upload-Token': self.test_ticket.token}
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||
test_archive = Archive.objects.last()
|
||||
# ? workaround delete test file:
|
||||
delete_test_files(test_archive.file)
|
||||
|
||||
def test_deny_401_upload_file_from_anon_user(self):
|
||||
response = self.client.post(
|
||||
self.archive_list_url,
|
||||
self.test_upload_data,
|
||||
format='multipart',
|
||||
# missing header: Upload-Token
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
def test_deny_403_wrong_token_upload_file_from_anon_user(self):
|
||||
response = self.client.post(
|
||||
self.archive_list_url,
|
||||
self.test_upload_data,
|
||||
format='multipart',
|
||||
headers={'Upload-Token': 'wrong-token'}
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
def test_deny_423_expired_token_upload_file_from_anon_user(self):
|
||||
# attribute overload (expired):
|
||||
self.test_ticket.attempts = 0
|
||||
self.test_ticket.save()
|
||||
response = self.client.post(
|
||||
self.archive_list_url,
|
||||
self.test_upload_data,
|
||||
format='multipart',
|
||||
headers={'Upload-Token': self.test_ticket.token}
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_423_LOCKED)
|
||||
|
||||
def test_deny_423_resolved_ticket_state_upload_file_from_anon_user(self):
|
||||
# attribute overload (ticket resolved):
|
||||
self.test_ticket.resolved = True
|
||||
self.test_ticket.save()
|
||||
response = self.client.post(
|
||||
self.archive_list_url,
|
||||
self.test_upload_data,
|
||||
format='multipart',
|
||||
headers={'Upload-Token': self.test_ticket.token}
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_423_LOCKED)
|
||||
|
||||
def test_deny_archive_list_GET_method_for_anon_user(self):
|
||||
response = self.client.get(self.archive_list_url)
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
def test_deny_archive_list_PUT_method_for_anon_user(self):
|
||||
response = self.client.put(
|
||||
self.archive_list_url,
|
||||
self.test_upload_data,
|
||||
format='multipart',
|
||||
headers={'Upload-Token': self.test_ticket.token}
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
def test_deny_archive_list_DELETE_method_for_anon_user(self):
|
||||
response = self.client.delete(
|
||||
reverse('collector_api:archive-list'),
|
||||
data={'id': 1},
|
||||
)
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
Loading…
Reference in New Issue
Block a user