From a2ce495a6bda23162a1eea6132877afa3c8f80ab Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Thu, 24 Sep 2020 14:30:24 +0200 Subject: [PATCH] Fully test logs app --- apps/api/tests.py | 8 ++++++++ apps/api/urls.py | 4 ++-- apps/logs/signals.py | 8 +++----- apps/logs/tests.py | 21 +++++++++++++++++++++ 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 apps/logs/tests.py diff --git a/apps/api/tests.py b/apps/api/tests.py index f37cc5e..149a76d 100644 --- a/apps/api/tests.py +++ b/apps/api/tests.py @@ -1,3 +1,6 @@ +from unittest.case import skipIf + +from django.conf import settings from django.contrib.auth.models import User from django.test import TestCase @@ -14,3 +17,8 @@ class TestAPIPages(TestCase): def test_user_page(self): response = self.client.get("/api/user/") self.assertEqual(response.status_code, 200) + + @skipIf("logs" not in settings.INSTALLED_APPS, reason="logs app is not used") + def test_logs_page(self): + response = self.client.get("/api/logs/") + self.assertEqual(response.status_code, 200) diff --git a/apps/api/urls.py b/apps/api/urls.py index aa7e438..982085a 100644 --- a/apps/api/urls.py +++ b/apps/api/urls.py @@ -10,8 +10,8 @@ router = routers.DefaultRouter() router.register('user', UserViewSet) if "logs" in settings.INSTALLED_APPS: - from logs.api.views import ChangelogViewSet - router.register('logs', ChangelogViewSet) + from logs.api.urls import register_logs_urls + register_logs_urls(router, "logs") app_name = 'api' diff --git a/apps/logs/signals.py b/apps/logs/signals.py index f95e582..cdf8479 100644 --- a/apps/logs/signals.py +++ b/apps/logs/signals.py @@ -54,8 +54,7 @@ def save_object(sender, instance, **kwargs): # On récupère alors l'utilisateur·trice connecté·e à la VM, et on récupère la note associée ip = "127.0.0.1" username = getpass.getuser() - if User.objects.filter(username=username).exists(): - user = User.objects.get(username=username) + user = User.objects.get(username=username) if User.objects.filter(username=username).exists() else None # On n'enregistre pas les connexions # noinspection PyProtectedMember @@ -113,8 +112,7 @@ def delete_object(sender, instance, **kwargs): # On récupère alors l'utilisateur·trice connecté·e à la VM, et on récupère la note associée ip = "127.0.0.1" username = getpass.getuser() - if User.objects.filter(username=username).exists(): - user = User.objects.get(username=username) + user = User.objects.get(username=username) if User.objects.filter(username=username).exists() else None # On crée notre propre sérialiseur JSON pour pouvoir sauvegarder les modèles class CustomSerializer(ModelSerializer): @@ -131,4 +129,4 @@ def delete_object(sender, instance, **kwargs): previous=instance_json, data="", action="delete" - ).save() + ) diff --git a/apps/logs/tests.py b/apps/logs/tests.py new file mode 100644 index 0000000..9c6da02 --- /dev/null +++ b/apps/logs/tests.py @@ -0,0 +1,21 @@ +from django.contrib.auth.models import User +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ValidationError +from django.test import TestCase + +from .models import Changelog + + +class TestChangelog(TestCase): + def test_logs(self): + user = User.objects.create(email="admin@example.com") + self.assertTrue(Changelog.objects.filter(action="create", instance_pk=user.pk, + model=ContentType.objects.get_for_model(User)).exists()) + old_user_pk = user.pk + user.delete() + self.assertTrue(Changelog.objects.filter(action="delete", instance_pk=old_user_pk, + model=ContentType.objects.get_for_model(User)).exists()) + + changelog = Changelog.objects.first() + self.assertRaises(ValidationError, changelog.delete) + str(Changelog.objects.all())