summaryrefslogtreecommitdiff
path: root/ishtar_common/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r--ishtar_common/tests.py87
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