mirror of
https://github.com/MOIS3Y/logs-collector.git
synced 2025-02-01 01:10:52 +01:00
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