diff options
-rw-r--r-- | ishtar_common/tests.py | 87 |
1 files changed, 86 insertions, 1 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index 7595d8648..b6d467c3e 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -50,16 +50,19 @@ from django.core.exceptions import ValidationError from django.core.files import File as DjangoFile from django.core.files.uploadedfile import SimpleUploadedFile from django.core.management import call_command +from django.db import transaction from django.db.models.fields import BooleanField from django.db.models.fields.related import ForeignKey +from django.db.utils import IntegrityError from django.template.defaultfilters import slugify from django.test import TestCase as BaseTestCase from django.test.client import Client from django.test.runner import DiscoverRunner +from django.utils import timezone from django.utils.translation import gettext_lazy as _ from django.urls import reverse -from ishtar_common import models, models_common, forms_common +from ishtar_common import models, models_common, models_rest, forms_common from ishtar_common import views from ishtar_common.apps import admin_site from ishtar_common.serializers import ( @@ -84,6 +87,7 @@ from archaeological_finds.serializers import FIND_MODEL_LIST from archaeological_warehouse.serializers import WAREHOUSE_MODEL_LIST from ishtar_common.serializers_utils import serialization_info from ishtar_common.utils import ( + get_current_profile, post_save_geo, update_data, move_dict_data, @@ -3589,6 +3593,87 @@ class SheetFilterTest(TestCase): self.assertIn('Bill', content) +class QgisAPITest(TestCase): + def setUp(self): + self.password = "mypassword" + self.user = User.objects.create_user( + "myuser", "myemail@test.com", self.password + ) + + def test_profile_not_set(self): + profile = get_current_profile() + profile.gis_connector = False + profile.save() + # no key generation + req = models_rest.UserRequestToken.objects.create( + user=self.user + ) + token = req.generate_token("AAAAAA") + self.assertFalse( + models_rest.UserRequestToken.objects.filter(pk=req.pk).count() + ) + self.assertFalse(token) # token is not generated + + def test_normal_key_generation(self): + profile = get_current_profile() + profile.gis_connector = True + profile.save() + + req = models_rest.UserRequestToken.objects.create( + user=self.user + ) + with transaction.atomic(): + # only one request is possible by user + try: + with self.assertRaises(IntegrityError): + models_rest.UserRequestToken.objects.create( + user=self.user + ) + except IntegrityError: + pass + self.assertTrue(req.key) + token = req.generate_token("AAAAAA") + # request is deleted + self.assertFalse( + models_rest.UserRequestToken.objects.filter(pk=req.pk).count() + ) + self.assertTrue(token) # token is generated + self.assertTrue(token.key.startswith("AAAAAA0")) + + def test_clean(self): + profile = get_current_profile() + profile.gis_connector = True + profile.save() + req = models_rest.UserRequestToken.objects.create( + user=self.user + ) + models_rest.UserRequestToken.clean_keys() + # request is still valid keep it + self.assertTrue( + models_rest.UserRequestToken.objects.filter(pk=req.pk).count() + ) + + req.created = timezone.now() - datetime.timedelta(seconds=(10*60+1)) + req.save() + models_rest.UserRequestToken.clean_keys() + # request is no more valid + self.assertFalse( + models_rest.UserRequestToken.objects.filter(pk=req.pk).count() + ) + + req = models_rest.UserRequestToken.objects.create( + user=self.user + ) + req.created = timezone.now() - datetime.timedelta(seconds=(10*60+1)) + req.save() + # cannot generate token + self.assertIsNone(req.generate_token("AAAAAA")) + # request is also deleted + self.assertFalse( + models_rest.UserRequestToken.objects.filter(pk=req.pk).count() + ) + + class GeoVectorFormTest(TestCase): fixtures = FILE_FIXTURES |