From 5fd2bc953ec5740244919f51c9f1b39bff98c4cd Mon Sep 17 00:00:00 2001 From: MOIS3Y Date: Tue, 29 Aug 2023 00:36:55 +0900 Subject: [PATCH] Create: collector tests --- logs_collector/collector/tests.py | 3 - logs_collector/collector/tests/__init__.py | 0 logs_collector/collector/tests/test_models.py | 58 ++++++++ logs_collector/collector/tests/test_urls.py | 67 +++++++++ logs_collector/collector/tests/test_views.py | 131 ++++++++++++++++++ 5 files changed, 256 insertions(+), 3 deletions(-) delete mode 100644 logs_collector/collector/tests.py create mode 100644 logs_collector/collector/tests/__init__.py create mode 100644 logs_collector/collector/tests/test_models.py create mode 100644 logs_collector/collector/tests/test_urls.py create mode 100644 logs_collector/collector/tests/test_views.py diff --git a/logs_collector/collector/tests.py b/logs_collector/collector/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/logs_collector/collector/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/logs_collector/collector/tests/__init__.py b/logs_collector/collector/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/logs_collector/collector/tests/test_models.py b/logs_collector/collector/tests/test_models.py new file mode 100644 index 0000000..0f000e8 --- /dev/null +++ b/logs_collector/collector/tests/test_models.py @@ -0,0 +1,58 @@ +from pathlib import Path +from django.test import TestCase +from django.contrib.auth.models import User +from django.core.files.base import ContentFile +from django.conf import settings + +from collector.models import Platform, Ticket, Archive + + +def delete_test_files(ticket): + test_file = settings.MEDIA_ROOT_FOR_SENSITIVE_FILES / Path(str(ticket)) + test_file.unlink(missing_ok=True) + + +class TestModels(TestCase): + + def setUp(self): + # create test user: + self.test_user = User.objects.create_user( + username='oops', + password='hG2wS231YPWmj3' + ) + # create test platform and ticket: + self.test_platform = Platform.objects.create( + name='vm6', + pretty_name='VMmanager 6' + ) + self.test_ticket = Ticket.objects.create( + number=1488228, + platform=self.test_platform, + user=self.test_user + ) + + def test_correct_platform_fields(self): + self.assertEqual(self.test_platform.name, 'vm6') + self.assertEqual(self.test_platform.pretty_name, 'VMmanager 6') + + def test_correct_ticket_fields(self): + self.assertEqual(self.test_ticket.number, 1488228) + self.assertEqual(self.test_ticket.attempts, 5) + self.assertEqual( + self.test_ticket.platform.name, + self.test_platform.name + ) + + def test_correct_archive_fields(self): + test_archive = Archive.objects.create( + file=ContentFile(b'...', name='test.tar.gz'), + ticket=self.test_ticket + ) + triple_dots_md5 = '2f43b42fd833d1e77420a8dae7419000' + self.assertEquals(test_archive.md5, triple_dots_md5) + self.assertEquals( + test_archive.file.name, + f'{self.test_ticket.number}/test.tar.gz' + ) + # ? workaround delete test file: + delete_test_files(test_archive.file) diff --git a/logs_collector/collector/tests/test_urls.py b/logs_collector/collector/tests/test_urls.py new file mode 100644 index 0000000..dd2157a --- /dev/null +++ b/logs_collector/collector/tests/test_urls.py @@ -0,0 +1,67 @@ +from django.test import TestCase +from django.urls import resolve, reverse +from django.contrib.auth.models import User + +from collector import views +from collector.models import Ticket, Platform + + +class TestUrls(TestCase): + + def setUp(self): + # create test user: + self.test_user = User.objects.create_user( + username='oops', + password='hG2wS231YPWmj3' + ) + # create test platform and ticket: + self.test_platform = Platform.objects.create( + name='dci6', + pretty_name='DCImanager 6' + ) + self.test_ticket = Ticket.objects.create( + number=1488228, + platform=self.test_platform, + user=self.test_user + ) + + # CREATE: + def test_ticket_create_url_is_resolved(self): + url = reverse('collector:create') + self.assertEquals(resolve(url).func.view_class, views.CreateTicket) + + # READ: + def test_index_page_url_is_resolved(self): + url = reverse('collector:index') + self.assertEquals(resolve(url).func.view_class, views.ListAllTickets) + + def test_list_all_tickets_url_is_resolved(self): + url = reverse('collector:tickets') + self.assertEquals(resolve(url).func.view_class, views.ListAllTickets) + + def test_list_platform_tickets_url_is_resolved(self): + url = reverse('collector:platform', args=[self.test_platform.name]) + self.assertEquals( + resolve(url).func.view_class, views.ListPlatformTickets + ) + + def test_detail_ticket_url_is_resolved(self): + url = reverse( + 'collector:ticket', + args=[self.test_platform.name, self.test_ticket.number] + ) + self.assertEquals(resolve(url).func.view_class, views.DetailTicket) + + def test_archives_download_url_is_resolved(self): + url = reverse('collector:download', args=['1488228/test.tar.gz']) + self.assertEquals( + resolve(url).func.view_class, views.ArchiveHandlerView + ) + + # UPDATE: + def test_update_ticket_url_is_resolved(self): + url = reverse( + 'collector:update', + args=[self.test_platform.name, self.test_ticket.number] + ) + self.assertEquals(resolve(url).func.view_class, views.UpdateTicket) diff --git a/logs_collector/collector/tests/test_views.py b/logs_collector/collector/tests/test_views.py new file mode 100644 index 0000000..bf7a278 --- /dev/null +++ b/logs_collector/collector/tests/test_views.py @@ -0,0 +1,131 @@ +from django.test import TestCase, Client +from django.urls import reverse +from django.contrib.auth.models import User + +from collector.models import Ticket, Platform + + +class TestViews(TestCase): + + def setUp(self): + # create test user: + self.test_user = User.objects.create_user( + username='oops', + password='hG2wS231YPWmj3' + ) + # create test client: + self.client = Client() + self.client.login(username='oops', password='hG2wS231YPWmj3') + # create test platform and ticket: + self.test_platform = Platform.objects.create( + name='vm6', + pretty_name='VMmanager 6' + ) + self.test_ticket = Ticket.objects.create( + number=1488228, + platform=self.test_platform, + user=self.test_user + ) + + # test urls: + # -- -- -- -- + + # CREATE: + self.ticket_create_url = reverse('collector:create') + + # READ: + self.all_tickets_list = reverse('collector:tickets') + self.platform_tickets_list = reverse( + 'collector:platform', + args=[self.test_platform.name] + ) + self.ticket_detail_url = reverse( + 'collector:ticket', + args=[self.test_platform.name, self.test_ticket.number] + ) + + # UPDATE: + self.ticket_update_url = reverse( + 'collector:update', + args=[self.test_platform.name, self.test_ticket.number] + ) + + # CREATE: + def test_create_ticket_POST(self): + response = self.client.post( + self.ticket_create_url, + data={ + 'number': 1111, + 'platform': self.test_platform.name, + 'attempts': 5 + } + ) + self.assertEquals(response.status_code, 302) + self.assertEquals(Ticket.objects.get(number=1111).number, 1111) + self.assertEquals(Ticket.objects.get(number=1111).platform.name, 'vm6') + self.assertEquals( + Ticket.objects.get( + number=1111).platform.pretty_name, 'VMmanager 6' + ) + self.assertEquals( + Ticket.objects.get(number=1111).user.username, 'oops' + ) + + # READ: + def test_all_ticket_list_GET(self): + response = self.client.get(self.all_tickets_list) + self.assertEquals(response.status_code, 200) + self.assertTemplateUsed(response, 'collector/tickets.html') + self.assertTemplateUsed(response, 'collector/base.html') + self.assertTemplateUsed(response, 'base.html') + self.assertTemplateUsed(response, 'includes/theme_switcher.html') + self.assertTemplateUsed(response, 'includes/navigation.html') + self.assertTemplateUsed(response, 'collector/includes/pagination.html') + self.assertTemplateUsed( + response, + 'collector/includes/ticket_info.html' + ) + self.assertTemplateUsed( + response, + 'collector/includes/modal_ticket.html' + ) + + def test_platform_tickets_list_GET(self): + response = self.client.get(self.platform_tickets_list) + self.assertEquals(response.status_code, 200) + self.assertTemplateUsed(response, 'collector/tickets.html') + + def test_ticket_detail_GET(self): + response = self.client.get(self.ticket_detail_url) + self.assertEquals(response.status_code, 200) + self.assertTemplateUsed(response, 'collector/ticket.html') + self.assertTemplateUsed( + response, 'collector/includes/ticket_info.html' + ) + self.assertTemplateUsed( + response, 'collector/includes/modal_ticket.html' + ) + + def test_ticket_create_GET(self): + response = self.client.get(self.ticket_create_url) + self.assertEquals(response.status_code, 200) + self.assertTemplateUsed(response, 'collector/ticket_create.html') + + def test_ticket_update_GET(self): + response = self.client.get(self.ticket_update_url) + self.assertEquals(response.status_code, 200) + self.assertTemplateUsed(response, 'collector/ticket_create.html') + + # UPDATE: + def test_ticket_update_UPDATE(self): + response = self.client.post( + self.ticket_update_url, + data={ + 'number': 1488229, + 'platform': self.test_platform.name, + 'attempts': 3 + } + ) + self.assertEquals(response.status_code, 302) + self.assertEquals(Ticket.objects.get(number=1488229).number, 1488229) + self.assertEquals(Ticket.objects.get(number=1488229).attempts, 3)